国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

從Hadoop到Spark技術(shù)的革新

2019-05-23 10:44:48權(quán)趙恒李嘉迪
電腦知識(shí)與技術(shù) 2019年8期
關(guān)鍵詞:大數(shù)據(jù)技術(shù)大數(shù)據(jù)

權(quán)趙恒 李嘉迪

摘要:隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,人類社會(huì)逐漸進(jìn)入了大數(shù)據(jù)的時(shí)代。海量數(shù)據(jù)的產(chǎn)生給現(xiàn)代人類帶來了新的挑戰(zhàn),促使人們研究發(fā)現(xiàn)新的技術(shù)和手段去解決大數(shù)據(jù)帶來的各種難題。Hadoop和Spark技術(shù)就是在這樣的背景下產(chǎn)生的,目前在人們生活的各個(gè)領(lǐng)域,都離不開這兩種技術(shù)的支持。本文主要以這兩種技術(shù)為主,按照技術(shù)產(chǎn)生的時(shí)間順序,分析了這兩種技術(shù)的發(fā)展以及存在的問題。

關(guān)鍵詞:大數(shù)據(jù);大數(shù)據(jù)技術(shù);Hadoop;Spark

中圖分類號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2019)08-0265-04

From Hadoop to Spark Technology Innovation

QUAN Zhao-heng,LI Jia-di

(School of Computer Science, Southwest Petroleum University, Chengdu 610500, China)

Abstract: With the rapid development of Internet technology, human society has gradually entered the era of big data. The generation of massive data has brought new challenges to modern humans. Encourage people to research and discover new technologies and means to solve the problems brought by big data. Hadoop and Spark technology are produced in this context, and currently in the various fields of people's lives, they are inseparable from the support of these two technologies. This paper mainly focuses on these two technologies, and analyzes the development and problems of these two technologies according to the time sequence of technology generation.

Key words: big data; big data technology; hadoop; spark

1 引言

我們生活在數(shù)據(jù)的時(shí)代,我們每天在手機(jī)或者電腦上瀏覽的網(wǎng)頁、收到的各種消息以及看的視頻、聽的音樂都會(huì)產(chǎn)生數(shù)據(jù),都會(huì)存儲(chǔ)在我們的電腦或者手機(jī)上。數(shù)據(jù)的產(chǎn)生是相當(dāng)容易的,但對(duì)于大量數(shù)據(jù)的存儲(chǔ)與處理,發(fā)現(xiàn)其中的價(jià)值,為社會(huì)創(chuàng)造更多的價(jià)值卻是我們正在面臨的問題。

隨著互聯(lián)網(wǎng)等信息技術(shù)的發(fā)展,越來越多的TB、PB甚至FB級(jí)別的數(shù)據(jù)產(chǎn)生,Hadoop與Spark作為當(dāng)今大數(shù)據(jù)處理的主流平臺(tái),已經(jīng)在各個(gè)領(lǐng)域廣泛使用[1, 2]。Hadoop作為最早的大數(shù)據(jù)處理框架,像MapReduce、HDFS等Hadoop生態(tài)圈的開源項(xiàng)目至今仍然是處理大數(shù)據(jù)的必不可少的工具,但是隨著越來越多機(jī)器學(xué)習(xí)、圖計(jì)算等應(yīng)用的出現(xiàn),大數(shù)據(jù)平臺(tái)不僅要求能夠處理大規(guī)模的數(shù)據(jù),還對(duì)效率有了一定的要求,因此Spark就由此而生[3, 4]。

2 Hadoop

