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

举报
huangruie 发表于 2019/04/08 17:47:22 2019/04/08
【摘要】 目前华为主要使用的批处理和流处理引擎主要有 MapReduce、Spark、Streaming、Flink. 其中批处理引擎的代表是MapReduce,流处理引擎是Streaming,它源于Storm,混合引擎(既可以批处理又可以流处理)是Spark、Flink. 下面会根据各个引擎的特性来介绍什么样的场景用什么类型的引擎更为合适,MapReduce,基于Hadoop的批处...

     目前华为主要使用的批处理和流处理引擎主要有 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的资源消耗会对同一集群内的其他任务产生影响来说,也是不可多得的一个优势。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。