全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 学道会
490 1
2019-07-27
大规模数据处理12:我们为什么需要spark
在学一个新技术之前,你有必要先了解这门技术出现的意义。这样,你才能更好地理解:它是应用到什么场景的?与同类工具相比,它的优缺点是什么?什么时候用它比其它工具好(或差)?……
MapReduce被硅谷一线公司淘汰的两大主要原因:高昂的维护成本、时间性能“达不到”用户的期待。
1.MapReduce模型的抽象层次低,大量的底层逻辑都需要开发者手工完成。
2.只提供Map和Reduce两个操作
举个例子,两个数据集的Join是很基本而且常用的功能,但是在MapReduce的世界中,需要对这两个数据集做一次Map和Reduce才能得到结果。这样框架对于开发者非常不友好。正如第一讲中提到的,维护一个多任务协调的状态机成本很高,而且可扩展性非常差。
3.在Hadoop中,每一个Job的计算结果都会存储在HDFS文件存储系统中,所以每一步计算都要进行硬盘的读取和写入,大大增加了系统的延迟。 由于这一原因,MapReduce对于迭代算法的处理性能很差,而且很耗资源。因为迭代的每一步都要对HDFS进行读写,所以每一步都需要差不多的等待时间。
只支持批数据处理,欠缺对流数据处理的支持
Spark最基本的数据抽象叫做弹性分布式数据集RDD,它代表一个可以被分区的只读数据集,它内部可以有很多分区,每个分区又有大量的数据记录,相对于Hadoop的MapReduce会将中间数据存放到硬盘中,Spark会把中间数据缓存在内存中,从而减少了很多由于硬盘读写而导致的延迟,大大加快了处理速度。
Spark第一次启动时需要把数据载入到内存,之后的迭代可以直接在内存里利用中间结果做不落地的运算。所以,后期的迭代速度快到可以忽略不计。在当今机器学习和人工智能大热的环境下,Spark无疑是更好的数据处理引擎。
在任务task级别上,spark的并行机制是多线程模型,而MapReduce是多进程模型。多进程模型便于细粒度控制每个任务占用的资源,但会消耗较多的启动时间
但是,Spark并不是一个完全替代Hadoop的全新工具。 因为Hadoop还包含了很多组件。
1.数据存储层:分布式文件存储系统HDFS,分布式数据库存储的Hbase;
2.数据处理层:进行数据处理的MapReduce,负责集群和资源管理的Yarn
3.数据访问层: Hive Pig Mahout
此外,作为通用的数据处理平台,Spark有五个主要的扩展库,分别是支持结构化数据的Spark SQL、处理实时数据的Spark Streaming、用于机器学习的MLlib、用于图计算的GraphX、用于统计分析的SparkR。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2019-7-27 21:12:31
学习笔记奖!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群