Hadoop作為最早的大數(shù)據(jù)處理框架,在大數(shù)據(jù)領(lǐng)域一直沿用至今,說明它有自身天然的優(yōu)點(diǎn)。Hadoop主要由MapReduce計(jì)算模型與HDFS存儲(chǔ)模型兩部分組成,優(yōu)點(diǎn)主要有低成本、高可靠、可擴(kuò)展等,低成本主要是因?yàn)镠adoop集群主要是部署在那些價(jià)格低廉的普通PC機(jī)上;Hadoop可以通過配置文件決定數(shù)據(jù)的存儲(chǔ)副本,當(dāng)由于某些原因?qū)е聰?shù)據(jù)丟失時(shí),Hadoop集群可以自動(dòng)恢復(fù),這個(gè)保證了它的高可靠性;可擴(kuò)展就是集群的節(jié)點(diǎn)可以根據(jù)實(shí)際需求不斷地?cái)U(kuò)展。相比優(yōu)點(diǎn),Hadoop的缺點(diǎn)也是非常明顯的,MapReduce計(jì)算模型是一種基于數(shù)據(jù)集的計(jì)算模型,它的數(shù)據(jù)輸入輸出方式是從物理存儲(chǔ)上加載數(shù)據(jù),然后操作數(shù)據(jù),最后再寫入物理存儲(chǔ)設(shè)備,如果有一個(gè)復(fù)雜的作業(yè),這樣頻繁的磁盤寫入寫出會(huì)使得效率特別的低,甚至導(dǎo)致作業(yè)執(zhí)行失敗。因此,Hadoop主要應(yīng)用在那些對(duì)效率要求不高的批處理作業(yè)。

2.1 Hadoop1.0

Hadoop 1.0指的是版本為Apache Hadoop 0.20.x、1.x或者CDH3系列的Hadoop,由分布式存儲(chǔ)系統(tǒng)HDFS和分布式計(jì)算模型MapReduce組成,其中HDFS由一個(gè)管理節(jié)點(diǎn)NameNode和多個(gè)物理存儲(chǔ)節(jié)點(diǎn)DataNode組成,MapReduce由一個(gè)JobTracker和多個(gè)TaskTracker組成[5]。

2.1.1 MapReduce計(jì)算模型

在Hadoop1.0中,MapReduce由兩個(gè)階段組成:Map階段和Reduce階段,對(duì)于一個(gè)作業(yè),不管其簡(jiǎn)單或復(fù)雜,都可以將其轉(zhuǎn)換為一個(gè)或多個(gè)MapReduce來完成。一次MapReduce需要從物理存儲(chǔ)設(shè)備進(jìn)行一次讀出寫入,MapReduce由map()和reduce()兩個(gè)函數(shù)組成,map()函數(shù)以key-value的格式從物理存儲(chǔ)設(shè)備上讀入源文件,并以key-value的格式輸出,reduce()函數(shù)以同樣的形式從map()函數(shù)中讀取數(shù)據(jù),并最終將處理后的數(shù)據(jù)以key-value的格式將數(shù)據(jù)寫入到物理存儲(chǔ)設(shè)備,這里所說的物理存儲(chǔ)設(shè)備就是隨后要說的分布式文件系統(tǒng)HDFS[6-8]。

如圖1是Hadoop1.0中MapReduce計(jì)算模型的整體框架圖:

2.1.2 HDFS分布式存儲(chǔ)系統(tǒng)

分布式文件系統(tǒng)HDFS是Hadoop大數(shù)據(jù)計(jì)算框架的一個(gè)重要組成部分,在目前的大多數(shù)新出現(xiàn)的大數(shù)據(jù)框架中也沿用了HDFS這種價(jià)格低、可擴(kuò)展、高可靠的持久層工具。Hadoop1.0中,HDFS由一個(gè)NameNode管理節(jié)點(diǎn)和一個(gè)或多個(gè)DataNode存儲(chǔ)節(jié)點(diǎn)組成,NameNode節(jié)點(diǎn)是整個(gè)HDFS分布式文件系統(tǒng)的管理節(jié)點(diǎn),上面存儲(chǔ)著DataNode節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)的元數(shù)據(jù)信息,它接收用戶的請(qǐng)求,并向DataNode發(fā)出請(qǐng)求,完成相關(guān)操作;除此之外,它還保證了整個(gè)HDFS系統(tǒng)的高可靠性。HDFS中還有一個(gè)SecondaryNameNode節(jié)點(diǎn),它的主要作用是協(xié)助NameNode節(jié)點(diǎn),來完成將用戶修改內(nèi)容保存到磁盤中[9]。

