Spark和Hadoop以及区别
1. Spark是什么?
Spark,是⼀种通⽤的⼤数据计算框架,正如传统⼤数据技术Hadoop的MapReduce、Hive引擎,以及Storm流式实时计算引擎等。
Spark包含了⼤数据领域常见的各种计算框架:⽐如Spark Core⽤于离线计算,Spark SQL⽤于交互式查询,Spark Streaming⽤于实时流式计算,Spark MLlib⽤于机器学习,Spark GraphX⽤于图计算。
Spark主要⽤于⼤数据的计算,⽽Hadoop以后主要⽤于⼤数据的存储(⽐如HDFS、Hive、HBase等),以及资源调度(Yarn)。
2.Spark整体架构
Spark的特点:
速度快:Spark基于内存进⾏计算(当然也有部分计算基于磁盘,⽐如shuffle)。
容易上⼿开发:Spark的基于RDD的计算模型,⽐Hadoop的基于Map-Reduce的计算模型要更加易于理解,更加易于上⼿开发,实现各种复杂功能,⽐如⼆次排序、topn等复杂操作时,更加便捷。
超强的通⽤性:Spark提供了Spark RDD、Spark SQL、Spark Streaming、Spark MLlib、Spark GraphX等技术组件,可以⼀站式地完成⼤数据领域的离线批处理、交互式查询、流式计算、机器学习、图计算等常见的任务。
集成Hadoop:Spark并不是要成为⼀个⼤数据领域的“独裁者”,⼀个⼈霸占⼤数据领域所有的“地盘”,⽽是与Hadoop进⾏了⾼度的集成,两者可以完美的配合使⽤。Hadoop的HDFS、Hive、HBase负责存储,YARN负责资源调度;Spark复杂⼤数据计算。实际
上,Hadoop+Spark的组合,是⼀种“double win”的组合。
hadoop与spark的区别与联系极⾼的活跃度:Spark⽬前是Apache基⾦会的顶级项⽬,全世界有⼤量的优秀⼯程师是Spark的committer。并且世界上很多顶级的IT公司都在⼤规模地使⽤Spark。
Hadoop是什么?
Hadoop是项⽬的总称。主要是由HDFS和MapReduce组成。HDFS是Google File System(GFS)的开源实现。MapReduce是Google MapReduce的开源实现。具体⽽⾔,Apache Hadoop软件库是⼀个允许使⽤简单编程模型跨计算机集处理⼤型数据集合的框架,其设计的初衷是将单个服务器扩展成上千个机器组成的⼀个集为⼤数据提供计算服务,其中每个机器都提供本地计算和存储服务。
Hadoop的核⼼:
1.HDFS和MapReduce是Hadoop的两⼤核⼼。通过HDFS来实现对分布式储存的底层⽀持,达到⾼速并⾏读写与⼤容量的储存扩展。
2.通过MapReduce实现对分布式任务进⾏处理程序⽀持,保证⾼速分区处理数据。
MapReduce的计算模型分为Map和Reduce两个过程。在⽇常经验⾥,我们统计数据需要分类,分类越细、参与统计的⼈数越多,计算的时间就越短,这就是Map的形象⽐喻,在⼤数据计算中,成百上千台机器同时读取⽬标⽂件的各个部分,然后对每个部分的统计量进⾏计
算,Map就是负责这⼀⼯作的;⽽Reduce就是对分类计数之后的合计,是⼤数据计算的第⼆阶段。可见,数据的计算过程就是在HDFS基础上进⾏分类汇总。
HDFS把节点分成两类:NameNode和DataNode。NameNode是唯⼀的,程序与之通信,然后从DataNode上存取⽂件。这些操作是透明的,与普通的⽂件系统API没有区别。
MapReduce则是JobTracker节点为主,分配⼯作以及负责和⽤户程序通信。
Spark和Hadoop的区别和⽐较:
1.原理⽐较:
Hadoop和Spark都是并⾏计算,两者都是⽤MR模型进⾏计算
Hadoop⼀个作业称为⼀个Job,Job⾥⾯分为Map Task和Reduce Task阶段,每个Task都在⾃⼰的进程中运⾏,当Task结束时,进程也会随之结束;
Spark⽤户提交的任务称为application,⼀个application对应⼀个SparkContext,app中存在多个job,每触发⼀次action操作就会产⽣⼀个job。这些job可以并⾏或串⾏执⾏,每个job中有多个stage,stage是shuffle过程中DAGScheduler通过RDD之间的依赖关系划分job⽽来的,每个stage⾥⾯有多个task,组成taskset,由TaskScheduler分发到各个executor中执⾏;executor的⽣命周期是和app⼀样的,即使没有job运⾏也是存在的,所以task可以快速启动读取内存进⾏计算。
2.数据的存储和处理:
hadoop:
Hadoop实质上更多是⼀个分布式系统基础架构: 它将巨⼤的数据集分派到⼀个由普通计算机组成的集中的多个节点进⾏存储,同时还会索引和跟踪这些数据,⼤幅度提升⼤数据处理和分析效率。Hadoop 可以独⽴完成数据的存储和处理⼯作,因为其除了提供HDFS分布式数据存储功能,还提供MapReduce
数据处理功能。
spark:
Spark 是⼀个专门⽤来对那些分布式存储的⼤数据进⾏处理的⼯具,没有提供⽂件管理系统,⾃⾝不会进⾏数据的存储。它必须和其他的分布式⽂件系统进⾏集成才能运作。可以选择Hadoop的HDFS,也可以选择其他平台。
3.处理速度:
hadoop:
Hadoop是磁盘级计算,计算时需要在磁盘中读取数据;其采⽤的是MapReduce的逻辑,把数据进⾏切⽚计算⽤这种⽅式来处理⼤量的离线数据.
spark:
Spark,它会在内存中以接近“实时”的时间完成所有的数据分析。Spark的批处理速度⽐MapReduce快近10倍,内存中的数据分析速度则快近100倍。
4.恢复性:
hadoop:
Hadoop将每次处理后的数据写⼊磁盘中,对应对系统错误具有天⽣优势。
spark:
Spark的数据对象存储在弹性分布式数据集(RDD:)中。“这些数据对象既可放在内存,也可以放在磁盘,所以RDD也提供完整的灾难恢复功能。
5.处理数据:
hadoop:
Hadoop适合处理静态数据,对于迭代式流式数据的处理能⼒差;
spark:
Spark通过在内存中缓存处理的数据,提⾼了处理流式数据和迭代式数据的性能;
6.中间结果:
hadoop:
Hadoop中中间结果存放在HDFS中,每次MR都需要刷写-调⽤,
spark:
⽽Spark中间结果存放优先存放在内存中,内存不够再存放在磁盘中,不放⼊HDFS,避免了⼤量的IO和刷写读取操作;
三⼤分布式计算系统:
Hadoop适合处理离线的静态的⼤数据;
Spark适合处理离线的流式的⼤数据;
Storm/Flink适合处理在线的实时的⼤数据。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论