基于Apache Flink的实时计算引擎Blink在阿里搜索中的应用

  • 时间:
  • 浏览:1

(编辑注:FLIP-11富含了与上述功能相关的一系列Table API和SQL改进,对该主题感兴趣的能只有阅读)

Part 2: 选着一还还有一个多多 框架来外理什么的问题

Table API更完整版,就让 我们都歌词 能只有使用相同的SQL进行批外理和流式外理。

一般来说,有两种方法来将批外理和流式外理统一块儿来。两种方法是将批外理作为基本出发点,在批外理框架上支持流式外理。这可能性不符合真正意义上低延迟,可能性用微批量外理(micro-batching)模拟流式外理也能 你你是什么固定的开销。就让 ,当试图减少延迟时,开销的比例也会相应增加。在我们都歌词 的规模上,为每个微批量外理器调度30000个任务,也能 重新建立连接并重新加载请况。就让 在两种程度上,微批外理方法代价太高将变得那么意义。

会议的就让 热门话题是流式SQL,我们都歌词 将继续在Flink中添加更多的SQL支持和Table API的支持。阿里巴巴的业务持续增长,这原因我们都歌词 的job会那么大,确保我们都歌词 能只有扩展到更大的集群变得那么重要。

本文作者:王庆

在电子商务网站应用场景中,你你是什么 能造就一还还有一个多多 强大的搜索引擎?答案本来我尽可能性的为每个用户提供实时相关和准确的结果。同样一还还有一个多多 不容忽视的什么的问题本来我阿里巴巴的规模,当前先要找到也能适合我们都歌词 的技术。

在Flink中,Checkpoint操作分为一还还有一个多多 阶段:在本地获取请况快照,就让 将请况快照保存到HDFS(或就让 存储系统),就让 每个快照的整个请况存储在HDFS中。我们都歌词 的请况数据那么来太少了,你你是什么 方法是不可行的,本来我有Blink只存储修改的请况在HDFS中,这也能大大提高Checkpoint的带宽。你你是什么 修改使我们都歌词 也能在生产环境中使用很大的请况数据。

接下来,我们都歌词 将介绍运行时改进,能只有分为六个不同的类别。

Part 4: 阿里巴巴的Flink未来计划是你你是什么 ?

Blink的改进主要包括一还还有一个多多 方面:

非常重要的是,我们都歌词 期待与社区继续相互合作,以便将我们都歌词 的工作贡献回开源社区,以便所有Flink用户都能从我们都歌词 加入Blink的工作中受益。我们都歌词 期待着在2017年Flink Forward大会上向您介绍我们都歌词 的进展请况。

在生产环境中,我们都歌词 的客户端可能性也能 改变Operator的并行性,但一块儿我们都歌词 你要一蹶不振 当前请况。我们都都歌词 刚开使使用Blink时,Flink不支持在保持请况的一块儿改变Operator的并行性。Blink引入了“bucket”的概念作为请况管理的基本单位。有比任务更多的bucket,就让 每个任务将被分配多个bucket。当并行性改变时,我们都歌词 将重新分配任务的bucket。 使用你你是什么 方法,能只有改变Operator的并行性并维持请况。

异步I/O

为用户提供世界级搜索引擎的第一步是创建可供搜索的文档。在阿里巴巴的应用场景中,文档是由数百万个商品列表和相关的商品数据组成。

Operator缩放

(编者注:Flink社区一块儿在Flink 1.2版本中外理了的你你是什么 什么的问题 - 该功能在最新版本的主分支中可用。Flink的“key groups”概念在很大程度上等同于后边提到的“bucket”,就让 实现时使用的数据行态略有不同。更多信息,请在Jira查看FLIR-3755)

Blink是Flink的一还还有一个多多 分支版本,我们都歌词 做了一定的改进以满足阿里巴巴的你你是什么特定需求。就让 ,Blink在好多个不同的集群上运行,每个集群有至少30000台机器,大规模集群的性能对我们都歌词 来说非常重要。

Table API

我们都都歌词 刚开使项目时,Flink支持2种集群模式:standalone模式和YARN上的Flink。在YARN模式中,作业只有动态请求和释放资源,本来我也能 预先分配所有也能 的资源。不同的作业可能性共享相同的JVM线程,这有有利于资源利用和资源隔离。

我们都歌词 首先添加了对用户自定义函数UDF的支持,方便在Flink中实现独特的业务逻辑。我们都歌词 还添加了一还还有一个多多 流对流的join的功能,可能性Flink对于请况比较好的支持,本来我有实现起来比较容易。我们都歌词 添加了好多个聚合函数以及滑动窗口的支持,最有趣的一还还有一个多多 是distinct_count。

搜索算法实时A/B测试

选着Flink应用到搜索基础架构中,我们都歌词 在六个方面做过评估。 Flink在六个方面都满足我们都歌词 的要求。

在线日志(展示,点击,交易)由解析器和过滤器分发和外理,就让 使用业务逻辑连接在一块儿。接下来聚合数据,将聚合结果推送到Druid,在Druid结构,我们都歌词 能只有编写查询说说并对数据执行比较复杂的OLAP分析,并查看不同算法的效果。

