热门搜索:iPhone 7 iOS 10 iPad Pro

大数据计算框架Hadoop, Spark和MPI

36大数据 2017-12-06

今天做题,其中一道是

请简要描述一下Hadoop, Spark, MPI三种计算框架的特性以及分别适用于什么样的场景。

Hadoop

Spark

Apache Spark是一个新兴的大数据处置的引擎,主要特性是提供了一个集群的分布式内存抽象,以撑腰需要工作集的应用。

那么Spark解决了Hadoop的哪些问题呢?

   =>通过将流拆成小的batch提供Discretized Stream处置流数据。

Spark应付有向无环图Job进行调度,确定阶段(Stage),分区(Partition),流水线(Pipeline),任务(Task)和缓存(Cache),进行优化,并在Spark集群上运行Job。RDD之间的依赖分为宽依赖(依赖多个分区)和窄依赖(只依赖一个分区),在确定阶段时,需要依据宽依赖划分阶段。依据分区划分任务。

    =>提供很多转换和动作,很多基本操作如Join,GroupBy已经在RDD转换和动作中实现。

    => 分区相同的转换构成流水线放在一个Task中运行,分区差别的转换需要Shuffle,被划分到差别的Stage中,需要守候前面的Stage完成后才能够开头。

抽象层次低,需要手工编写代码来完成,使用上难以上手。

中间结果也放在HDFS文件系统中

Spark为迭代式数据处置提供更好的撑腰。每次迭代的数据能够保留在内存中,而不是写入文件。

   =>一个Job能够包含RDD的多个转换操作,在调度时能够生成多个阶段(Stage),并且如果多个map操作的RDD的分区稳定,是能够放在同一个Task中进行。

一个Job只有Map和Reduce两个阶段(Phase),纷乱的计算需要大批的Job完成,Job之间的依赖联系是由开拓者自己治理的。

 End 

36大数据

在Spark中,一切RDD的转换都是是惰性求值的。RDD的转换操作会生成新的RDD,新的RDD的数据依赖于原来的RDD的数据,每个RDD又包含多个分区。那么一段程序实际上就构造了一个由相互依赖的多个RDD组成的有向无环图(DAG)。并通过在RDD上执行动作将这个有向无环图作为一个Job提交给Spark执行。

应付迭代式数据处置性能比较差

ReduceTask需要守候一切MapTask都完成后才能够开头

这个抽象就是RDD(Resilient Distributed Dataset),RDD就是一个不可变的带分区的记载集合,RDD也是Spark中的编程模型。Spark提供了RDD上的两类操作,转换和动作。转换是用来定义一个新的RDD,包括map, flatMap, filter, union, sample, join, groupByKey, cogroup, ReduceByKey, cros, sortByKey, mapValues等,动作是返回一个结果,包括collect, reduce, count, save, lookupKey。

时延高,只适用Batch数据处置,应付交互式数据处置,实时数据处置的撑腰不够

    =>通过在内存中缓存数据,提高迭代式计算的性能。

处置逻辑隐藏在代码细节中,没有整体逻辑

    =>在Scala中,通过匿名函数和高阶函数,RDD的转换撑腰流式API,能够提供处置逻辑的整体视图。代码不包含具体操作的实现细节,逻辑更清楚。

    =>中间结果放在内存中,内存放不下了会写入本地磁盘,而不是HDFS。

只提供两个操作,Map和Reduce,表示力短缺。

Spark撑腰阻碍回复的方式也差别,提供两种方式,Linage,通过数据的血缘联系,再执行一遍前面的处置,Checkpoint,将数据集存储到持久存储中。

    =>基于RDD的抽象,实数据处置逻辑的代码非常简短。

长按识别二维码,关切36大数据

搜索「36大数据」或输入36dsj.com察看更多内容。

怎么在网上百家乐赢钱/商务/协作:dashuju36@qq.com

点击下方“阅读原文”察看更多

↓↓↓

关键字:

特约作者

推举阅读 ^o^

微信扫一扫
分享到朋友圈

prve

Kubernetes应用安排策略实践

上一篇

next

行业招聘 | 吉利上海设计中心及宁波研发中心大批岗位招聘

下一篇

{ad.bottom} 条评论