应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

发布时间:2020-08-05 15:13:21 作者:Ververica
来源:网络 阅读:671

本文作者:孙梦瑶 | 美团点评

本文主要内容:通过将分布式实时计算框架 Flink 与 Storm 进行性能对比,为美团点评实时计算平台和业务提供数据参考。

一. 背景

Apache Flink 和 Apache Storm 是当前业界广泛使用的两个分布式实时计算框架。其中 Apache Storm(以下简称“Storm”)在美团点评实时计算业务中已有较为成熟的运用(可参考 Storm 的可靠性保证测试),有管理平台、常用 API 和相应的文档,大量实时作业基于 Storm 构建。而 Apache Flink(以下简称“Flink”)在近期倍受关注,具有高吞吐、低延迟、高可靠和精确计算等特性,对事件窗口有很好的支持,目前在美团点评实时计算业务中也已有一定应用。

为深入熟悉了解 Flink框架,验证其稳定性和可靠性,评估其实时处理性能,识别该体系中的缺点,找到其性能瓶颈并进行优化,给用户提供最适合的实时计算引擎,我们以实践经验丰富的 Storm 框架作为对照,进行了一系列实验测试 Flink 框架的性能,计算 Flink 作为确保“至少一次”和“恰好一次”语义的实时计算框架时对资源的消耗,为实时计算平台资源规划、框架选择、性能调优等决策及 Flink 平台的建设提出建议并提供数据支持,为后续的 SLA 建设提供一定参考。

Flink 与 Storm 两个框架对比:

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践cdn.xitu.io/2019/5/30/16b08bf39238aa20?w=640&h=485&f=png&s=190685">

二. 测试目标

评估不同场景、不同数据压力下 Flink 和 Storm 两个实时计算框架目前的性能表现,获取其详细性能数据并找到处理性能的极限;了解不同配置对 Flink 性能影响的程度,分析各种配置的适用场景,从而得出调优建议。

2.1 测试场景

“输入-输出”简单处理场景

通过对“输入-输出”这样简单处理逻辑场景的测试,尽可能减少其它因素的干扰,反映两个框架本身的性能。

同时测算框架处理能力的极限,处理更加复杂的逻辑的性能不会比纯粹“输入-输出”更高。

用户作业耗时较长的场景

如果用户的处理逻辑较为复杂,或是访问了数据库等外部组件,其执行时间会增大,作业的性能会受到影响。因此,我们测试了用户作业耗时较长的场景下两个框架的调度性能。

窗口统计场景

实时计算中常有对时间窗口或计数窗口进行统计的需求,例如一天中每五分钟的访问量,每 100 个订单中有多少个使用了优惠等。Flink 在窗口支持上的功能比 Storm 更加强大,API 更加完善,但是我们同时也想了解在窗口统计这个常用场景下两个框架的性能。

精确计算场景(即消息投递语义为“恰好一次”)

Storm 仅能保证“至多一次” (At Most Once) 和“至少一次” (At Least Once) 的消息投递语义,即可能存在重复发送的情况。有很多业务场景对数据的精确性要求较高,希望消息投递不重不漏。Flink 支持“恰好一次”(Exactly Once) 的语义,但是在限定的资源条件下,更加严格的精确度要求可能带来更高的代价,从而影响性能。因此,我们测试了在不同消息投递语义下两个框架的性能,希望为精确计算场景的资源规划提供数据参考。

2.2 性能指标

吞吐量(Throughput)
延迟(Latency)

三. 测试环境

为 Storm 和 Flink 分别搭建由 1 台主节点和 2 台从节点构成的 Standalone 集群进行本次测试。其中为了观察 Flink 在实际生产环境中的性能,对于部分测内容也进行了 on Yarn 环境的测试。

3.1 集群参数

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

3.2 框架参数

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

四. 测试方法

4.1 测试流程

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

数据生产

DataGenerator 按特定速率生成数据,带上自增的 id 和 eventTime 时间戳写入 Kafka 的一个 Topic(TopicData)。

数据处理

Storm Task 和 Flink Task (每个测试用例不同)从 Kafka Topic Data 相同的 Offset 开始消费,并将结果及相应 inTime、outTime 时间戳分别写入两个 Topic(Topic Storm 和 Topic Flink)中。

指标统计

MetricsCollector 按 outTime 的时间窗口从这两个 Topic 中统计测试指标,每五分钟将相应的指标写入 MySQL 表中。

MetricsCollector 按 outTime 取五分钟的滚动时间窗口,计算五分钟的平均吞吐(输出数据的条数)、五分钟内的延迟(outTime – eventTime 或 outTime – inTime)的中位数及 99 线等指标,写入 MySQL 相应的数据表中。最后对 MySQL 表中的吞吐计算均值,延迟中位数及延迟 99 线选取中位数,绘制图像并分析。

4.2 默认参数

4.3 测试用例

Identity

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

Sleep

Sleep 用例主要模拟用户作业耗时较长的场景,反映复杂用户逻辑对框架差异的削弱 ,比较两个框架的调度性能 。
输入数据和输出数据均与 Identity 相同。
读入数据后,等待一定时长(1 ms)后在字符串末尾追加时间戳后输出。

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

WindowedWord Count

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

五. 测试结果

5.1 Identity 单线程吞吐量

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

由此可以看出,Flink 吞吐约为 Storm 的 3-5 倍。

5.2 Identity 单线程作业延迟

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

5.3 Sleep 吞吐量

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

5.4 Sleep 单线程作业延迟(中位数)

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

5.5 Windowed Word Count 单线程吞吐量

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

5.6 Windowed Word Count Flink At Least Once 与 Exactly Once 吞吐量对比

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

5.7 Windowed Word Count Storm At Least Once 与 At Most Once 吞吐量对比

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

5.8 Windowed Word Count 单线程作业延迟

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

5.9 Windowed Word Count Flink At Least Once 与 Exactly Once 延迟对比

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

5.10 Windowed Word Count Storm At Least Once 与 At Most Once 延迟对比

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

5.11 Windowed Word Count Flink 不同 StateBackends 吞吐量对比

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

5.12 Windowed Word Count Flink 不同 StateBackends 延迟对比

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

六. 结论及建议

6.1 框架本身性能

综上可得,Flink 框架本身性能优于 Storm。

6.2 复杂用户逻辑对框架差异的削弱

6.3 不同消息投递语义的差异

6.4 Flink 状态存储后端选择

应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践

6.5 推荐使用 Flink 的场景

综合上述测试结果,以下实时计算场景建议考虑使用 Flink 框架进行计算:

七. 展望

本次测试中尚有一些内容没有进行更加深入的测试,有待后续测试补充。例如:

八. 参考内容

1.分布式流处理框架——功能对比和性能评估.

2.intel-hadoop/HiBench: HiBenchis a big data benchmark suite.

3.Yahoo的流计算引擎基准测试.

4.Extendingthe Yahoo! Streaming Benchmark.

推荐阅读:
  1. 区块链技术在金融领域应用发展情况
  2. 纯前端表格技术应用研讨会——华为供应链专场

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

flink 大数据 实时计算

上一篇:百词斩用户体验

下一篇:Python2爬虫使用Cookie的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》