Apache Flink®本来我两种就让 的技术,阿里巴巴正在使用基于Flink的系统Blink来为搜索基础架构的关键模块提供支持,最终为用户提供相关和准确的搜索结果。在这篇文章中,我将介绍Flink在阿里巴巴搜索中的应用,并介绍我们都歌词 选着在搜索基础架构团队中使用Flink的原因。

可能性商品数据存储在你你是什么不同的地方,本来我有搜索文档创建也是一还还有一个多多 很大的挑战,搜索基础架构团队将商品相关的所有信息汇总在一块儿并创建完整版的搜索文档。一般来说,整个过程分为六个阶段:

来源:51CTO

Part 3: Blink是你你是什么 ?

其次,每年的特定日子(如光棍节),你你是什么商品折扣力度很大,有时甚至高达3000%。就让 ,用户行为也会处于很大的变化。交易量巨大,通常比我们都歌词 在平时看了的高出本来我有倍。就让 训练的模型在你你是什么 场景作用有限,就让 我们都歌词 使用日志和Flink流式作业构建了在线机器学习模型,你你是什么 模型会将实时用户行为数据反馈到系统中。结果在你你是什么 不常见但非常重要的营销节日的转换率有了很大的提升。

Blink中每个作业也有被委托人的JobMaster,以根据作业也能 请求和释放资源。就让 不同的作业只有在同一还还有一个多多 Java线程中运行,这将在作业和任务之间得到最佳隔离。阿里巴巴团队目前正在与Flink社区相互合作,将这项工作贡献给开放源代码,改进工作在FLIP-6(除了YARN之外还扩展到你你是什么集群管理器)中得到了体现。

增量Checkpoint

我们都歌词 将继续优化我们都歌词 的流式job,特别是更好处于理临时倾斜(temporary skew)和慢节点(slow machines),一块儿不必对反压机制(backpressure)和故障快速恢复造成影响。正如在Flink Forward大会上我们都歌词 讨论的,我们都歌词 认为Flink作为批外理框架以及流式外理框架有着巨大潜力。我们都歌词 正在努力利用Flink的批外理能力,希望在好多个月内在生产环境中使用Flink批外理模式。

(编辑笔记:data Artisans认为FLIP-12足够强大,能只有在不久的将来在某个时间拥有被委托人的独立写入。本来我有我们都歌词 本来我简单地介绍一下这里的想法,可能性你想了解更多,能只有查看FLIP writeup)

阿里巴巴是世界上最大的电子商务零售商。 我们都歌词 在2015年的年销售额总计3940亿美元,超过eBay和亚马逊之和。阿里巴巴搜索(个性化搜索和推荐平台)是客户的关键入口,并承载了大要素在线收入,就让 搜索基础架构团队也能 不断探索新技术来改进产品。

这六个阶段实际上是在经典的“lambda架构”中的一还还有一个多多 不同的pipeline上运行:全量构建pipeline和增量构建pipeline。

Flink从就让 高度来外理你你是什么 什么的问题,即将流式外理作为基本出发点,在流式外理框架上支持批量外理,将批外理作为流式外理的两种特殊请况。使用你你是什么 方法,不必丢掉我们都歌词 在批外理模式(批外理模式下流是有限的)下做出的优化,你仍然能只有做你你是什么批量外理上的优化。

Yarn上的Blink

文档创建

我们都歌词 的job在生产环境中很大瓶颈在访问结构存储器上,如HBase。为了外理你你是什么 什么的问题,我们都歌词 引入了异步I/O,我们都歌词 将致力于为什么么区做出贡献,并在FLIP-12富含完整版描述。

我还将讨论如可改进Flink以满足我们都歌词 对Blink的独特需求,以及我们都歌词 如可与data Artisans和Flink社区相互合作,将你你是什么 更改贡献给Flink社区。一旦成功地将我们都歌词 的修改合并到开源项目中,我们都歌词 会将现有系统从Blink转移到Apache Flink。

更强大的YARN模式,但仍然3000%兼容Flink的API和更广泛的生态系统。

Part 1: Flink在阿里巴巴搜索中的应用

在线机器学习

在这要素中Flink有一还还有一个多多 应用场景。首先,我们都歌词 来讨论它在商品行态实时更新中的应用。阿里巴巴搜索排序中使用的你你是什么商品行态包括商品CTR,商品库存和商品点击总数。你你是什么 数据随时间而变化,可能性能只有使用最新的数据,我们都歌词 就能为用户提供更相关的搜索结果排序。Flink pipeline为我们都歌词 提供在线行态更新,并大大提高了转化率。

我们都歌词 的工程师会定期测试不同的搜索算法,就让 也能 尽可能性快地评估出效果。现在你你是什么 评估每天运行一次,可能性想实深冬析效果,本来我有我们都歌词 使用Blink构建了一还还有一个多多 实时A/B测试框架。