Storm部分:MapReduce,SparkStreaming,Storm,还有Yarn(Tez)的比较

MapReduce,Spark-Streaming,Storm的比较
MapReducespark—Streamingstorm
高吞吐量的批处理微批处理流式处理
分钟级秒级(毫)秒级
Map+Reduce模型DAG有向无环图,支持跨有向无环图的内存数据共享DAG模型
反复启停,离线的处理,基于磁盘的处理框架基于内存的处理框架,可以提高迭代应用和交互式应用的计算效率,相比MapReduce速度能够提升10倍常驻运行,只要启动,一直在运行。
 spark核心之上的一种计算模型,能与其他组件很好结合独立系统专为流式计算设计
如果有算法,那就只有map算子和reduce算子spark是家族制,里边有很多框架和算子storm是单打独斗
 支持Java语言,Scala语言,Python语言,理论上支持所有语言,需要少量代码可以完成适配器
 支持SQL查询,流数据,机器学习和图表数据处理低延迟、易扩展性和容错机制

1、Hadoop MapReduce计算模式实际上降低了做并行计算、大数据处理的门槛,适合于高吞吐量的批处理场景。而Storm和Spark-Streaming,它们都是流式计算的框架。Storm以其低延迟、易扩展性和容错机制等特点发展至今已经非常成熟,也非常优秀,为许多互联网公司所青睐。
2、Spark-Streaming它基于spark将流式数据拆分为mini-batch做持续计算,从目前来看,它的处理延迟可能稍高,但也基本满足实时计算地要求,且它有丰富的计算和转换类API,并易于使用。虽然内部使用Scala去实现但是也支持Java的开发,在开发效率方面还是非常高的,此外,我们自己的经验是在生产环境验证了它的稳定性和可靠性。
3、storm适合对实时性要求更高的场合,因为它可以把延迟控制在亚秒级或者更低。而Spark-Streaming作为Spark Stack中的一员,如果熟悉了Spark下的开发方式,对Spark-streaming的开发非常容易上手;大部分的大数据处理需求,不同的workload,Spark Stack中有相应的技术产品可供选择,可避免维护不同的计算框架。选择Spark-Streaming就要考虑这个生态系统里的其他产品以及开发效率。

                                   宝宝那么辛苦,你就鼓励一下呗。

————————————————————————————————————————————————————————

1) MapReduce:是一种离线计算框架,将一个算法抽象成Map和Reduce两个阶段进行处理,非常适合数据密集型计算。

2) Spark:MapReduce计算框架不适合迭代计算和交互式计算,MapReduce是一种磁盘计算框架,而Spark则是一种内存计算框架,它将数据尽可能放到内存中以提高迭代应用和交互式应用的计算效率。

3) Storm:MapReduce也不适合进行流式计算、实时分析,比如广告点击计算等,而Storm则更擅长这种计算、它在实时性要远远好于MapReduce计算框架。

4)Tez: 运行在YARN之上支持DAG作业的计算框架,对MapReduce数据处理的归纳。它把Map/Reduce过程拆分成若干个子过程,同时可以把多个Map/Reduce任务组合成一个较大的DAG任务,减少了Map/Reduce之间的文件存储。同时合理组合其子过程,也可以减少任务的运行时间。

_____________________________________________________________________________________________________

Hadoop MapReduce 是三者中出现最早,知名度最大的分布式计算框架,最早由 Google Lab 开发,使用者遍布全球(Hadoop PoweredBy);主要适用于大批量的集群任务,由于是批量执行,故时效性偏低,原生支持 Java 语言开发 MapReduce ,其它语言需要使用到 Hadoop Streaming 来开发。Spark Streaming 保留了 Hadoop MapReduce 的优点,而且在时效性上有了很大提高,中间结果可以保存在内存中,从而对需要迭代计算和有较高时效性要求的系统提供了很好的支持,多用于能容忍小延时的推荐与计算系统。Storm 一开始就是为实时处理设计,因此在实时分析/性能监测等需要高时效性的领域广泛采用,而且它理论上支持所有语言,只需要少量代码即可完成适配器。

与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark有如下优势。

首先,Spark为我们提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。

Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍。

Spark让开发者可以快速的用Java、Scala或Python编写程序。它本身自带了一个超过80个高阶操作符集合。而且还可以用它在shell中以交互式地查询数据。

除了Map和Reduce操作之外,它还支持SQL查询,流数据,机器学习和图表数据处理。开发者可以在一个数据管道用例中单独使用某一能力或者将这些能力结合在一起使用。

Spark允许程序开发者使用有向无环图(DAG)开发复杂的多步数据管道。而且还支持跨有向无环图的内存数据共享,以便不同的作业可以共同处理同一个数据。

Spark运行在现有的Hadoop分布式文件系统基础之上(HDFS)提供额外的增强功能。它支持将spark应用部署到现存的Hadoop v1集群(with SIMR – Spark-Inside-MapReduce)或Hadoop v2 YARN集群甚至是Apache Mesos之中。

我们应该将Spark看作是Hadoop MapReduce的一个替代品而不是Hadoop的替代品。其意图并非是替代Hadoop,而是为了提供一个管理不同的大数据用例和需求的全面且统一的解决方案。

Spark的其他特性包括:

  • 支持比Map和Reduce更多的函数。
  • 优化任意操作算子图(operator graphs)。
  • 可以帮助优化整体数据处理流程的大数据查询的延迟计算。
  • 提供简明、一致的Scala,Java和Python API。
  • 提供交互式Scala和Python Shell。目前暂不支持Java。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值