设为首页 加入收藏

TOP

spark产生的原因
2019-05-06 01:27:52 】 浏览:82
Tags:spark 产生 原因
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/heijunwei/article/details/89763682

一、spark产生的目的

spark产生:为了替代Mapreduce,解决Mapreduce计算短板
Hadoop生态体系:hdfs+zokeeper +mareduce/hive+hbase+storm+mahot+其他 工具;
spark体系:hdfs+zokeeper +spark+hbase+storm+mahot+其他 工具。

二、spark的设计初衷:
设计一个统一的计算引擎解决所有的各类型计算,包含计算类型:
1.离线批处理;
2.交互式查询
3.图计算
4.流失计算
5.机器学习/迭代计算
6.Spark R 科学计算,数据分析

三、spark和Mapreduce的对比之后的优势:
1.减少磁盘IO
MapReduce:基于磁盘
Spark 基于内存(尽量把临时数据缓存到内存)
2.增加并行度:
MapReduce:MapTask ReduceTask 一个进程一个Task(默认)
spark:ShuffleMapTask ResultTask 使用的是一个线程
3.避免重复计算:
可以吧把数据强制缓存到内存中,以供其他的task使用。
4.可选的shuffle和排序
4.1可选的shuffle
MapReduce:提供一种通用的shuffle
Combiner Partitioner sorter
shuffle的策略是一个固定的套路
如果设置了combiner会执行Combiner
如果设置的ReduceTask的个数超过1,那么Partitioner就会执行数据的分区;
如果有reducer节段的话,那么sortre的数据排序就一定会执行。
Spark的suffle:
提供了四重shuffle策略,分别适用不同的场景;
HaahShuffle,SortShuffle
4.2可选的排序:
MapReduce:如果有reducer节段的话,那么sortre的数据排序就一定会执行;
Spark:用户指定执行,否则不排序;
5.灵活的内存管理策略
要多少给多少,可以合理的分配到底哪个阶段哦,哪个组件,使用多少。
MapReduce:MapTask JVM在启动的时候就指定了最多能使用多少内存,如果超出OOM
Spark:worker启动了很多个进程executor,每个executor并发运行多个线程,每个线程执行一个程序;
每个executor和每一个task都会指定固定的内存大小去使用,如果excutor的内存固定,task的内存也有上限,也可能出现OOM
但是:spark的任务线程,出来能使用JVM的内存之外,还可以使用操作系统的内存。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spark 官方文档(4)——Configur.. 下一篇Hadoop与Spark基本原理

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目