您现在的位置是: 首页 > 大数据 > 正文

大数据

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

zzinfor 2022-03-04 16:18:54 大数据
  老码农来回答这个问题。Kafkakafka是linkedin开源的一款开源的分布式mq消息中间件,现在已经捐献给apache软件基金会(ASF)。具有吞吐量大,低延时,容错性高,扩展性好的特点。在大型数据处理中常扮演数据管道的角色。也就是数据在中转,传输中起到一个管道的作用,类似于水管但是还可以  

老码农来回答这个问题。

Kafka

kafka 是linkedin开源的一款开源的分布式mq消息中间件,现在已经捐献给apache软件基金会(ASF)。具有吞吐量大,低延时,容错性高,扩展性好的特点。在大型数据处理中常扮演数据管道的角色。也就是数据在中转,传输中起到一个管道的作用,类似于水管但是还可以起到缓冲作用。数据流过大也能有效的对数据进行传输。我们项目的日志管道就是Kafka。

实时计算

聊完kafka再聊一下什么是实时计算。实时计算是基于海量数据,进行秒级响应,实时入库,实时分析处理数据的一种大数据计算方式。要求时效性高,常用于网站流量分析、股市分析、天气气候分析等需要实时处理的业务场景。打个比方,就是有PB级别数据不断传递过来,需要立马处理入库分析。与此对应的是离线计算。这些通常是不需要立即处理,我先存起来,慢慢进行分析,或者用到的时候我再分析。说到实时计算,就不能不提流式计算,其实两者没有必然关系。实时强调实时性,流式是一种模型,从一个方向流向其他方向,而且某个点的流处理一次就没了,而且设计是无界的,源源不断。把数据想象成水管里的水就会很好理解这个概念,打开水龙头源源不断流出来。从技术选型来说目前 有Storm、 apache spark 和apache flink 。

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

发表评论