2.2 Hadoop2.0

Hadoop 2.0指的是版本為Apache Hadoop 0.23.x、2.x或者CDH4系列的Hadoop,主要由分布式文件系統(tǒng)HDFS、計(jì)算模型MapReduce和資源管理器YARN三個(gè)部分組成,Hadoop2.0的出現(xiàn)改善了Hadoop1.0中存在的一些問題,使得Hadoop大數(shù)據(jù)框架更加完善,這也是Hadoop框架沿用至今的原因[10]。

2.2.1 Hadoop1.0存在的問題

在Hadoop1.0中,HDFS只有一個(gè)NameNode節(jié)點(diǎn),對(duì)于Hadoop集群來說,NameNode管理著整個(gè)文件系統(tǒng),如果由于一些原因使得NameNode掛掉的話,整個(gè)HDFS分布式文件系統(tǒng)就會(huì)徹底癱瘓了,這就是Hadoop1.0中存在的NameNode單點(diǎn)故障問題;NameNode是整個(gè)HDFS分布式文件系統(tǒng)的管理節(jié)點(diǎn),負(fù)責(zé)與用戶的交互,它里面存儲(chǔ)著整個(gè)文件系統(tǒng)的元數(shù)據(jù)信息,隨著互聯(lián)網(wǎng)時(shí)代的快速發(fā)展,數(shù)據(jù)的產(chǎn)生量也日益增長(zhǎng),這也使得集群的規(guī)模不斷擴(kuò)大,當(dāng)我們的NameNode無法在內(nèi)存中加載全部元數(shù)據(jù)信息的時(shí)候,集群也就會(huì)出現(xiàn)各種各樣的問題,我們將這條概括為NameNode的內(nèi)存容量不足的問題;MapReduce1.0中采用基于slot的粗粒度的資源分配模型,分為Map slot和Reduce slot,而且這兩者是不可以相互共享的,我們都知道MapReduce作業(yè)是有先后順序的,因此在執(zhí)行Map步驟時(shí),Reduce slot資源是閑置的,相反,在執(zhí)行Reduce步驟時(shí),Map slot又是閑置的,這樣就使得資源利用率低,造成資源浪費(fèi);對(duì)于Hadoop1.0,MapReduce中JobTracker職責(zé)過多,既需要分配資源,又需要跟蹤監(jiān)控每一個(gè)Job下的tasks的運(yùn)行情況,這往往造成了內(nèi)存以及資源的極大浪費(fèi),對(duì)于實(shí)時(shí)性的作業(yè)和批處理作業(yè),在Hadoop1.0中需要搭建不同的集群環(huán)境,每個(gè)集群環(huán)境運(yùn)行不同的作業(yè)類型,這往往導(dǎo)致了集群的資源利用率并不高,在實(shí)際的業(yè)務(wù)中,MapReduce處理的主要業(yè)務(wù)為有些延遲的批處理的作業(yè),也就是說由于1.0中MapReduce的設(shè)計(jì)導(dǎo)致集群資源利用率并不高。

2.2.2 內(nèi)存限制問題的解決

針對(duì)Hadoop1.0中單個(gè)NameNode存在內(nèi)存壽險(xiǎn)的問題,在Hadoop2.0中提出NameNode聯(lián)邦的概念,也就是NameNode Federation,這樣原來由一個(gè)NameNode管理的系統(tǒng),現(xiàn)在由多個(gè)NameNode來管理,不僅解決了內(nèi)存限制問題,也使得數(shù)據(jù)的安全性進(jìn)一步得到保證[11]。

2.2.3 單點(diǎn)故障問題的解決

針對(duì)1.0中NameNode的單點(diǎn)故障問題,在2.0中引入了新的HA機(jī)制:即如果Active的NameNode節(jié)點(diǎn)掛掉,處于Standy的NameNode節(jié)點(diǎn)將替換掉它繼續(xù)工作[12]。

