加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

对比Flink与Storm性能,分布式实时计算框架该这样选

发布时间:2019-06-27 20:33:26 所属栏目:建站 来源:梦瑶
导读:副标题#e# 一、背景 Apache Flink 和 Apache Storm 是当前业界广泛使用的两个分布式实时计算框架。其中 Apache Storm(以下简称Storm)在美团点评实时计算业务中已有较为成熟的运用,有管理平台、常用 API 和相应的文档,大量实时作业基于 Storm 构建。 Apach

输出数据为“msgId, eventTime, inTime, outTime”。单条输出数据约 50 B。

对比Flink与Storm性能,分布式实时计算框架该这样选

Identity 流程图

2)Sleep

Sleep 用例主要模拟用户作业耗时较长的场景,反映复杂用户逻辑对框架差异的削弱,比较两个框架的调度性能。

输入数据和输出数据均与 Identity 相同。

读入数据后,等待一定时长(1 ms)后在字符串末尾追加时间戳后输出

对比Flink与Storm性能,分布式实时计算框架该这样选

Sleep 流程图

3)Windowed Word Count

  • Windowed Word Count 用例主要模拟窗口统计场景,反映两个框架在进行窗口统计时性能的差异。
  • 此外,还用其进行了精确计算场景的测试,反映 Flink 恰好一次投递的性能。
  • 输入为 JSON 格式,包含 msgId、eventTime 和一个由若干单词组成的句子,单词之间由空格分隔。单条输入数据约 150 B。
  • 读入数据后解析 JSON,然后将句子分割为相应单词,带 eventTime 和 inTime 时间戳发给 CountWindow 进行单词计数,同时记录一个窗口中最大最小的 eventTime 和 inTime,最后带 outTime 时间戳输出到 Kafka 相应的 Topic。
  • Spout/Source 及 OutputBolt/Output/Sink 并发度恒为 1,增大并发度时仅增大 JSONParser、CountWindow 的并发度。
  • 由于 Storm 对 window 的支持较弱,CountWindow 使用一个 HashMap 手动实现,Flink 用了原生的 CountWindow 和相应的 Reduce 函数。
对比Flink与Storm性能,分布式实时计算框架该这样选

Windowed Word Count 流程图

五、测试结果

① Identity 单线程吞吐量

对比Flink与Storm性能,分布式实时计算框架该这样选

Identity 单线程吞吐量

上图中蓝色柱形为单线程 Storm 作业的吞吐,橙色柱形为单线程 Flink 作业的吞吐。

Identity 逻辑下,Storm 单线程吞吐为 8.7万条/秒,Flink 单线程吞吐可达35万条/秒。

当 Kafka Data 的 Partition 数为 1 时,Flink 的吞吐约为 Storm 的 3.2 倍;当其 Partition 数为 8 时,Flink 的吞吐约为 Storm 的 4.6 倍。

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

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!