Storm vs,2024年最新成功定级腾讯T3-2

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文

高级功能(Event Time Processing, Watermarks, Windowing)

主要是应对复杂流处理的场景。

3.5 成熟

从企业技术应用的角度来看,这一点是非常重要的。记得起大公司的大规模验证和测试,框架的稳定性、可靠性也有一定的保障。成熟的框架,更有可能获得良好的社区支持和stackoverflow的帮助。

四、流式处理的两种类型

4.1 Native流

指每个传入的记录一到达就会被处理,而不必等待其他记录。

在这里插入图片描述

4.2 小批量处理

也称为快速批处理。这意味着每隔几秒就会将传入记录一起批处理,然后在一个小批量中处理,延迟几秒钟。

在这里插入图片描述

4.3 两种类型都有一些优点和缺点

Native流:每个记录在到达时都会被处理,从而允许框架实现最小的延迟。但这也意味着很难在不影响每个记录的吞吐量的情况下实现容错,我们需要在处理后跟踪和检查点。此外,状态管理很容易,因为有长时间运行的过程可以轻松地维持所需的状态。

微批处理:与Native流恰恰相反,容错是与生俱来的,因为它本质上是一个批处理,吞吐量也很高,因为处理和检查点将一次性完成一组记录。但它不像Native流一样,它有一定的延迟成本。此外,有效的状态管理也将是一项难以维持的挑战。

五、现有流处理框架介绍

5.1 Storm

Storm是最老的流媒体框架,技术成熟可靠。社区也很活跃。ali还开发了jstorm,对storm进行了拓展完善。后续jstorm也融入到storm中,对于storm也是一个质的提升。比较适合于基于事件的一些简单用例场景。

在这里插入图片描述

优点:

极低的延迟,真正的流媒体,成熟和高吞吐量

非常适合非复杂的流媒体用例

缺点:

不支持状态管理

没有事件时间处理,聚合,窗口,会话,水印等高级功能

至少保证一次

5.2 Spark Streaming

在这里插入图片描述
Spark已经成为批处理中hadoop的真正继承者,也是第一个完全支持Lambda架构的框架。受到各大企业欢迎,并被广泛采用。2.0版本之后,Spark除了Structured Streaming之外,还配备了许多优秀的功能,如定制内存管理(与flink类似)tungsten、watermarks, event time processing支持等。结构化流也更抽象,并且可以选择在微批处理之间切换2.3.0版本中的连续流模式。连续流模式有望像Storm和Flink那样提供低延迟,但它仍处于初始阶段,需要在操作中进行测试。

优点:

支持Lambda架构

高吞吐量,适用于不需要低延迟的应用场景

由于微批次性质,默认情况下容错

简单易用的高级API

社区活跃,且积极的改进

数据处理有且只有一次

缺点:

不是真正的流媒体,不适合低延迟要求

要调整的参数太多。很难做到最好

在许多高级功能中落后于Flink

5.3 Flink

在这里插入图片描述
和Spark一样,Flink也支持lambda架构。但是这种方法和实现与Spark的方法和实现完全不同。虽然Spark实际上是Spark-Streaming作为微批处理和Spark Batch特殊情况的批处理,但Flink本质上是一个真正的流引擎,将批处理作为带有限数据的流的特殊情况。虽然两个框架中的API从开发人员的角度来看都很相似,但它们在实现中没有任何相似之处。在Flink中,map,filter,reduce等各个函数实现为长时间运行的运算符(类似于Storm中的Bolt)。

Flink看起来像是Storm的真正继承者,就像Spark成功批量使用hadoop一样。

优点:

开源流媒体领域的创新领导者

第一个真正的流媒体框架,具有Event Time Processing, Watermarksd等所有高级功能

低延迟,高吞吐量,可根据要求进行配置

自动调整,需要调整的参数较少,调优方便

数据处理有且只有一次

得到像阿里巴巴等大公司的广泛接受

缺点:

社区没有Spark那么大,但是正在快速增长

目前还没有采用Flink Batch,仅适用于流媒体。

5.4 Kafka Steams

在这里插入图片描述
与其他流式框架不同,Kafka Streams是一个轻量级的流式处理类库。它对于来自Kafka的流数据,进行转换然后发送回kafka非常有用。我们可以将它看作类似于Java Executor服务线程池的库,却内置了对Kafka的支持。它可以与任何应用程序很好地集成,并且可以开箱即用。