2.3 新一代資源管理框架Yarn

Yarn是Hadoop2.0中的資源管理系統(tǒng),它是一個(gè)通用的資源管理模塊,可為各類應(yīng)用程序進(jìn)行資源管理和調(diào)度。Yarn不僅限于MapReduce一種框架的使用,也可以供其他框架使用,比如Tez、Spark、Storm等,它的引入大大提高了集群的利用率[13, 14]。

2.3.1 Yarn產(chǎn)生的背景

針對(duì)MapReduce1.0中出現(xiàn)的資源利用率低和集群擴(kuò)展性差的問題,在Hadoop2.0中引入了Yarn來替代JobTracker,將它原有的資源管理和任務(wù)調(diào)度分別由ResourceManager、ApplicationMaster這兩個(gè)工具來分擔(dān)[15, 16]。

2.3.2 YARN的基本組成

Yarn的整體結(jié)構(gòu)延續(xù)了Hadoop生態(tài)圈一貫的風(fēng)格,仍然采用的是主從結(jié)構(gòu),下面是它的組件及功能:

(1)ResourceManager充當(dāng)master的角色,負(fù)責(zé)整個(gè)集群的資源管理和調(diào)度以及ApplicationMaster的啟動(dòng);

(2)NodeManager充當(dāng)slave的角色,負(fù)責(zé)單個(gè)從節(jié)點(diǎn)的資源管理和任務(wù)執(zhí)行;

(3)ApplicationMaster是對(duì)于每個(gè)App而言的,負(fù)責(zé)應(yīng)用程序執(zhí)行時(shí)的資源獲取以及任務(wù)分配;

(4)Container是Yarn中的資源的抽象,它是對(duì)Hadoop1.0中slot的改進(jìn),它封裝了集群中的多維度資源,例如內(nèi)存、CPU、磁盤、網(wǎng)絡(luò)等。

如圖5所示,是Yarn的整體框架圖:

3 Spark大數(shù)據(jù)計(jì)算模型

Apache Spark是在Hadoop MapReduce計(jì)算模型基礎(chǔ)上發(fā)展而來的一種基于內(nèi)存的大數(shù)據(jù)計(jì)算框架[2, 17]。

3.1 Spark計(jì)算模型產(chǎn)生的背景

Spark的出現(xiàn)是為了改善Hadoop MapReduce在實(shí)際應(yīng)用中出現(xiàn)的這樣或那樣的問題,MapReduce在執(zhí)行一個(gè)App時(shí),既要寫Map,又要寫Reduce和驅(qū)動(dòng)類,當(dāng)需求發(fā)生變動(dòng)時(shí)需要大規(guī)模修改代碼;MapReduce基于進(jìn)程,進(jìn)程的啟動(dòng)和銷毀要花費(fèi)時(shí)間;頻繁的寫入寫出磁盤,不適合做迭代處理;每個(gè)階段都必須排序;只適合離線計(jì)算,不適合做實(shí)時(shí)處理。

3.2 Spark快的原因

Spark是基于內(nèi)存的計(jì)算模型,有一個(gè)誤區(qū),Spark 是基于內(nèi)存的計(jì)算,所以快,這不是主要原因,Spark在其他方面的優(yōu)化也起到了很大的作用。

3.2.1 基于內(nèi)存的計(jì)算模型

Spark與MapReduce計(jì)算模型在執(zhí)行任務(wù)計(jì)算時(shí)都是在內(nèi)存中進(jìn)行的,區(qū)別是Spark會(huì)將作業(yè)執(zhí)行時(shí)的中間數(shù)據(jù)緩存到內(nèi)存中,而MapReduce是將中間數(shù)據(jù)持久化的磁盤中,在一個(gè)基于大數(shù)據(jù)平臺(tái)計(jì)算的作業(yè),巨大的數(shù)據(jù)量從內(nèi)存中讀取與從磁盤中讀取,對(duì)于速度來說完全不是一個(gè)等級(jí)的[18]。

3.2.2 DAG計(jì)算模型更加高效

