Hadoop是一个集分布式存储与分布式计算于一体的基础平台。
HDFS作为Hadoop的独立基本组件,完成了分布式文件系统的功能,达到数据分布式管理的目的。
由于HDFS的独立性,使得HDFS的接口可以单独提供分布式文件系统的功能,使得Hadoop很方便地作为分布式文件系统能为其他分布式计算框架提供服务。
MapReduce作为一个计算框架,为Hadoop提供计算功能,达到Hadoop的分布式计算的目的。
在Hadoop1的MapReduce中,任务管理与资源管理是一体的,难以独立使用
Yarn作为第二代的Hadoop结构,能够取代MapReduce在第一代Hadoop中的作用,为Hadoop提供分布式计算功能;但是,Yarn将分布式计算功能进行划分成计算模块和调度模块,计算模块是Hadoop的原生Job,调度模块是一个通用的Job调度框架。结果就是Yarn能够创建Hadoop的分布式job,并进行管理执行,另一方面,Yarn也提供通用接口,给其他任何想使用Hadoop的分布式文件系统和分布式调度框架的分布式计算框架提供支持。从这个意义上讲,Yarn就成了一个资源管理器。
Spark是一个分布式计算平台,支持MR,流式计算,机器学习,图计算等多种分布式计算方式。
Spark并不包含分布式存储功能,
Spark所有计算方式的计算单元叫做RDD,RDD是spark对运算数据的一种抽象。
在单机运行中,可以有Map,Set,List,数组等来组织数据,到了分布式环境,由于目标数据分布在不同的机器上,一个数据集由分布在集群中的多个机器上的数据组成,需要一种抽象来描述这种情况,从而在分布式环境与应用程序之间增加一层隔离,使得工程师开发分布式程序就像开发本地程序一样,在Spark中,这种功能就是由RDD来承担。
RDD是自描述的数据抽象,既包含数据本身的信息,也能包含数据在分布式环境下的分布信息。比如对RDD进行partition的时候,这种partition的规则就能保存进RDD中,当在RDD之上进行转换操作或行动操作时,能够根据保存的partition规则快速地访问目标数据,而不用对RDD下所有机器上的数据进行shuffle。
http://blog.csdn.net/guohecang/article/details/51736572
分布式计算包含:任务管理,资源管理,数据管理
离线计算、实时计算、流式计算
http://www.cnblogs.com/mushroom/p/4959904.html
http://www.cnblogs.com/mushroom/p/4962788.html