简单总结Hadoop和Spark集群技术的不同点

所属分类: 网站运营 / 建站经验 阅读数: 114
收藏 0 赞 0 分享

谈到大数据,相信大家对Hadoop和Apache Spark这两个名字并不陌生。但我们往往对它们的理解只是提留在字面上,并没有对它们进行深入的思考,下面不妨跟我一块看下它们究竟有什么异同。

解决问题的层面不一样
首先,Hadoop和Apache Spark两者都是大数据框架,但是各自存在的目的不尽相同。Hadoop实质上更多是一个分布式数据基础设施: 它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,意味着您不需要购买和维护昂贵的服务器硬件。
同时,Hadoop还会索引和跟踪这些数据,让大数据处理和分析效率达到前所未有的高度。Spark,则是那么一个专门用来对那些分布式存储的大数据进行处理的工具,它并不会进行分布式数据的存储。

两者可合可分
Hadoop除了提供为大家所共识的HDFS分布式数据存储功能之外,还提供了叫做MapReduce的数据处理功能。所以这里我们完全可以抛开Spark,使用Hadoop自身的MapReduce来完成数据的处理。
相反,Spark也不是非要依附在Hadoop身上才能生存。但如上所述,毕竟它没有提供文件管理系统,所以,它必须和其他的分布式文件系统进行集成才能运作。这里我们可以选择Hadoop的HDFS,也可以选择其他的基于云的数据系统平台。但Spark默认来说还是被用在Hadoop上面的,毕竟,大家都认为它们的结合是最好的。
以下是从网上摘录的对MapReduce的最简洁明了的解析:
我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。
现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。

Spark数据处理速度秒杀MapReduce
熟悉Hadoop的人应该都知道,用户先编写好一个程序,我们称为Mapreduce程序,一个Mapreduce程序就是一个Job,而一个Job里面可以有一个或多个Task,Task又可以区分为Map Task和Reduce Task,如下图所示:
2016510101130768.png (607×355)

而在Spark中,也有Job概念,但是这里的Job和Mapreduce中的Job不一样,它不是作业的最高级别的粒度,在它只上还有Application的概念。
一个Application和一个SparkContext相关联,每个Application中可以有一个或多个Job,可以并行或者串行运行Job。Spark中的一个Action可以触发一个Job的运行。在Job里面又包含了多个Stage,Stage是以Shuffle进行划分的。在Stage中又包含了多个Task,多个Task构成了Task Set。他们之间的关系如下图所示:
2016510101159122.png (747×627)

Mapreduce中的每个Task分别在自己的进程中运行,当该Task运行完的时候,该进程也就结束了。和Mapreduce不一样的是,Spark中多个Task可以运行在一个进程里面,而且这个进程的生命周期和Application一样,即使没有Job在运行。
这个模型有什么好处呢?可以加快Spark的运行速度!Tasks可以快速地启动,并且处理内存中的数据。但是这个模型有的缺点就是粗粒度的资源管理,每个Application拥有固定数量的executor和固定数量的内存。
Spark因为其处理数据的方式不一样,会比MapReduce快上很多。MapReduce是分步对数据进行处理的: ”从集群中读取数据,进行一次处理,将结果写到集群,从集群中读取更新后的数据,进行下一次的处理,将结果写到集群,等等…“ Booz Allen Hamilton的数据科学家Kirk Borne如此解析。
反观Spark,它会在内存中以接近“实时”的时间完成所有的数据分析:“从集群中读取数据,完成所有必须的分析处理,将结果写回集群,完成,” Born说道。Spark的批处理速度比MapReduce快近10倍,内存中的数据分析速度则快近100倍。
如果需要处理的数据和结果需求大部分情况下是静态的,且你也有耐心等待批处理的完成的话,MapReduce的处理方式也是完全可以接受的。
但如果你需要对流数据进行分析,比如那些来自于工厂的传感器收集回来的数据,又或者说你的应用是需要多重数据处理的,那么你也许更应该使用Spark进行处理。
大部分机器学习算法都是需要多重数据处理的。此外,通常会用到Spark的应用场景有以下方面:实时的市场活动,在线产品推荐,网络安全分析,机器日记监控等。

灾难恢复
两者的灾难恢复方式迥异,但是都很不错。因为Hadoop将每次处理后的数据都写入到磁盘上,所以其天生就能很有弹性的对系统错误进行处理。
Spark的数据对象存储在分布于数据集群中的叫做弹性分布式数据集(RDD: Resilient Distributed Dataset)中。“这些数据对象既可以放在内存,也可以放在磁盘,所以RDD同样也可以提供完成的灾难恢复功能,”Borne指出。

更多精彩内容其他人还在看

SEO实战:网站被黑有何影响? 如何处理网站被黑?

网站被黑是常见的事情,尤其是一些商业类型的网站,网站被黑有的是被竞争对手恶意报复,有的是被博彩,赌博等违法网站挂黑链。网站被黑会有什么影响呢?网站被黑后该怎么办呢?本文将提供相关措施供大家了解
收藏 0 赞 0 分享

当当网的内部框架开源策略案例分享

这篇文章主要介绍了当当网的内部框架开源策略案例分享,包括其Dubbo项目和分布式作业调度框架elastic-job的开源情况简介,需要的朋友可以参考下
收藏 0 赞 0 分享

当当网海量信息的组织与发布经验分享

这篇文章主要介绍了当当网海量信息的组织与发布经验分享,包括双11时促销系统与交易系统的一些重构实践,需要的朋友可以参考下
收藏 0 赞 0 分享

四种自助建站排版技术有什么优缺点?优劣对比分析

四种自助建站排版技术有什么优缺点?很多朋友都不是很清楚,所以今天小编就为大家分析这四种自助建站排版技术,一起来看看吧
收藏 0 赞 0 分享

如何注册网站 新人注册网站图文步骤

由于目前所见即所得类型的工具越来越多,使用也越来越方便,所以网站制作已经变成了一件轻松的工作,不像以前要手工编写一行行的源代码那样
收藏 0 赞 0 分享

浅析豆瓣网站运营的主要技术模式

这篇文章主要介绍了豆瓣网站运营的主要技术模式,作为国内以Python驱动的知名网站之一,本文介绍了豆瓣的一些技术理念,需要的朋友可以参考下
收藏 0 赞 0 分享

深入分析京东云数据库的运营模式

这篇文章主要介绍了京东云数据库的运营模式,京东利用服务器集群的方式构建起了大型的基于云的数据存储方式,需要的朋友可以参考下
收藏 0 赞 0 分享

剖析美团的以Python为主导的云平台发展战略

这篇文章主要介绍了美团的以Python为主导的云计算发展战略,美团对于Python的Django和Tornado框架的应用着实令人眼前一亮,是为国内Python技术的一大主要推动力量,需要的朋友可以参考下
收藏 0 赞 0 分享

浅谈如何提高网站内页权重

近期发现手上优化的网站收录量还好,收录率达到40%以上,但是就是没排名,分析了下作了相应调整,后续优化效果将相继文章分享出
收藏 0 赞 0 分享

搜狐云发展中DomeOS的开发与Docker的应用

这篇文章主要介绍了搜狐云发展中DomeOS的开发与Docker的应用,DomeOS是搜狐自助研发的企业级业务编排运维管理系统,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多