Spark將每個(gè)作業(yè)都抽象為一個(gè)DAG圖,通過DAG,Spark可以對(duì)整個(gè)作業(yè)的計(jì)算流程進(jìn)行優(yōu)化,對(duì)于不需要進(jìn)行shuffle的計(jì)算,可以進(jìn)行操作合并;對(duì)于shuffle操作,在DAG內(nèi)部進(jìn)行了stage的劃分,這樣使得資源的使用更加高效合理,避免了因?yàn)橘Y源等待造成的效率上的降低[19, 20]。

3.2.3 基于粗粒度的資源調(diào)度

在資源申請(qǐng)和調(diào)度方面,Spark是基于粗粒度的,而Mapreduce是基于細(xì)粒度的。Spark的粗粒度資源申請(qǐng)是在App執(zhí)行完之前就將所有資源申請(qǐng)完畢了,task執(zhí)行時(shí)不需要自己去申請(qǐng)資源,這樣task執(zhí)行的相對(duì)較快,整體的速度也提高了;MapReduce的細(xì)粒度資源申請(qǐng)一開始不會(huì)將資源申請(qǐng)完畢,而是由task執(zhí)行時(shí),自己申請(qǐng)資源,task執(zhí)行完畢后資源立即釋放,這樣task執(zhí)行的較慢,整體的速度也就相對(duì)較慢。

3.2.4 JVM優(yōu)化

在MapReduce計(jì)算模型中,每啟動(dòng)一個(gè)task便會(huì)啟動(dòng)一次JVM,也就是啟動(dòng)了一個(gè)進(jìn)程;而Spark是將一個(gè)TaskSet提交給Executor執(zhí)行的,啟動(dòng)一個(gè)Executor時(shí)啟動(dòng)了一次JVM,在Executor維護(hù)這一個(gè)線程池,每個(gè)task是交給一個(gè)線程執(zhí)行的。每次啟動(dòng)JVM時(shí)就需要幾秒到幾十秒的時(shí)間,那么在大多數(shù)大數(shù)據(jù)平臺(tái)下的作業(yè)中,task的數(shù)量是很多的,這樣在效率上這兩種計(jì)算模型就會(huì)差很多。

4 結(jié)論

目前大數(shù)據(jù)技術(shù)在各個(gè)領(lǐng)域已經(jīng)有了具體的應(yīng)用,經(jīng)過這么多年技術(shù)的不斷發(fā)展與進(jìn)步,大數(shù)據(jù)技術(shù)已經(jīng)有了很大的改善。本文主要以Hadoop與Spark兩種大數(shù)據(jù)技術(shù)為代表,介紹了它們之間的相互聯(lián)系以及它們的發(fā)展歷程,使我們可以清楚地看到技術(shù)發(fā)展的一個(gè)歷程。但是,隨著社會(huì)的發(fā)展和新鮮事物的不斷涌出,新的大數(shù)據(jù)技術(shù)難題會(huì)不斷出現(xiàn),新的技術(shù)也會(huì)不斷產(chǎn)生。相信在未來的生活中,大數(shù)據(jù)技術(shù)會(huì)為人類創(chuàng)造出更多的財(cái)富。

參考文獻(xiàn):

[1] 周敏奇, 王曉玲, 金澈清, 等. Hadoop權(quán)威指南[M]. 清華大學(xué)出版社, 2011.

[2] 王磊, 時(shí)亞文. 基于Spark的大數(shù)據(jù)計(jì)算模型[J]. 電腦知識(shí)與技術(shù), 2016,12(20):7-8.

[3] 郝樹魁. Hadoop HDFS和MapReduce架構(gòu)淺析[J]. 郵電設(shè)計(jì)技術(shù), 2012(7):37-42.

[4] White T. Hadoop: The Definitive Guide[M]. 2011.

[5] 堯煒, 馬又良. 淺析Hadoop 1.0與2.0設(shè)計(jì)原理[J]. 郵電設(shè)計(jì)技術(shù), 2014(7):37-42.

