Hadoop VS Spark
来源:互联网 发布:破解加密压缩文件软件 编辑:程序博客网 时间:2024/05/23 01:53
Hadoop
Hadoop就是解决了大数据的可靠存储和处理。现在的Hadoop主要包含两个框架:
- 大规模存储系统HDFS:在由普通PC组成的集群上提供高可靠的文件存储,通过将块保存成多个副本的办法来解决服务器或硬盘坏掉的问题。以低功耗、高性能的方式储存数据,并且能优化大数据的种类和读取速度。
- 计算引擎YARN:可以承载任何数量的程序框架,原始的框架是MR,通过Mapper和Reducer的抽象提供一个编程模型,可以在一个或上百个PC组成的不可靠集群上并发的、分布式的处理大量数据集,而把并发、分布式和故障恢复等计算细节隐藏起来。
Hadoop的局限和不足
- 抽象层次低,需要手工编写代码来完成,使用上难以上手。
- 只提供两个操作,Map和Reduce,表达力欠缺。
- 一个Job只有Map和Reduce两个阶段(Phase),复杂的计算需要大量的Job完成,Job之间的依赖关系是由开发者自己管理的。
- 处理逻辑隐藏在代码细节中,没有整体逻辑
- 中间结果也放在HDFS文件系统中
- ReduceTask需要等待所有MapTask都完成后才可以开始
- 时延高,只适用Batch数据处理,对于交互式数据处理,实时数据处理的支持不够
- 对于迭代式数据处理性能比较差
Spark
Apache Spark是一个新兴的大数据处理的引擎,主要特点是提供了一个集群的分布式内存抽象,以支持需要工作集的应用。
这个抽象就是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。
在Spark中,所有RDD的转换都是是惰性求值的。RDD的转换操作会生成新的RDD,新的RDD的数据依赖于原来的RDD的数据,每个RDD又包含多个分区。那么一段程序实际上就构造了一个由相互依赖的多个RDD组成的有向无环图(DAG)。并通过在RDD上执行动作将这个有向无环图作为一个Job提交给Spark执行。
Spark对于有向无环图Job进行调度,确定阶段(Stage),分区(Partition),流水线(Pipeline),任务(Task)和缓存(Cache),进行优化,并在Spark集群上运行Job。RDD之间的依赖分为宽依赖(依赖多个分区)和窄依赖(只依赖一个分区),在确定阶段时,需要根据宽依赖划分阶段。根据分区划分任务。
Spark支持故障恢复的方式也不同,提供两种方式,Linage,通过数据的血缘关系,再执行一遍前面的处理,Checkpoint,将数据集存储到持久存储中。
Spark为迭代式数据处理提供更好的支持。每次迭代的数据可以保存在内存中,而不是写入文件。
Spark解决了Hadoop的那些不足
- spark vs hadoop
- hadoop vs spark
- Hadoop MR VS Spark
- hadoop vs spark
- Spark VS Hadoop
- Spark vs Hadoop MapReduce
- Hadoop vs Spark
- Hadoop VS Spark
- Spark VS Hadoop
- Spark VS Hadoop
- Hadoop vs Spark性能对比
- Hadoop vs Spark性能对比
- Hadoop vs Spark性能对比
- Spark的协同过滤.Vs.Hadoop MR
- Hadoop 编程模型 VS Spark 编程模型
- 话题讨论:Spark VS Hadoop有哪些异同点?(转)
- spark VS Hadoop 两大大数据分析系统深度解读
- Spark VS Hadoop:两大大数据分析系统深度解读
- 遇到的一些问题梳理
- mybatis的#{}占位符和${}拼接符的区别
- ubuntu14.04安装搜狗输入法
- ubuntu16.04 Qt5.8 如何使用opecv3.2
- kotlin 简介 资源 记录 [U04]
- Hadoop VS Spark
- 遍历文件内部查找字符串的搜索脚本
- 在Ubuntu上搭建Git server
- [leetcode]565. Array Nesting
- 生产者消费者模型
- C#泛型集合类(2)
- Android Studio中获取查看签名SHA1证书指纹数据或MD5的方法
- 理解OpenCV中的宏定义 CVAPI(函数返回类型)(转载)
- 2017.5.28 codeforce h题思考记录