基于Kafka的实时计算引擎如何选择?


老码农来回答这个问题 。
Kafka

基于Kafka的实时计算引擎如何选择?

文章插图
kafka 是linkedin开源的一款开源的分布式mq消息中间件 。现在已经捐献给apache软件基金会(ASF) 。具有吞吐量大 。低延时 。容错性高 。扩展性好的特点 。在大型数据处理中常扮演数据管道的角色 。也就是数据在中转 。传输中起到一个管道的作用 。类似于水管但是还可以起到缓冲作用 。数据流过大也能有效的对数据进行传输 。我们项目的日志管道就是Kafka 。
实时计算
聊完kafka再聊一下什么是实时计算 。实时计算是基于海量数据 。进行秒级响应 。实时入库 。实时分析处理数据的一种大数据计算方式 。要求时效性高 。常用于网站流量分析、股市分析、天气气候分析等需要实时处理的业务场景 。打个比方 。就是有PB级别数据不断传递过来 。需要立马处理入库分析 。与此对应的是离线计算 。这些通常是不需要立即处理 。我先存起来 。慢慢进行分析 。或者用到的时候我再分析 。说到实时计算 。就不能不提流式计算 。其实两者没有必然关系 。实时强调实时性 。流式是一种模型 。从一个方向流向其他方向 。而且某个点的流处理一次就没了 。而且设计是无界的 。源源不断 。把数据想象成水管里的水就会很好理解这个概念 。打开水龙头源源不断流出来 。从技术选型来说目前 有Storm、 apache spark 和apache flink。
基于Kafka的实时计算引擎如何选择?

文章插图
storm 是一个专注实时处理的流式数据处理引擎 。推特开源 。但是因为对数据是行级别处理以及容错 。所以效率不高 。适合对实时性要求高 。数据集不算太大的情况下使用 。
spark 是一个高效率、易用性强、通用性强 。兼容性好的数据处理引擎 。比Hadoop 要快很多 。Spark支持Java、Python和Scala的API 。还支持超过几十种高级算法 。用户可以快速构建不同的应用。目前业界用的也最多 。方案成熟 。资料也非常全 。基本一线大厂都有spark海量数据处理平台 。但是spark 默认走的是批处理 。数据是一批一批处理离线计算的 。但是通过 spark stream流式处理的扩展 。使得spark也能进行实时的数据计算 。但是底层还是批处理 。通过固定的offset偏移量进行实时流式批处理 。
flink是大数据处理的一颗新星 。核心是一个流式的数据流执行引擎 。其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能 。基于流执行引擎 。Flink提供了诸多更高抽象层的API以便用户编写分布式任务 。实现FaaS(函数即服务)是真正意义上的实时计算引擎 。目前也是最先进的 。但是才火起来 。除了一线大厂 。小厂是目前是很难玩转的 。而且目前资料比较少 。还可能有一些坑要踩 。但是这些遮挡不了flink的光芒 。目前社区十分活跃 。而且阿里有魔改版本Blink 。常远来看更有前途 。
总结
基于Kafka的实时计算引擎如何选择?

文章插图
其他观点:
Kafka :
功能完善的分布式流式处理平台 。用于发布和订阅、存储及实时地处理大规模流数据 。是由Apache软件基金会开发的一个开源流处理平台 。由Scala和Java编写 。
目前业界有开源不少实时计算引擎 。以Apache基金会的两款开源实时计算引擎最受欢迎:Flink、Spark 。
Flink:
一款分布式的计算引擎 。它可以用来做批处理 。即处理静态的数据集、历史的数据集;也可以用来做流处理 。即实时地处理一些实时数据流 。实时地产生数据的结果;也可以用来做一些基于事件的应用 。
Spark:
Spark免费提供Spark Streaming 。它使用微批处理进行流式传输 。Spark流式计算引擎会定时检查流数据 。在连续流处理中 。Spark不会启动定时任务 。而是启动一组长时间运行的任务 。这些任务可以连续读取、处理、写入数据 。Spark Streaming的优势在于:
能运行在1000+的结点上 。并达到秒级延迟 。
使用基于内存的Spark作为执行引擎 。具有高效和容错的特性 。
能集成Spark的批处理和交互查询 。
为实现复杂的算法提供和批处理类似的简单接口 。
加米谷大数据培训 。6月大数据开发0基础班、提高班 。预报名中
相关:Spark Streaming And Kafka:可靠实时计算
【基于Kafka的实时计算引擎如何选择?】https://www.toutiao.com/i6513864038332498435/

    推荐阅读