spark VS Hadoop兩大大數(shù)據(jù)分析系統(tǒng)

| 2022-09-22 admin

大數(shù)據(jù),無(wú)論是從產(chǎn)業(yè)上,還是從技術(shù)上來(lái)看,都是目前的發(fā)展熱點(diǎn)。在中國(guó),政府控制著80%的數(shù)據(jù),剩下的多由“BAT”這樣的大公司擁有,中小企業(yè)如何構(gòu)建自己的大數(shù)據(jù)系統(tǒng)?其他企業(yè)如何建設(shè)自己的大數(shù)據(jù)系統(tǒng)?

推薦兩大應(yīng)用最廣泛、國(guó)人認(rèn)知最多的Apache開(kāi)源大數(shù)據(jù)框架系統(tǒng):sparkHadoop

Spark速度快、易于使用

Spark以性能見(jiàn)長(zhǎng),但是它也因易用性而小有名氣,原因是它隨帶易于使用的API,支持Scala(原生語(yǔ)言)、Java、Python和Spark SQL。SparkSQL非常類(lèi)似于SQL 92,所以幾乎不需要經(jīng)歷一番學(xué)習(xí),馬上可以上手。

Spark是UC BerkeleyAMPlab所開(kāi)源的類(lèi)Hadoop MapReduce的通用的并行計(jì)算框架,Spark基于map reduce算法實(shí)現(xiàn)的分布式計(jì)算,擁有HadoopMapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce的是Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫(xiě)HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的map reduce的算法。

Spark還有一種交互模式,那樣開(kāi)發(fā)人員和用戶(hù)都可以獲得查詢(xún)和其他操作的即時(shí)反饋。MapReduce沒(méi)有交互模式,不過(guò)有了Hive和Pig等附加模塊,采用者使用MapReduce來(lái)得容易一點(diǎn)。

成本上來(lái)看:Spark需要大量?jī)?nèi)存,但是可以使用常規(guī)數(shù)量的常規(guī)轉(zhuǎn)速磁盤(pán)。一些用戶(hù)抱怨會(huì)產(chǎn)生臨時(shí)文件,需要清理。這些臨時(shí)文件通常保存7天,以便加快針對(duì)同一數(shù)據(jù)集的任何處理。磁盤(pán)空間相對(duì)便宜,由于Spark不使用磁盤(pán)輸入/輸入用于處理,已使用的磁盤(pán)空間可以用于SAN或NAS。

容錯(cuò)上:Spark使用彈性分布式數(shù)據(jù)集(RDD),它們是容錯(cuò)集合,里面的數(shù)據(jù)元素可執(zhí)行并行操作。RDD可以引用外部存儲(chǔ)系統(tǒng)中的數(shù)據(jù)集,比如共享式文件系統(tǒng)、HDFS、HBase,或者提供Hadoop InputFormat的任何數(shù)據(jù)源。Spark可以用Hadoop支持的任何存儲(chǔ)源創(chuàng)建RDD,包括本地文件系統(tǒng),或前面所列的其中一種文件系統(tǒng)。

Hadoop:分布式文件系統(tǒng)

Hadoop是Apache.org的一個(gè)項(xiàng)目,其實(shí)是一種軟件庫(kù)和框架,以便使用簡(jiǎn)單的編程模型,跨計(jì)算器集群對(duì)龐大數(shù)據(jù)集(大數(shù)據(jù))進(jìn)行分布式處理。Hadoop可靈活擴(kuò)展,從單一計(jì)算機(jī)系統(tǒng),到提供本地存儲(chǔ)和計(jì)算能力的數(shù)千個(gè)商用系統(tǒng),它都能輕松支持。實(shí)際上,Hadoop就是大數(shù)據(jù)分析領(lǐng)域的重量級(jí)大數(shù)據(jù)平臺(tái)。

Hadoop由協(xié)同運(yùn)行、構(gòu)建Hadoop框架的多個(gè)模塊組成。Hadoop框架的主要模塊包括如下:

HadoopCommon

Hadoop分布式文件系統(tǒng)(HDFS)

HadoopYARN

HadoopMapReduce

雖然上述四個(gè)模塊構(gòu)成了Hadoop的核心,不過(guò)還有其他幾個(gè)模塊。這些模塊包括:Ambari、Avro、Cassandra、Hive、Pig、Oozie、Flume和Sqoop,它們進(jìn)一步增強(qiáng)和擴(kuò)展了Hadoop的功能,得以擴(kuò)大到大數(shù)據(jù)應(yīng)用領(lǐng)域,處理龐大數(shù)據(jù)集。

許多使用大數(shù)據(jù)集和分析工具的公司使用Hadoop。它已成為大數(shù)據(jù)應(yīng)用系統(tǒng)中事實(shí)上的標(biāo)準(zhǔn)。設(shè)計(jì)Hadoop的初衷是處理這項(xiàng)任務(wù):搜尋和搜索數(shù)十億個(gè)網(wǎng)頁(yè),將這些信息收集到數(shù)據(jù)庫(kù)中。正是由于渴望搜尋和搜索互聯(lián)網(wǎng),才有了Hadoop的HDFS及分布式處理引擎MapReduce。

成本上:MapReduce使用常規(guī)數(shù)量的內(nèi)存,因?yàn)閿?shù)據(jù)處理基于磁盤(pán),所以公司得購(gòu)買(mǎi)速度更快的磁盤(pán)和大量磁盤(pán)空間來(lái)運(yùn)行MapReduce。MapReduce還需要更多的系統(tǒng),將磁盤(pán)輸入/輸出分布到多個(gè)系統(tǒng)上。

容錯(cuò)上:MapReduce使用TaskTracker節(jié)點(diǎn),它為JobTracker節(jié)點(diǎn)提供了心跳(heartbeat)。如果沒(méi)有心跳,那么JobTracker節(jié)點(diǎn)重新調(diào)度所有將執(zhí)行的操作和正在進(jìn)行的操作,交給另一個(gè)TaskTracker節(jié)點(diǎn)。這種方法在提供容錯(cuò)性方面很有效,可是會(huì)大大延長(zhǎng)某些操作(即便只有一個(gè)故障)的完成時(shí)間。

總結(jié):Spark與MapReduce是一種相互共生的關(guān)系。Hadoop提供了Spark所沒(méi)有的功能特性,比如分布式文件系統(tǒng),而Spark為需要它的那些數(shù)據(jù)集提供了實(shí)時(shí)內(nèi)存處理。完美的大數(shù)據(jù)場(chǎng)景正是設(shè)計(jì)人員當(dāng)初預(yù)想的那樣:讓Hadoop和Spark在同一個(gè)團(tuán)隊(duì)里面協(xié)同運(yùn)行。