跳到主要内容

实时计算Storm+Flink

实时计算

一种考虑了无线数据集的数据处理引擎。又称实时流式计算、流式计算,都是差不多的概念;

三个特征:

  1. 无限数据,是指一种不断增长,基本上无限的数据集,也可以称作流数据,与之对应的是有限的数据集;
  2. 无界数据处理,一种持续的数据处理模式,能够通过处理引擎重复的去处理上面的无限数据,是能够突破有限数据处理引擎的瓶颈的。
  3. 低延迟,延迟是多少并没有明确的定义。但我们都知道数据的价值将随着时间的流逝降低,时效性将是需要持续解决的问题。

实时计算其实是一个相对的概念,对于批处理、近实时、微批,不多是时间的问题; 实时框架有很多,例如Storm、Fink、Kafka Streaming、Spark Streaming; 同时支持流处理和批处理的计算引擎,有两种选择:一个是Apache Spark,一个是Apache Flink。从技术,生态等各方面的综合考虑,首先,Spark的技术理念是基于批来模拟流的计算。而Flink则完全相反,它采用的是基于流计算来模拟批计算。从技术发展方向看,用批来模拟流有一定的技术局限性,并且这个局限性可能很难突破。而Flink基于流来模拟批,在技术上有更好的扩展性。

主要应用

  1. 日志分析,比如对网站的用户访问日志进行实时的分析,计算访问量,用户画像,留存率等等,实时的进行数据分析,帮助企业进行决策。
  2. 物联网,比如对电力系统进行实时的数据检测,进行报警,实时的显示,或者根据历史数据进行实时的分析,预测。
  3. 车联网,如今的车联网已经不限于物联网,还包括对用户,交通等等进行分析的一个庞大的系统,改善用户出行。
  4. 金融分控,通过对交易等金融行为实时分析,预测出未知风险。

Storm

Twitter开源的Storm框架风靡一时,在Hadoop诞生初期,Storm弥补了Hadoop不能做实时数据处理缺陷,被广泛使用,现在的很多公司依然在使用,Storm延迟是毫秒级的,但是它很难实现高吞吐,不能保证消息恰好一次的传递。我们可以通过ack机制保证,但开销极大,现在很多使用Storm的公司都出现了消息积压的问题,这其实是很难避免的。

  1. Flink 从 0 到 1 学习

参考

  1. Streaming-大数据的未来
  2. 阿里巴巴为什么选择Apache Flink?