当前位置:首页>正文

Storm,Spark,Hadoop三个大数据处理工具的区别和联系 2分钟读懂大数据框架Hadoop和Spark的异同

2023-04-14 23:38:16 互联网 未知

Storm,Spark,Hadoop三个大数据处理工具的区别和联系

Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点。
Storm由java和clojure写成,storm的优点是全内存计算,因为内存寻址速度是硬盘的百万倍以上,所以storm的速度相比较hadoop非常快。
hadoop是实现了mapreduce的思想,将数据切片计算来处理大量的离线数据数据。hadoop处理的数据必须是已经存放在hdfs上或者类似hbase的数据库中,所以hadoop实现的时候是通过移动计算到这些存放数据的机器上来提高效率。

2分钟读懂大数据框架Hadoop和Spark的异同

解决问题的层面不一样
首先,Hadoop和Apache Spark两者都是大数据框架,但是各自存在的目的不尽相同。Hadoop实质上更多是一个分布式数据基础设施:
它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,意味着您不需要购买和维护昂贵的服务器硬件。

同时,Hadoop还会索引和跟踪这些数据,让大数据处理和分析效率达到前所未有的高度。Spark,则是那么一个专门用来对那些分布式存储的大数据进行处理的工具,它并不会进行分布式数据的存储。

两者可合可分

Hadoop除了提供为大家所共识的HDFS分布式数据存储功能之外,还提供了叫做MapReduce的数据处理功能。所以这里我们完全可以抛开Spark,使用Hadoop自身的MapReduce来完成数据的处理。

相反,Spark也不是非要依附在Hadoop身上才能生存。但如上所述,毕竟它没有提供文件管理系统,所以,它必须和其他的分布式文件系统进行集成才能运作。这里我们可以选择Hadoop的HDFS,也可以选择其他的基于云的数据系统平台。但Spark默认来说还是被用在Hadoop上面的,毕竟,大家都认为它们的结合是最好的。

以下是天地会珠海分舵从网上摘录的对MapReduce的最简洁明了的解析,其中把人理解成计算机就好了:

我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。

现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。

Spark数据处理速度秒杀MapReduce

Spark因为其处理数据的方式不一样,会比MapReduce快上很多。MapReduce是分步对数据进行处理的:
”从集群中读取数据,进行一次处理,将结果写到集群,从集群中读取更新后的数据,进行下一次的处理,将结果写到集群,等等...“ Booz Allen
Hamilton的数据科学家Kirk Borne如此解析。

反观Spark,它会在内存中以接近“实时”的时间完成所有的数据分析:“从集群中读取数据,完成所有必须的分析处理,将结果写回集群,完成,”
Born说道。Spark的批处理速度比MapReduce快近10倍,内存中的数据分析速度则快近100倍。

如果需要处理的数据和结果需求大部分情况下是静态的,且你也有耐心等待批处理的完成的话,MapReduce的处理方式也是完全可以接受的。

但如果你需要对流数据进行分析,比如那些来自于工厂的传感器收集回来的数据,又或者说你的应用是需要多重数据处理的,那么你也许更应该使用Spark进行处理。

大部分机器学习算法都是需要多重数据处理的。此外,通常会用到Spark的应用场景有以下方面:实时的市场活动,在线产品推荐,网络安全分析,机器日记监控等。

如何从菜鸟成长成spark大数据高手

第一阶段:熟练掌握Scala语言
1,spark框架是采用scala语言写的,精致优雅。想要成为spark高手,你就必须阅读spark源码,就必须掌握scala。 
2,虽然现在的spark可以使用多种语言开发,java,python,但是最快速和支持最好的API依然并将永远是Scala的API,所以必须掌握scala来编写复杂的和高性能的spark分布式程序。 
3尤其是熟练掌握Scala的trait,apply,函数式编程,泛型,逆变,与协变等。
  第二阶段:精通spark平台本身提供给开发折的API
1,掌握spark中面向RDD的开发模式,掌握各种transformation和action函数的使用。 
2,掌握Spark中的款依赖和窄依赖,lineage机制。 
3,掌握RDD的计算流程,如Stage的划分,spark应用程序提交给集群的基础过程和Work节点基础的工作原理。
  第三阶段:深入Spark内核
此阶段主要是通过Spark框架的源码研读来深入Spark内核部分: 
1,通过源码掌握Spark的任务提交, 
2,通过源码掌握Spark的集群的任务调度, 
3,尤其要精通DAGScheduler,TaskScheduler和Worker节点内部的工作的每一步细节。
  第四阶段:掌握Spark上的核心框架的使用
Spark作为云计算大数据时代的集大成者,在实时流式处理,图技术,机器学习,nosql查询等方面具有明显的优势,我们使用Spark的时候大部分时间都是在使用其框架: 
sparksql,spark streaming等 
1,spark streaming是出色的实时流失处理框架,要掌握,DStream,transformation和checkpoint等。 
2,spark sql是离线统计分析工具,shark已经没落。 
3,对于spark中的机器学习和Graphx等要掌握其原理和用法。
  第五阶段:做商业级的spark项目
通过一个完整的具有代表性的spark项目来贯穿spark的方方面面,包括项目的框架设计,用到的技术的剖析,开始实现,运维等,完善掌握其中的每一个阶段和细节,以后你就可以从容的面对绝大多数spark项目。
  第六阶段:提供spark解决方案
1,彻底掌握spark框架源码的每一个细节, 
2,根据步同的业务场景的需要提供spark在不同场景的解决方案, 
3,根据实际需要,在spark框架基础上经行2次开发,打造自己的spark框架。

实时数据处理 用什么分布式框架

在我看来,一个完整的大数据平台应该提供离线计算、即席查询、实时计算、实时查询这几个方面的功能。
hadoop、spark、storm 无论哪一个,单独不可能完成上面的所有功能。
hadoop spark hive是一个很不错的选择.hadoop的HDFS毋庸置疑是分布式文件系统的解决方案,解决存储问题;hadoop mapreduce、hive、spark application、sparkSQL解决的是离线计算和即席查询的问题;spark streaming解决的是实时计算问题;另外,还需要HBase或者Redis等NOSQL技术来解决实时查询的问题;
除了这些,大数据平台中必不可少的需要任务调度系统和数据交换工具;
任务调度系统解决所有大数据平台中的任务调度与监控;数据交换工具解决其他数据源与HDFS之间的数据传输,比如:数据库到HDFS、HDFS到数据库等等。
关于大数据平台的架构技术文章,可搜索"lxw的大数据田地",里面有很多。