华为云批处理和流处理引擎的选择

网友投稿 1238 2022-05-29

目前华为主要使用的批处理和流处理引擎主要有 MapReduce、Spark、Streaming、Flink. 其中批处理引擎的代表是MapReduce,流处理引擎是Streaming,它源于Storm,混合引擎(既可以批处理又可以流处理)是Spark、Flink.

下面会根据各个引擎的特性来介绍什么样的场景用什么类型的引擎更为合适,MapReduce,基于Hadoop的批处理计算框架,它是基于时间驱动型的批处理计算引擎,当然还有Spark 也属于时间驱动型,而Streaming和Flink属于事件驱动的实时流处理引擎。这里所谓的时间驱动型,相当于在一定时间区间以内,对部分数据进行处理,而如果还有新数据要处理,就需要等到下一个时间区间内才能处理。有个最为经典的例子,就是用来描述时间驱动型和事件驱动型的区别。事件驱动型相当于自动扶梯,时间驱动型相当于封闭电梯,自动扶梯一直在处理,没有结束时间点,一旦有人(数据)就可以直接乘坐(处理)。而封闭电梯是每楼层一定时间内站(处理)一部分人(数据),一旦关门(过了时间界限),只有等待下一次电梯开门(下一个时间区间)。再回到MapReduce,它作为原生的大数据批处理引擎,在处理大数据的特性上有大规模数据集的并行计算(1TB)、易扩展、高容错性、硬件廉价等特性。因此对于一些大数据的统计、非实时的计算都可以使用。

Spark是一种基于内存的计算框架,它的数据处理过程均在内存中,只有读取数据和最终结果落盘才会使用硬盘进行读写。因此它在延迟和数据处理性能上都会强于MapReduce,而流处理模式主要由Spark Streaming负责,它等于将任务进行“微批处理“,但是相对于真正的流处理微秒级的延迟,它能做到亚秒级,因此在实时性上还略显不足,只能用于一些对于时延要求不是很高的流处理业务。

Streaming和Flink都具有流处理引擎的功能,但是Streaming源于Strom,它只有流处理的功能,如果想做批处理,还需要与其他组件进行协同,如与Trident协同可以使用微批处理代替流处理。而Flink是具有流处理与批处理两种功能,并且在可靠性上支持主备模式,在单线程和多线程的吞吐量上,Flink也远超过同为流处理引擎的Streaming。而在Hadoop生态体系里,Flink能很好地与其他组件配合使用。如果配合Hadoop 堆栈使用,该技术可以很好地融入整个环境,在任何时候都只占用必要的资源。该技术可轻松地与YARN、HDFS和Kafka 集成。在兼容包的帮助下,Flink还可以运行为其他处理框架,例如Hadoop和Storm编写的任务。这相对于Spark的资源消耗会对同一集群内的其他任务产生影响来说,也是不可多得的一个优势。

华为云批处理和流处理引擎的选择

大数据 大数据

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【云端大事件】 浙江比弦NB-IoT智慧照明入驻华为云市场,助力智慧城市上云
下一篇:都9102年了,还要用弄Win32 API--记某IC卡读卡器使用Win32 API模拟操作开发心得
相关文章