由于其重量轻,可用于微服务类型的架构。在与Flink的性能方面没有匹配,但同时不需要单独的集群运行,非常方便,非常快速,易于部署和开始工作。根据相关应用程序的性质,无论是分布式节点还是单个节点,Kafka Streams都能支持。

优点:

非常轻量级的库,适用于微服务,物联网应用

完全一次(kafka 0.11起)

具备kafka所有的优良特性

支持Stream连接,内部使用rocksDb来维护状态

缺点:

与Kafka紧密相连,不能在没有Kafka的情况下使用

技术较新,尚未得到广泛使用

不适用于较为复杂,繁重的任务

5.5 Kafka Streams vs. Spark Streaming

真 . 实时

我在Hadoop之后接触的第一个大数据框架就是Spark,所以自然而然曾经对Spark Streaming有着特别的偏爱。但Spark Streaming作为micro-batch结构,天生不是纯正的“真”实时处理。有着秒级别的延时,并且每次处理单个micro-batch中的所有数据记录。相对而言,Flink和Kafka Streams 则是真正意义上的实时处理,每次处理单个数据记录。

Kafka系统内的轻度处理

同时,当我在工作中频繁使用Kafka作为系统中的数据总线后,一些较为轻度的数据处理,比如 filter,aggregation, join 等,如果使用Spark Streaming,需要将Kafka topic中的数据导入Spark Streaming,结果处理后再重新导入Kafka中相应的topic,显得十分繁琐。

而使用Kafka Streams可以便捷地从源topic取得数据,处理并放入另一个topic,所有工作可以在Kafka内部完成。

不再需要单独集群

Kafka Streams 直接集成于Kafka,因此不需要单独的集群来支持其运行,这大大减少了额外的维护成本。

六、流式框架比较

在这里插入图片描述
我们只能将技术与同类产品进行比较。虽然Storm,Kafka Streams和Samza对于更简单的用例看起来很棒,但真正的竞争显然是具有高级功能的重量级框架之间的比较:Spark vs Flink

当我们在对两个框架做比较时,通常会用数据说话。而基准测试是比较两个框架的常用方法。Spark在2.0版本之前流式处理做的并不是很好,2.0之后提出了结构化流媒体功能,也在不断的提升。

既然是用数据说话,那么就需要得到相同场景下两者的测试数据,而获取测试数据,没有比做一个poc更好的方法了。

截至今天,看起来Flink正在引领Streaming Analytics领域,首先拥有大部分流处理所需的功能,如完全一次,吞吐量,延迟,状态管理,容错,高级功能等。Flink仍在不断创新,如轻量级快照和堆外定制内存管理。

直到某些时候,Flink的一个重要问题是成熟度和采用水平,但现在像优步,阿里巴巴,CapitalOne这样的大公司正在大规模使用Flink流媒体来证明Flink Streaming的潜力。 最近,优步开放了他们最新的流媒体分析框架,名为AthenaX,它建立在Flink引擎之上。

七、如何选择最好的/最适合的流失处理框架?

作为开发人员,我们不能偏向于任何框架。我们应该记住,没有一个处理框架可以成为所有应用场景的灵丹妙药。每个框架都会有一些优势和一些限制。下面将分享一些可能有助于做出决定的关键点。

7.1 使用场景

如果用例很简单,而学习和实现起来很复杂,就不需要使用最新的和最好的框架。很大程度上取决于我们愿意为我们想要的回报付出多少投资。

7.2 未来的考虑

在系统调研阶段,我们很多时候都会考虑未来可能的用例都有哪些?未来可能会出现Event Time Processing,aggregation,stream joins等高级功能的需求吗?如果答案是肯定的或可能的话,那么值得考虑具有Spark Streaming或Flink等高级功能的框架。一旦投资并在一种技术中实施,以后切换框架并不容易,因为它涉及大量的工作和时间。

7.3 现有的技术堆栈

考虑现有技术堆栈可以说是一个比较重要的一点,毕竟结合已有技术框架在实现难度以及效率上会提升不少。如果现有的管道已经利用了Kafka,那么Kafka Streams或Samza可能更容易适应。类似地,如果处理管道基于Lambda架构并且Spark或Flink已经用于批处理,则考虑Spark Streaming或Flink Streaming是有意义的。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

g或Flink Streaming是有意义的。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
[外链图片转存中…(img-OV50Q9SC-1713327456868)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 28
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值