[6] DEAN, Jeffrey, GHEMAWAT, et al. MapReduce: A Flexible Data Processing Tool[J]. Communications of the Acm, 2010,53(1):72-77.

[7] 董西成. 深入解析MapReduce架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理[M]. 機(jī)械工業(yè)出版社, 2013.

[8] 金偉健, 王春枝. 適于進(jìn)化算法的迭代式MapReduce框架[J]. 計(jì)算機(jī)應(yīng)用, 2013,33(12):3591-3595.

[9] Liu J, Li B, Song M. THE optimization of HDFS based on small files: IEEE International Conference on Broadband Network & Multimedia Technology, 2011[C].

[10] Thusoo A, Sarma J S, Jain N, et al. Hive - a petabyte scale data warehouse using Hadoop: IEEE International Conference on Data Engineering, 2010[C].

[11] Mackey G, Sehrish S, Wang J. Improving metadata management for small files in HDFS: IEEE International Conference on Cluster Computing & Workshops, 2009[C].

[12] 蔡斌, 陳湘萍. 深入解析Hadoop Common和HDFS架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理[M]. 機(jī)械工業(yè)出版社, 2013.

[13] Murthy A. Apache Hadoop YARN: Moving Beyond MapReduce and Batch Processing with Apache Hadoop 2, 2014[C].

[14] 周維. Hadoop 2.0-YARN核心技術(shù)實(shí)踐[M]. 清華大學(xué)出版社, 2015.

[15] 董春濤, 李文婷, 沈晴霓, 等. Hadoop YARN大數(shù)據(jù)計(jì)算框架及其資源調(diào)度機(jī)制研究[J]. 信息通信技術(shù), 2015(1):77-84.

[16] 董西成. Hadoop技術(shù)內(nèi)幕:深入解析YARN架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理[M]. 機(jī)械工業(yè)出版社, 2013.

[17] Zaharia M, Chowdhury M, Franklin M J, et al. Spark: cluster computing with working sets: Usenix Conference on Hot Topics in Cloud Computing[C], 2010.

[18] 孟紅濤, 余松平, 劉芳, 等. Spark內(nèi)存管理及緩存策略研究[J]. 計(jì)算機(jī)科學(xué), 2017,44(6):31-35.

[19] 廖彬, 張?zhí)眨?于炯, 等. Spark DAG優(yōu)化MapReduce協(xié)同過濾算法[J]. 中山大學(xué)學(xué)報(bào)(自然科學(xué)版), 2017,56(3):46-56.

[20] 殷榮. 基于DAG模型的離線數(shù)據(jù)處理引擎的設(shè)計(jì)與實(shí)現(xiàn)[D]. 哈爾濱工業(yè)大學(xué), 2016.

【通聯(lián)編輯:梁書】

猜你喜歡
大數(shù)據(jù)技術(shù)大數(shù)據(jù)
論大數(shù)據(jù)技術(shù)在智能電網(wǎng)中的應(yīng)用
高校檔案管理信息服務(wù)中大數(shù)據(jù)技術(shù)的應(yīng)用
大數(shù)據(jù)技術(shù)在電氣工程中的應(yīng)用探討
大數(shù)據(jù)技術(shù)在商業(yè)銀行中的應(yīng)用分析
基于大數(shù)據(jù)背景下的智慧城市建設(shè)研究
科技視界(2016年20期)2016-09-29 10:53:22
彝良县| 齐河县| 德保县| 宣武区| 永德县| 临泽县| 南宫市| 临漳县| 井研县| 平湖市| 新津县| 襄城县| 德令哈市| 安岳县| 阿拉善右旗| 乌拉特后旗| 衡东县| 白沙| 辉南县| 武冈市| 安阳县| 龙川县| 夏邑县| 蚌埠市| 苏尼特左旗| 中牟县| 许昌市| 霸州市| 南华县| 湖北省| 勐海县| 巴东县| 三明市| 特克斯县| 沙田区| 金乡县| 大同县| 奉新县| 临夏市| 台中市| 甘谷县|