版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章初識(shí)Hadoop《Hadoop大數(shù)據(jù)原理與應(yīng)用》西安電子科技大學(xué)出版社【知識(shí)與能力要求】第2章初識(shí)Hadoop2.1Hadoop概述2.2Hadoop生態(tài)系統(tǒng)2.3Hadoop體系架構(gòu)2.4Hadoop應(yīng)用現(xiàn)狀2.5部署和運(yùn)行Hadoop2.1Hadoop概述ApacheHadoop于2008年1月成為Apache頂級(jí)項(xiàng)目。Hadoop是一個(gè)開源的、可運(yùn)行于大規(guī)模集群上的分布式存儲(chǔ)和計(jì)算的軟件框架,它具有高可靠、彈性可擴(kuò)展等特點(diǎn),非常適合處理海量數(shù)據(jù)。Hadoop實(shí)現(xiàn)了分布式文件系統(tǒng)HDFS和分布式計(jì)算框架MapReduce等功能,被公認(rèn)為行業(yè)大數(shù)據(jù)標(biāo)準(zhǔn)軟件,在業(yè)內(nèi)得到了廣泛應(yīng)用。2.1.1Hadoop簡介Hadoop是Apache基金會(huì)旗下的一個(gè)可靠的、可擴(kuò)展的分布式計(jì)算開源軟件框架,為用戶提供了系統(tǒng)底層透明的分布式基礎(chǔ)架構(gòu)。Hadoop基于Java語言開發(fā),具有很好的跨平臺(tái)特性,它允許用戶使用簡單的編程模型在廉價(jià)的計(jì)算機(jī)集群上對(duì)大規(guī)模數(shù)據(jù)集進(jìn)行分布式處理。Hadoop旨在從單一服務(wù)器擴(kuò)展到成千上萬臺(tái)機(jī)器,每臺(tái)機(jī)器都提供本地計(jì)算和存儲(chǔ),且將數(shù)據(jù)備份在多個(gè)節(jié)點(diǎn)上,由此來提升集群的高可用性,而不是通過硬件提升,當(dāng)一臺(tái)機(jī)器宕機(jī)時(shí),其它節(jié)點(diǎn)依然可以提供數(shù)據(jù)和計(jì)算服務(wù)。2.1.1Hadoop簡介第一代Hadoop(即Hadoop1.0)的核心由分布式文件系統(tǒng)HDFS和分布式計(jì)算框架MapReduce組成,為了克服Hadoop1.0中HDFS和MapReduce的架構(gòu)設(shè)計(jì)和應(yīng)用性能方面的各種問題,提出了第二代Hadoop(即Hadoop2.0),Hadoop2.0的核心包括分布式文件系統(tǒng)HDFS、統(tǒng)一資源管理和調(diào)度框架YARN和分布式計(jì)算框架MapReduce。2.1.1Hadoop簡介HDFS是谷歌文件系統(tǒng)GFS的開源實(shí)現(xiàn),是面向普通硬件環(huán)境的分布式文件系統(tǒng),適用于大數(shù)據(jù)場景的數(shù)據(jù)存儲(chǔ),提供了高可靠、高擴(kuò)展、高吞吐率的數(shù)據(jù)存儲(chǔ)服務(wù)。MapReduce是谷歌MapReduce的開源實(shí)現(xiàn),是一種簡化的分布式應(yīng)用程序開發(fā)的編程模型,允許開發(fā)人員在不了解分布式系統(tǒng)底層細(xì)節(jié)和缺少并行應(yīng)用開發(fā)經(jīng)驗(yàn)的情況下,能快速輕松地編寫出分布式并行程序,將其運(yùn)行于計(jì)算機(jī)集群上,完成對(duì)大規(guī)模數(shù)據(jù)集的存儲(chǔ)和計(jì)算。YARN是將MapReduce1.0中JobTracker的資源管理功能單獨(dú)剝離出來而形成,它是一個(gè)純粹的資源管理和調(diào)度框架,并解決了Hadoop1.0中只能運(yùn)行MapReduce框架的限制,可在YARN上運(yùn)行各種不同類型計(jì)算框架包括MapReduce、Spark、Storm等。2.1.2Hadoop發(fā)展簡史Hadoop這個(gè)名字不是單詞縮寫,Hadoop之父道格?卡?。―ougCutting)曾這樣解釋Hadoop名字的由來:“這個(gè)名字是我的孩子給一個(gè)棕黃色的大象玩具的取的名字。我的命名標(biāo)準(zhǔn)就是簡短,容易發(fā)音和拼寫,并且不會(huì)被用于別處。小孩子恰恰是這方面的高手?!?.1.2Hadoop發(fā)展簡史Hadoop起源于開源的網(wǎng)絡(luò)搜索引擎ApacheNutch,它本身是Lucence項(xiàng)目的一部分。Nutch項(xiàng)目開始于2002年,一個(gè)可以代替當(dāng)時(shí)主流搜索產(chǎn)品的開源搜索引擎。但后來,它的創(chuàng)造者DougCutting和MikeCafarella遇到了棘手難題,該搜索引擎框架只能支持幾億數(shù)據(jù)的抓取、索引和搜索,無法擴(kuò)展到擁有數(shù)十億網(wǎng)頁的網(wǎng)絡(luò)。2003年,Google發(fā)表了論文“TheGoogleFileSystem”,可以解決大規(guī)模數(shù)據(jù)存儲(chǔ)的問題。于是在2004年,Nutch項(xiàng)目借鑒谷歌GFS使用Java語言開發(fā)了自己的分布式文件系統(tǒng),即Nutch分布式文件系統(tǒng)NDFS,也就是HDFS的前身。2.1.2Hadoop發(fā)展簡史2004年,Google又發(fā)表了一篇具有深遠(yuǎn)影響的論文“MapReduce:SimplifedDataProcessingonLargeClusters”,闡述了MapReduce分布式編程思想。Nutch開發(fā)者們發(fā)現(xiàn)GoogleMapReduce所解決的大規(guī)模搜索引擎數(shù)據(jù)處理問題,正是他們當(dāng)時(shí)面臨并亟待解決的難題。于是,Nutch開發(fā)者們模仿GoogleMapReduce框架設(shè)計(jì)思路,使用Java語言設(shè)計(jì)并2005年初開源實(shí)現(xiàn)了MapReduce。2006年2月,Nutch中的NDFS和MapReduce獨(dú)立出來,形成Lucence的子項(xiàng)目,并命名為Hadoop,同時(shí)DougCutting進(jìn)入雅虎,雅虎為此組織了專門的團(tuán)隊(duì)和資源,致力于將Hadoop發(fā)展成為能夠處理海量Web數(shù)據(jù)的分布式系統(tǒng)。2.1.2Hadoop發(fā)展簡史2007年,紐約時(shí)報(bào)把存檔報(bào)紙掃描版的4TB文件在100臺(tái)亞馬遜虛擬機(jī)服務(wù)器上使用Hadoop轉(zhuǎn)換為PDF格式,整個(gè)過程所花時(shí)間不到24小時(shí),這一事件更加深了人們對(duì)Hadoop的印象。2008年,Google工程師ChristopheBisciglia發(fā)現(xiàn)把當(dāng)時(shí)的Hadoop放到任意一個(gè)集群中去運(yùn)行是一件很困難的事,所以與好友Facebook的JeffHammerbacher、雅虎的AmrAwadallah、Oracle的MikeOlson成立了專門商業(yè)化Hadoop的公司Cloudera。2008年1月,Hadoop成為Apache頂級(jí)項(xiàng)目。2.1.2Hadoop發(fā)展簡史2008年4月,Hadoop打破世界紀(jì)錄,成為最快的TB級(jí)數(shù)據(jù)排序系統(tǒng)。在一個(gè)910節(jié)點(diǎn)的集群上,Hadoop在209秒內(nèi)完成了對(duì)1TB數(shù)據(jù)的排序,擊敗前一年的297秒冠軍。2009年4月,Hadoop對(duì)1TB數(shù)據(jù)進(jìn)行排序只花了62秒。2011年,雅虎將Hadoop團(tuán)隊(duì)獨(dú)立出來,由雅虎主導(dǎo)Hadoop開發(fā)的副總裁EricBladeschweiler帶領(lǐng)二十幾個(gè)核心成員成立子公司Hortonworks,專門提供Hadoop相關(guān)服務(wù)。成立3年就上市。同年12月,發(fā)布1.0.0版本,標(biāo)志著Hadoop已經(jīng)初具生產(chǎn)規(guī)模。2.1.2Hadoop發(fā)展簡史2012年,Hortonworks推出YARN框架第一版本,從此Hadoop的研究進(jìn)入一個(gè)新層面。2013年10月,發(fā)布2.2.0版本,Hadoop正式進(jìn)入2.x時(shí)代。2014年,Hadoop2.X更新速度非???,先后發(fā)布2.3.0、2.4.0、2.5.0和2.6.0,極大完善了YARN框架和整個(gè)集群的功能,很多Hadoop研發(fā)公司如Cloudera、Hortonworks都與其他企業(yè)合作共同開發(fā)Hadoop新功能。2015年4月,發(fā)布2.7.0版本。2.1.2Hadoop發(fā)展簡史2016年,Hadoop及其生態(tài)圈組件Spark等在各行各業(yè)落地并得到廣泛應(yīng)用,YARN持續(xù)發(fā)展以支持更多計(jì)算框架。同年9月,發(fā)布Hadoop3.0.0-alpha1版本,預(yù)示著Hadoop3.x時(shí)代的到來。2018年11月,發(fā)布Hadoop2.9.2,同年10月發(fā)布Ozone第一版0.2.1-alpha,Ozone是Hadoop的子項(xiàng)目,該項(xiàng)目提供了分布式對(duì)象存儲(chǔ),建立在Hadoop分布式數(shù)據(jù)存儲(chǔ)HDDS上。2019年1月,發(fā)布Hadoop3.2.0,發(fā)布Submarine第一版0.1.0,Submarine是Hadoop的子項(xiàng)目,該項(xiàng)目旨在資源管理平臺(tái)如YARN上運(yùn)行深度學(xué)習(xí)應(yīng)用程序如TensorFlow、PyTorch等。2.1.3Hadoop特點(diǎn)(1)高可靠性采用冗余數(shù)據(jù)存儲(chǔ)方式,即使一個(gè)副本發(fā)生故障,其它副本也可以保證正常對(duì)外提供服務(wù)。(2)高擴(kuò)展性Hadoop設(shè)計(jì)目標(biāo)是可以高效穩(wěn)定地運(yùn)行在廉價(jià)的計(jì)算機(jī)集群上,可以方便添加機(jī)器節(jié)點(diǎn),擴(kuò)展到數(shù)以千計(jì)的計(jì)算機(jī)節(jié)點(diǎn)上。(3)高效性作為分布式計(jì)算平臺(tái),能夠高效地處理PB級(jí)數(shù)據(jù)。(4)高容錯(cuò)性采用冗余數(shù)據(jù)存儲(chǔ)方式,自動(dòng)保存數(shù)據(jù)的多個(gè)副本,當(dāng)讀取該文檔出錯(cuò)或者某一臺(tái)機(jī)器宕機(jī),系統(tǒng)會(huì)調(diào)用其它節(jié)點(diǎn)上的備份文件,保證程序順利運(yùn)行。2.1.3Hadoop特點(diǎn)(5)低成本Hadoop是開源的,即不需要支付任何費(fèi)用即可下載安裝使用。另外,Hadoop集群可以部署在普通機(jī)器上,而不需要部署在價(jià)格昂貴的小型機(jī)上,能夠大大減少公司的運(yùn)營成本。(6)支持多種平臺(tái)Hadoop支持Windows和GNU/Linux兩類運(yùn)行平臺(tái),Hadoop是基于Java語言開發(fā)的,因此其最佳運(yùn)行環(huán)境無疑是Linux,Linux的發(fā)行版本眾多,常見的有CentOS、Ubuntu、RedHat、Debian、Fedora、SUSE、openSUSE等。(7)支持多種編程語言Hadoop上的應(yīng)用程序可以使用Java、C++編寫。2.1.4Hadoop版本Hadoop的發(fā)行版本有兩類,一類是由社區(qū)維護(hù)的免費(fèi)開源的ApacheHadoop,另一類是一些商業(yè)公司如Cloudera、Hortonworks、MapR等推出的Hadoop商業(yè)版。2.1.4Hadoop版本ApacheHadoop版本分為三代,分別稱為Hadoop1.0、Hadoop2.0、Hadoop3.0。第一代Hadoop包含0.20.x、0.21.x和0.22.x三大版本,其中,0.20.x最后演化成1.0.x,變成了穩(wěn)定版,而0.21.x和0.22.x則增加了HDFSNameNodeHA等重要新特性。第二代Hadoop包含0.23.x和2.x兩大版本,它們完全不同于Hadoop1.0,是一套全新的架構(gòu),均包含HDFSFederation和YARN兩個(gè)系統(tǒng),相比于0.23.x,2.x增加了NameNodeHA和Wire-compatibility兩個(gè)重大特,需要注意的是,Hadoop2.0主要由Yahoo獨(dú)立出來的Hortonworks公司主持開發(fā)。與Hadoop2.0相比,Hadoop3.0具有許多重要的增強(qiáng)功能,包括HDFS可擦除編碼,YARN時(shí)間軸服務(wù)v.2,支持2個(gè)以上的NameNode,支持MicrosoftAzureDataLake和AliyunObjectStorageSystem文件系統(tǒng)連接器,并服務(wù)于深度學(xué)習(xí)用例和長期運(yùn)行的應(yīng)用等重要功能,新增的組件HadoopSubmarine使數(shù)據(jù)工程師能夠在同一個(gè)HadoopYARN集群上輕松開發(fā)、訓(xùn)練和部署深度學(xué)習(xí)模型。2.1.4Hadoop版本Hadoop商業(yè)版主要是提供對(duì)各項(xiàng)服務(wù)的支持,高級(jí)功能要收取一定費(fèi)用,這對(duì)一些研發(fā)能力不太強(qiáng)的企業(yè)來說是非常有利的,公司只要出一定的費(fèi)用就能使用到一些高級(jí)功能,每個(gè)發(fā)行版都有自己的特點(diǎn)。(1)ClouderaDistributionHadoop(CDH)ClouderaCDH版本的Hadoop是現(xiàn)在國內(nèi)公司使用最多的。其優(yōu)點(diǎn)為ClouderaManager(簡稱CM)配置簡單,升級(jí)方便,資源分配設(shè)置方便,非常有利于整合Impala,官方文檔詳細(xì),與Spark整合非常好。在CM基礎(chǔ)上,我們通過頁面就能完成對(duì)Hadoop生態(tài)系統(tǒng)各種環(huán)境的安裝、配置和升級(jí)。其缺點(diǎn)為CM不開源,Hadoop某些功能與社區(qū)版有出入。目前,CDH的最新版本為CDH5和CDH6,讀者可到官網(wǎng)獲取更多信息。(2)HortonworksDataPlatform(HDP)HortonworksHDP優(yōu)點(diǎn)為原裝Hadoop、純開源,版本與社區(qū)版一致,支持Tez,集成開源監(jiān)控方案Ganglia和Nagios;缺點(diǎn)為安裝、升級(jí)、添加節(jié)點(diǎn)、刪除節(jié)點(diǎn)比較麻煩。目前,HDP的最新版本為HDP2和HDP3,讀者可到官網(wǎng)獲取更多信息。2.2Hadoop生態(tài)系統(tǒng)Hadoop2.0主要由三部分構(gòu)成:分布式文件系統(tǒng)HDFS、統(tǒng)一資源管理和調(diào)度框架YARN、分布式計(jì)算框架MapReduce;但廣義上來講,Hadoop是指以Hadoop為基礎(chǔ)的生態(tài)系統(tǒng),是一個(gè)龐大體系,Hadoop僅是其中最基礎(chǔ)、最重要的部分,生態(tài)系統(tǒng)中每個(gè)組件只負(fù)責(zé)解決某一特定問題。HiveMapReduceSparkImpalaZooKeeperKafkaFlumeYARNHDFSCommonPigMahoutSparkSQLSqoopHBaseAmbari1.HadoopCommonHadoopCommon是Hadoop體系中最底層的一個(gè)模塊,為Hadoop各子項(xiàng)目提供各種工具,如系統(tǒng)配置工具Configuration、遠(yuǎn)程過程調(diào)用RPC、序列化機(jī)制和日志操作,是其他模塊的基礎(chǔ)。2.HDFSHDFS(HadoopDistributedFileSystem)是Hadoop分布式文件系統(tǒng),是Hadoop三大核心之一,是針對(duì)谷歌文件系統(tǒng)GFS(GoogleFileSystem)的開源實(shí)現(xiàn)(TheGoogleFileSystem,2003)。HDFS是一個(gè)具有高容錯(cuò)性的文件系統(tǒng),適合部署在廉價(jià)的機(jī)器上,HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。大數(shù)據(jù)處理框架如MapReduce、Spark等要處理的數(shù)據(jù)源大部分都存儲(chǔ)在HDFS上,Hive、HBase等框架的數(shù)據(jù)通常也存儲(chǔ)在HDFS上。簡而言之,HDFS為大數(shù)據(jù)的存儲(chǔ)提供了保障。3.YARNYARN(YetAnotherResourceNegotiator)是統(tǒng)一資源管理和調(diào)度框架,它解決了Hadoop1.0資源利用率低和不能兼容異構(gòu)計(jì)算框架等多種問題,它提供了資源隔離方案和雙調(diào)度器的實(shí)現(xiàn),可在YARN上運(yùn)行各種不同類型計(jì)算框架包括MapReduce、Spark、Storm、Tez等。HadoopMapReduce是一個(gè)分布式的、并行處理的編程模型,是針對(duì)GoogleMapReduce的開源實(shí)現(xiàn)(MapReduce:SimplifiedDataProcessingonLargeClusters,2004)。開發(fā)人員可以在不了解分布式系統(tǒng)底層設(shè)計(jì)原理和缺少并行應(yīng)用開發(fā)經(jīng)驗(yàn)的情況下,就能使用MapReduce計(jì)算框架快速輕松地編寫出分布式并行程序,完成對(duì)大規(guī)模數(shù)據(jù)集(大于1TB)的并行計(jì)算。MapReduce利用函數(shù)式編程思想,將復(fù)雜的、運(yùn)行于大規(guī)模集群上的并行計(jì)算過程高度抽象為兩個(gè)函數(shù):Map和Reduce,其中Map是對(duì)可以并行處理的小數(shù)據(jù)集進(jìn)行本地計(jì)算并輸出中間結(jié)果,Reduce是對(duì)各個(gè)Map的輸出結(jié)果進(jìn)行匯總計(jì)算得到最終結(jié)果。4.MapReduce5.SparkSpark是加州伯克利大學(xué)AMP實(shí)驗(yàn)室開發(fā)的新一代計(jì)算框架,對(duì)迭代計(jì)算很有優(yōu)勢(shì),和MapReduce計(jì)算框架相比性能提升明顯,并且都可以與YARN進(jìn)行集成。6.HBaseHBase是一個(gè)分布式的、面向列族的開源數(shù)據(jù)庫,一般采用HDFS作為底層存儲(chǔ)。HBase是針對(duì)GoogleBigtable的開源實(shí)現(xiàn)(Bigtable:ADistributedStorageSystemforStructuredData,2006),二者采用相同數(shù)據(jù)模型,具有強(qiáng)大的非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)能力。HBase使用ZooKeeper進(jìn)行管理,它保障查詢速度的一個(gè)關(guān)鍵因素就是RowKey的設(shè)計(jì)是否合理。7.ZooKeeperZooKeeper是GoogleChubby的開源實(shí)現(xiàn),是一個(gè)分布式的、開放源碼的分布式應(yīng)用程序協(xié)調(diào)框架,為大型分布式系統(tǒng)提供了高效且可靠的分布式協(xié)調(diào)服務(wù),提供了諸如統(tǒng)一命名服務(wù)、配置管理、分布式鎖等分布式基礎(chǔ)服務(wù),并廣泛應(yīng)用于大型分布式系統(tǒng)如Hadoop、HBase、Kafka等開源系統(tǒng),例如HDFSNameNodeHA自動(dòng)切換、HBase高可用、SparkStandalone模式下MasterHA機(jī)制都是通過ZooKeeper來實(shí)現(xiàn)的。8.HiveHive是一個(gè)基于Hadoop的數(shù)據(jù)倉庫工具,最早由Facebook開發(fā)并使用。Hive讓不熟悉MapReduce的開發(fā)人員直接編寫SQL語句來實(shí)現(xiàn)對(duì)大規(guī)模數(shù)據(jù)的統(tǒng)計(jì)分析操作,Hive可以將SQL語句轉(zhuǎn)換為MapReduce作業(yè),并提交到Hadoop集群上運(yùn)行。Hive大大降低了學(xué)習(xí)門檻,同時(shí)也提升了開發(fā)效率。9.PigPig與Hive類似,也是對(duì)大型數(shù)據(jù)集進(jìn)行分析和評(píng)估的工具,不過與Hive提供SQL接口不同的是,它提供了一種高層的、面向領(lǐng)域的抽象語言PigLatin,和SQL相比,PigLatin更加靈活,但學(xué)習(xí)成本稍高。10.ImpalaImpala由Cloudera公司開發(fā),提供了與存儲(chǔ)在HDFS、HBase上的海量數(shù)據(jù)進(jìn)行交互式查詢的SQL接口,其優(yōu)點(diǎn)是查詢非常迅速,其性能大幅領(lǐng)先于Hive,Impala并沒有基于MapReduce計(jì)算框架,這也是Impala可以大幅領(lǐng)先Hive的原因。11.MahoutMahout是一個(gè)機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘庫,它包含許多實(shí)現(xiàn),包括聚類、分類、推薦過濾等。12.FlumeFlume是由Cloudera提供的一個(gè)高可用、高可靠、分布式的海量日志采集、聚合和傳輸?shù)目蚣堋lume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù),同時(shí),F(xiàn)lume提供對(duì)數(shù)據(jù)進(jìn)行簡單處理并寫到各種數(shù)據(jù)接收方。13.SqoopSqoop是SQLtoHadoop的縮寫,主要用于關(guān)系數(shù)據(jù)庫和Hadoop之間的數(shù)據(jù)雙向交換。可以借助Sqoop完成關(guān)系型數(shù)據(jù)庫如MySQL、Oracle、PostgreSQL等到Hadoop生態(tài)系統(tǒng)中HDFS、HBase、Hive等的數(shù)據(jù)導(dǎo)入導(dǎo)出操作,整個(gè)導(dǎo)入導(dǎo)出過程都是由MapReduce計(jì)算框架實(shí)現(xiàn),非常高效。Sqoop項(xiàng)目開始于2009年,最早是作為Hadoop的一個(gè)第三方模塊存在,后來為了讓使用者能夠快速部署,也為了讓開發(fā)人員能夠更快速地迭代開發(fā),Sqoop就獨(dú)立成為一個(gè)Apache項(xiàng)目。14.KafkaKafka是一種高吞吐量的、分布式的發(fā)布訂閱消息系統(tǒng),可以處理消費(fèi)者在網(wǎng)站中的所有動(dòng)作流數(shù)據(jù)。Kafka最初由LinkedIn公司開發(fā),于2010年貢獻(xiàn)給Apache基金會(huì),并于2012年成為Apache頂級(jí)開源項(xiàng)目,它采用Scala和Java語言編寫,是一個(gè)分布式、支持分區(qū)的、多副本的、基于ZooKeeper協(xié)調(diào)的分布式消息系統(tǒng),它適合應(yīng)用于以下兩大類別場景:構(gòu)造實(shí)時(shí)流數(shù)據(jù)管道,在系統(tǒng)或應(yīng)用之間可靠地獲取數(shù)據(jù);構(gòu)建實(shí)時(shí)流式應(yīng)用程序,對(duì)這些流數(shù)據(jù)進(jìn)行轉(zhuǎn)換。15.AmbariApacheAmbari是一個(gè)基于Web的工具,支持ApacheHadoop集群的安裝、部署、配置和管理,目前已支持大多數(shù)Hadoop組件,包括HDFS、MapReduce、Hive、Pig、HBase、ZooKeeper、Oozie、Sqoop等。Ambari由Hortonworks主導(dǎo)開發(fā),具有Hadoop集群自動(dòng)化安裝、中心化管理、集群監(jiān)控、報(bào)警等功能,使得安裝集群從幾天縮短在幾小時(shí)以內(nèi),運(yùn)維人員也從數(shù)十人降低到幾人以內(nèi),極大的提高集群管理的效率。2.3Hadoop體系架構(gòu)Hadoop集群采用主從架構(gòu)(Master/Slave),NameNode與ResourceManager為Master,DataNode與NodeManager為Slaves,守護(hù)進(jìn)程N(yùn)ameNode和DataNode負(fù)責(zé)完成HDFS的工作,守護(hù)進(jìn)程ResourceManager和NodeManager則負(fù)責(zé)完成YARN的工作。NameNodeResourceManagerDataNodeNodeManagerDataNodeNodeManagerDataNodeNodeManager…2.4Hadoop應(yīng)用現(xiàn)狀1.Hadoop在雅虎2007年,雅虎在Sunnyvale總部建立M45——一個(gè)包含4000個(gè)處理器和1.5PB容量的Hadoop集群。此后,包括卡耐基梅隆大學(xué)、加州大學(xué)伯克利分校、康奈爾大學(xué)、馬薩諸塞大學(xué)阿默斯特分校、斯坦福大學(xué)、華盛頓大學(xué)、密歇根大學(xué)、普渡大學(xué)等12所大學(xué)加入該集群系統(tǒng)的研究,推動(dòng)了開放平臺(tái)下開放源碼的發(fā)布。目前,雅虎擁有全球最大的Hadoop集群,大約25000個(gè)節(jié)點(diǎn),主要用于支持廣告系統(tǒng)和網(wǎng)頁搜索。2.4Hadoop應(yīng)用現(xiàn)狀2.Hadoop在FacebookFacebook作為全球知名的社交網(wǎng)站,擁有超過3億的活躍用戶,其中約有3千萬用戶至少每天更新一次自己的狀態(tài);用戶每月總共上傳10億余張照片、1千萬個(gè)視頻;以及每周共享10億條內(nèi)容,包括日志、鏈接、新聞、微博等。因此Facebook需要存儲(chǔ)和處理的數(shù)據(jù)量是非常巨大的,每天新增加4TB壓縮后的數(shù)據(jù),掃描135TB大小的數(shù)據(jù),在集群上執(zhí)行Hive任務(wù)超過7500次,每小時(shí)需要進(jìn)行8萬次計(jì)算,所以高性能的云平臺(tái)對(duì)Facebook來說是非常重要的,而Facebook主要將Hadoop平臺(tái)用于日志處理、推薦系統(tǒng)和數(shù)據(jù)倉庫等方面。Facebook將數(shù)據(jù)存儲(chǔ)在利用Hadoop/Hive搭建的數(shù)據(jù)倉庫上,這個(gè)數(shù)據(jù)倉庫擁有4800個(gè)內(nèi)核,具有5.5PB的存儲(chǔ)量,每個(gè)節(jié)點(diǎn)可存儲(chǔ)12TB大小的數(shù)據(jù),同時(shí),它還具有兩層網(wǎng)絡(luò)拓?fù)?。Facebook中的MapReduce集群是動(dòng)態(tài)變化的,它基于負(fù)載情況和集群節(jié)點(diǎn)之間的配置信息可動(dòng)態(tài)調(diào)整。2.4Hadoop應(yīng)用現(xiàn)狀3.Hadoop在沃爾瑪全球最大連鎖超市沃爾瑪雖然十年前就投入了在線電子商務(wù),但在線銷售的營業(yè)收入遠(yuǎn)遠(yuǎn)落后于亞馬遜。后來,沃爾瑪采用Hadoop來分析顧客搜索商品的行為,以及用戶通過搜索引擎找到沃爾瑪網(wǎng)站的關(guān)鍵詞,再利用這些關(guān)鍵詞的分析結(jié)果挖掘顧客需求,以規(guī)劃下一季商品的促銷策略。沃爾瑪還分析顧客在Facebook、Twitter等社交網(wǎng)站上對(duì)商品的討論,期望能比競爭對(duì)手提前一步發(fā)現(xiàn)顧客需求。2.4Hadoop應(yīng)用現(xiàn)狀4.Hadoop在eBayeBay是全球最大的拍賣網(wǎng)站,8000萬用戶每天產(chǎn)生50TB數(shù)據(jù)量,僅存儲(chǔ)這些數(shù)據(jù)就是一大挑戰(zhàn),何況還要分析這些數(shù)據(jù)。eBay強(qiáng)調(diào),大數(shù)據(jù)分析面臨的最大挑戰(zhàn)就是要同時(shí)處理結(jié)構(gòu)化及非結(jié)構(gòu)化的數(shù)據(jù),eBay正是利用Hadoop解決了這一難題。eBay使用Hadoop拆解非結(jié)構(gòu)性巨量數(shù)據(jù),降低數(shù)據(jù)倉庫的負(fù)載,分析買賣雙方在網(wǎng)站上的行為。2.4Hadoop應(yīng)用現(xiàn)狀5.Hadoop在中國Hadoop在國內(nèi)的使用者主要以互聯(lián)網(wǎng)公司為主,國內(nèi)采用Hadoop的公司主要有百度、阿里巴巴、騰訊、華為、中國移動(dòng)等。作為全球最大的中文搜索引擎公司,百度對(duì)海量數(shù)據(jù)的存儲(chǔ)和處理要求是比較高的,要在線下對(duì)數(shù)據(jù)進(jìn)行分析,還要在規(guī)定的時(shí)間內(nèi)處理完并反饋到平臺(tái)上。因此,百度于2006年開始調(diào)研和使用Hadoop,主要用于日志的存儲(chǔ)和統(tǒng)計(jì),網(wǎng)頁數(shù)據(jù)的分析和挖掘,商業(yè)分析,在線數(shù)據(jù)反饋,用戶網(wǎng)頁聚類等。目前,百度擁有超過7個(gè)集群,單集群超過2800個(gè)機(jī)器節(jié)點(diǎn),Hadoop機(jī)器總數(shù)超過15000臺(tái)機(jī)器,總的存儲(chǔ)容量超過100PB,已經(jīng)使用的超過74PB,每天提交的作業(yè)數(shù)目超過6600個(gè),每天的輸入數(shù)據(jù)量已經(jīng)超過7500TB,輸出超過1700TB。阿里巴巴的Hadoop集群大約有3200臺(tái)服務(wù)器,物理CPU大約30000核心,總內(nèi)存100TB,總存儲(chǔ)容量超過60PB,每天的作業(yè)數(shù)目超過150000個(gè),每天Hive查詢大于6000個(gè),每天掃描數(shù)據(jù)量約為7.5PB,每天掃描文件數(shù)約為4億,存儲(chǔ)利用率大概為80%,CPU利用率平均65%,峰值可以達(dá)到80%。阿里的Hadoop集群擁有150個(gè)用戶組,4500個(gè)集群用戶,為淘寶、天貓、一淘、聚劃算、CBU、支付寶提供底層的基礎(chǔ)計(jì)算和存儲(chǔ)服務(wù)。2.4Hadoop應(yīng)用現(xiàn)狀5.Hadoop在中國騰訊也是使用Hadoop最早的中國互聯(lián)網(wǎng)公司之一,騰訊的Hadoop集群機(jī)器總量超過5000臺(tái),最大單集群約為2000個(gè)節(jié)點(diǎn),并利用ApacheHive構(gòu)建了自己的數(shù)據(jù)倉庫系統(tǒng)TDW,同時(shí)還開發(fā)了自己的TDW-IDE基礎(chǔ)開發(fā)環(huán)境,騰訊的Hadoop為騰訊各個(gè)產(chǎn)品線提供基礎(chǔ)云計(jì)算和云存儲(chǔ)服務(wù)。華為是Hadoop的使用者,也是Hadoop技術(shù)的重要貢獻(xiàn)者。Hortonworks公司曾發(fā)布一份報(bào)告,用于說明各公司對(duì)Hadoop發(fā)展的貢獻(xiàn),其中,華為也在其內(nèi),并排在Google和Cisco前面,華為在Hadoop的HA方案以及HBase領(lǐng)域有深入研究,并已經(jīng)向業(yè)界推出了自己的基于Hadoop的大數(shù)據(jù)解決方案。中國移動(dòng)于2010年5月正式推出大云BigCloud1.0,集群節(jié)點(diǎn)達(dá)到了1024個(gè)。中國移動(dòng)的大云基于HadoopMapReduce實(shí)現(xiàn)了分布式計(jì)算,基于HDFS實(shí)現(xiàn)了分布式存儲(chǔ),并開發(fā)了基于Hadoop的數(shù)據(jù)倉庫系統(tǒng)HugeTable、并行數(shù)據(jù)挖掘工具集BC-PDM、并行數(shù)據(jù)抽取轉(zhuǎn)化BC-ETL以及對(duì)象存儲(chǔ)系統(tǒng)BC-ONestd等系統(tǒng),并開源了自己的BC-Hadoop版本。中國移動(dòng)主要在電信領(lǐng)域應(yīng)用Hadoop。2.5部署和運(yùn)行Hadoop了解Hadoop的運(yùn)行環(huán)境和運(yùn)行模式規(guī)劃Hadoop集群準(zhǔn)備機(jī)器及軟件環(huán)境安裝和配置Hadoop關(guān)閉防火墻格式化文件系統(tǒng)啟動(dòng)和驗(yàn)證Hadoop關(guān)閉Hadoop2.5.1運(yùn)行環(huán)境1)操作系統(tǒng)Hadoop運(yùn)行平臺(tái)支持以下兩種:(1)Windows:Hadoop支持Windows,但由于Windows操作系統(tǒng)本身不太適合作為服務(wù)器操作系統(tǒng),所以編者不介紹Windows下安裝和配置Hadoop,讀者可自行參考網(wǎng)址/hadoop/Hadoop2OnWindows。(2)GNU/Linux:Hadoop的最佳運(yùn)行環(huán)境無疑是開源操作系統(tǒng)Linux,Linux的發(fā)行版本眾多,常見的有CentOS、Ubuntu、RedHat、Debian、Fedora、SUSE、openSUSE等。2)Java環(huán)境Hadoop使用Java語言編寫,因此它的運(yùn)行環(huán)境需要Java環(huán)境的支持。Hadoop3.x需要Java8,Hadoop2.7及以后版本需要Java7或Java8,Hadoop2.6及早期版本需要Java6。本書采用的Java為OracleJDK1.8。3)SSHHadoop集群若想運(yùn)行,其運(yùn)行平臺(tái)Linux必須安裝SSH,且sshd服務(wù)必須運(yùn)行,只有這樣,才能使用Hadoop腳本管理遠(yuǎn)程Hadoop守護(hù)進(jìn)程。2.5.2運(yùn)行模式(1)單機(jī)模式(Local/StandaloneMode)只在一臺(tái)計(jì)算機(jī)上運(yùn)行,不需任何配置,在這種模式下,Hadoop所有的守護(hù)進(jìn)程都變成了一個(gè)Java進(jìn)程,存儲(chǔ)采用本地文件系統(tǒng),沒有采用分布式文件系統(tǒng)HDFS。(2)偽分布模式(Pseudo-DistributedMode)只在一臺(tái)計(jì)算機(jī)上運(yùn)行,在這種模式下,Hadoop所有守護(hù)進(jìn)程都運(yùn)行在一個(gè)節(jié)點(diǎn)上,在一個(gè)節(jié)點(diǎn)上模擬了一個(gè)具有Hadoop完整功能的微型集群,存儲(chǔ)采用分布式文件系統(tǒng)HDFS,但是HDFS的名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)都位于同一臺(tái)計(jì)算機(jī)上。(3)全分布模式(Fully-DistributedMode)在多臺(tái)計(jì)算機(jī)上運(yùn)行,在這種模式下,Hadoop的守護(hù)進(jìn)程運(yùn)行在多個(gè)節(jié)點(diǎn)上,形成一個(gè)真正意義上的集群,存儲(chǔ)采用分布式文件系統(tǒng)HDFS,且HDFS的名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)位于不同計(jì)算機(jī)上。2.5.3規(guī)劃Hadoop集群1.Hadoop集群架構(gòu)規(guī)劃主機(jī)名IP地址運(yùn)行服務(wù)軟硬件配置master(主節(jié)點(diǎn))30NameNodeSecondaryNameNodeResourceManagerJobHistoryServer操作系統(tǒng):CentOS7.6.1810Java:OracleJDK8u191Hadoop:Hadoop2.9.2內(nèi)存:4GCPU:1個(gè)2核硬盤:40Gslave1(從節(jié)點(diǎn)1)31DataNodeNodeManager操作系統(tǒng):CentOS7.6.1810Java:OracleJDK8u191Hadoop:Hadoop2.9.2內(nèi)存:1GCPU:1個(gè)1核硬盤:20Gslave2(從節(jié)點(diǎn)2)32DataNodeNodeManager操作系統(tǒng):CentOS7.6.1810Java:OracleJDK8u191Hadoop:Hadoop2.9.2內(nèi)存:1GCPU:1個(gè)1核硬盤:20G2.5.3規(guī)劃Hadoop集群全分布模式Hadoop集群架構(gòu)規(guī)劃圖master30slave131slave232NameNodeSecondaryNameNodeResourceManagerJobHistoryServerDataNodeNodeManagerDataNodeNodeManager2.5.3規(guī)劃Hadoop集群2.軟件選擇1)虛擬機(jī)工具鑒于多數(shù)用戶使用的是Windows操作系統(tǒng),作為Hadoop初學(xué)者,建議在Windows操作系統(tǒng)上安裝虛擬機(jī)工具,并在其上創(chuàng)建Linux虛擬機(jī)。編者采用的虛擬機(jī)工具為VMwareWorkstationPro,讀者也可采用其他虛擬機(jī)工具例如OracleVirtualBox等。2)Linux操作系統(tǒng)編者采用的Linux操作系統(tǒng)為免費(fèi)的CentOS(CommunityEnterpriseOperatingSystem,社區(qū)企業(yè)操作系統(tǒng)),CentOS是RedHatEnterpriseLinux依照開放源代碼規(guī)定釋出的源代碼所編譯而成,讀者也可以使用其他Linux操作系統(tǒng)例如Ubuntu、RedHat、Debian、Fedora、SUSE、openSUSE等。2.5.3規(guī)劃Hadoop集群2.軟件選擇3)JavaHadoop集群若想運(yùn)行,其運(yùn)行平臺(tái)Linux必須安裝Java。CentOS7自帶有OpenJDK8,編者采用的Java是OracleJDK1.8。4)SSHHadoop集群若想運(yùn)行,其運(yùn)行平臺(tái)Linux必須安裝的第2個(gè)軟件是SSH,且sshd服務(wù)必須運(yùn)行,只有這樣,才能使用Hadoop腳本管理遠(yuǎn)程Hadoop守護(hù)進(jìn)程。本書選用的CentOS7自帶有SSH。5)HadoopHadoop的版本經(jīng)歷了1.0、2.0、3.0,目前最新穩(wěn)定版本是2019年1月16日發(fā)布的Hadoop3.2.0,編者采用的是2018年11月19日發(fā)布的穩(wěn)定版Hadoop2.9.2。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境1.準(zhǔn)備機(jī)器安裝3臺(tái)CentOS虛擬機(jī)hadoop2.9.2-master:內(nèi)存為4096MB,CPU為1個(gè)2核,硬盤40G。hadoop2.9.2-slave1、hadoop2.9.2-slave2:內(nèi)存均為1024MB,CPU為1個(gè)1核,硬盤20G。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境2.配置靜態(tài)IP(1)切換到root用戶,使用命令“vim/etc/sysconfig/network-scripts/ifcfg-ens33”修改網(wǎng)卡配置文件,設(shè)置靜態(tài)IP地址。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境2.配置靜態(tài)IP(2)使用“reboot”命令重啟機(jī)器或者“systemctlrestartnetwork.service”命令重啟網(wǎng)絡(luò)方可使得配置生效。同理,將虛擬機(jī)hadoop2.9.2-slave1和hadoop2.9.2-slave2的IP地址依次設(shè)置為靜態(tài)IP“31”、“32”。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境3.修改主機(jī)名切換到root用戶,通過修改配置文件/etc/hostname,可以修改Linux主機(jī)名,該配置文件中原始內(nèi)容為:localhost.localdomain將配置文件/etc/hostname中原始內(nèi)容替換為:master使用“reboot”命令重啟機(jī)器方可使得配置生效,使用命令“hostname”可以驗(yàn)證當(dāng)前主機(jī)名。同理,將虛擬機(jī)hadoop2.9.2-slave1和hadoop2.9.2-slave2的主機(jī)名依次設(shè)置為“slave1”、“slave2”。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境4.編輯域名映射為協(xié)助用戶便捷訪問該機(jī)器而無需記住IP地址串,需要編輯域名映射文件/etc/hosts,在原始內(nèi)容最后追加如下3行內(nèi)容:
30master31slave132slave2使用“reboot”命令重啟機(jī)器方可使得配置生效。同理,編輯虛擬機(jī)hadoop2.9.2-slave1和hadoop2.9.2-slave2的域名映射文件,內(nèi)容同虛擬機(jī)hadoop2.9.2-master。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境至此,3臺(tái)CentOS虛擬機(jī)的靜態(tài)IP、主機(jī)名、域名映射均已修改完畢,用ping命令來檢測各節(jié)點(diǎn)間是否通訊正常。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境5.安裝和配置Java(1)卸載OracleOpenJDK。首先,通過命令“java-version”查看是否已安裝Java,由于CentOS7自帶的Java是OracleOpenJDK,而更建議使用OracleJDK,因此將OracleOpenJDK卸載。其次,使用“rpm-qa|grepjdk”命令查詢jdk軟件。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境5.安裝和配置Java(1)卸載OracleOpenJDK。最后,切換到root用戶下,分別使用命令“yum-yremovejava-1.8.0*”和“yum-yremovejava-1.7.0*”卸載openjdk1.8和openjdk1.7。同理,卸載節(jié)點(diǎn)slave1和slave2上的OracleOpenJDK。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境5.安裝和配置Java(2)下載OracleJDK。需要根據(jù)機(jī)器所安裝的操作系統(tǒng)和位數(shù)選擇相應(yīng)JDK安裝包下載,可以使用命令“getconfLONG_BIT”來查詢Linux操作系統(tǒng)是32還是64位;也可以使用命令“file/bin/ls”來顯示Linux版本號(hào)。OracleJDK的下載地址為/technetwork/java/javase/downloads/index.html,本書下載的JDK安裝包文件名為2018年10月16日發(fā)布的jdk-8u191-linux-x64.tar.gz,并存放在目錄/home/xuluhui/Downloads下。同理,在節(jié)點(diǎn)slave1和slave2上也下載相同版本的OracleJDK,并存放在目錄/home/xuluhui/Downloads下。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境5.安裝和配置Java(3)安裝OracleJDK。使用tar命令解壓進(jìn)行安裝,例如安裝到目錄/usr/java下,首先在/usr下創(chuàng)建目錄java,然后解壓,依次使用的命令如下所示:
cd/usr mkdirjava cdjava tar-zxvf/home/xuluhui/Downloads/jdk-8u191-linux-x64.tar.gz同理,在節(jié)點(diǎn)slave1和slave2上也安裝OracleJDK。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境5.安裝和配置Java(4)配置Java環(huán)境。通過修改/etc/profile文件完成環(huán)境變量JAVA_HOME、PATH和CLASSPATH的設(shè)置,在配置文件/etc/profile的最后添加如下內(nèi)容:#setjavaenvironmentexportJAVA_HOME=/usr/java/jdk1.8.0_191exportPATH=$JAVA_HOME/bin:$PATHexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar使用命令“source/etc/profile”重新加載配置文件或者重啟機(jī)器,使配置生效。同理,在節(jié)點(diǎn)slave1和slave2上也配置Java環(huán)境。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境5.安裝和配置Java(5)驗(yàn)證Java。再次使用命令“java-version”,查看Java是否安裝配置成功及其版本。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境6.安裝和配置SSH免密登錄(1)安裝SSH。使用命令“rpm-qa|grepssh”查詢SSH是否已經(jīng)安裝。若沒有安裝好,用yum安裝,命令如下所示。yum-yinstallopensshyum-yinstallopenssh-serveryum-yinstallopenssh-clients2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境6.安裝和配置SSH免密登錄(2)修改sshd配置文件。使用命令“vim/etc/ssh/sshd_config”修改sshd配置文件,原始第43行內(nèi)容為:#PubkeyAuthenticationyes將其注釋符號(hào)“#”刪掉并添加一行內(nèi)容,修改后的內(nèi)容為:RSAAuthenticationyesPubkeyAuthenticationyes同理,在節(jié)點(diǎn)slave1和slave2上也修改sshd配置文件。(3)重啟sshd服務(wù)。使用命令“systemctlrestartsshd.service”重啟sshd服務(wù)。同理,在節(jié)點(diǎn)slave1和slave2上也需要重啟sshd服務(wù)。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境6.安裝和配置SSH免密登錄(4)生成公鑰和私鑰。切換到普通用戶xuluhui下,利用“cd~”命令切換回到用戶xuluhui的家目錄下,首先使用命令“ssh-keygen”在家目錄中生成公鑰和私鑰。其中,id_rsa是私鑰,id_rsa.pub是公鑰。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境6.安裝和配置SSH免密登錄(4)生成公鑰和私鑰。其次使用如下命令把公鑰id_rsa.pub的內(nèi)容追加到authorized_keys授權(quán)密鑰文件中。cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys最后使用如下命令修改密鑰文件的相應(yīng)權(quán)限。chmod0600~/.ssh/authorized_keys2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境6.安裝和配置SSH免密登錄(5)共享公鑰。經(jīng)過共享公鑰后,就不再需要輸入密碼。因?yàn)橹挥?主2從節(jié)點(diǎn),所以直接復(fù)制公鑰比較方便,將master的公鑰直接復(fù)制給slave1、slave2就可以解決連接從節(jié)點(diǎn)時(shí)需要密碼的問題。將master的公鑰通過命令“ssh-copy-id-i~/,ssh/id_rsa.pubxuluhui@slave1”復(fù)制給slave1,同理復(fù)制給slave2。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境6.安裝和配置SSH免密登錄5)共享公鑰。為了使主節(jié)點(diǎn)master能ssh免密登錄自身,使用“sshmaster”命令嘗試登錄自身,第1次連接時(shí)需要人工干預(yù)輸入“yes”,然后會(huì)自動(dòng)將master的key加入/home/xuluhui/.ssh/know_hosts文件中,此時(shí)即可登錄到自身。第2次“sshmaster”時(shí)就可以免密登錄到自身。2.5.4準(zhǔn)備機(jī)器及軟件環(huán)境6.安裝和配置SSH免密登錄5)共享公鑰。至此,可以從master節(jié)點(diǎn)ssh免密登錄到自身、slave1和slave2了,這對(duì)Hadoop已經(jīng)足夠,但是若想達(dá)到所有節(jié)點(diǎn)之間都能免密登錄的話,還需要在slave1、slave2上各執(zhí)行3次,也就是說兩兩共享密鑰,這樣累計(jì)共執(zhí)行9次。2.5.5安裝和配置Hadoop1.下載HadoopHadoop官方下載地址為/releases.html,本書選用的Hadoop版本是2018年11月19日發(fā)布的穩(wěn)定版Hadoop2.9.2,其安裝包文件hadoop-2.9.2.tar.gz例如存放在/home/xuluhui/Downloads中。2.安裝Hadoop(1)切換到root用戶,將hadoop-2.9.2.tar.gz解壓到目錄/usr/local下,具體命令如下所示。surootcd/usr/localtar-zxvf/home/xuluhui/Downloads/hadoop-2.9.2.tar.gz(2)將Hadoop安裝目錄的權(quán)限賦給xuluhui用戶,輸入以下命令。chown-Rxuluhui/usr/local/hadoop-2.9.22.5.5安裝和配置Hadoop3.配置HadoopHadoop配置文件很多,配置文件位于$HADOOP_HOME/etc/hadoop。2.5.5安裝和配置Hadoop3.配置HadoopHadoop主要配置文件文件名稱格式描述hadoop-env.shBash腳本記錄運(yùn)行Hadoop要用的環(huán)境變量yarn-env.shBash腳本記錄運(yùn)行YARN要用的環(huán)境變量(覆蓋hadoop-env.sh中設(shè)置的變量)mapred-env.shBash腳本記錄運(yùn)行MapReduce要用的環(huán)境變量覆蓋hadoop-env.sh中設(shè)置的變量)core-site.xmlHadoop配置XMLHadoopCore的配置項(xiàng),包括HDFS、MapReduce和YARN常用的I/O設(shè)置等hdfs-site.xmlHadoop配置XMLHDFS守護(hù)進(jìn)程的配置項(xiàng),包括NameNode、SecondaryNameNode、DataNode等yarn-site.xmlHadoop配置XMLYARN守護(hù)進(jìn)程的配置項(xiàng),包括ResourceManager、NodeManager等mapred-site.xmlHadoop配置XMLMapReduce守護(hù)進(jìn)程的配置項(xiàng),包括JobHistoryServerslaves純文本運(yùn)行DataNode和NodeManager的從節(jié)點(diǎn)機(jī)器列表,每行1個(gè)主機(jī)名pertiesJava屬性控制如何在Hadoop上發(fā)布度量的屬性pertiesJava屬性系統(tǒng)日志文件、NameNode審計(jì)日志、任務(wù)JVM進(jìn)程的任務(wù)日志的屬性hadoop-policy.xmlHadoop配置XML安全模式下運(yùn)行Hadoop時(shí)的訪問控制列表的配置項(xiàng)2.5.5安裝和配置Hadoop3.配置HadoopHadoop默認(rèn)配置文件配置文件名稱默認(rèn)配置文件所在位置core-site.xmlshare/doc/hadoop/hadoop-project-dist/hadoop-common/core-default.xmlhdfs-site.xmlshare/doc/hadoop/hadoop-project-dist/hadoop-hdfs/hdfs-default.xmlyarn-site.xmlshare/doc/hadoop/hadoop-yarn/hadoop-yarn-common/yarn-default.xmlmapred-site.xmlshare/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapreduce-default.xml2.5.5安裝和配置Hadoop3.配置Hadoop讀者可以在Hadoop共享文檔的路徑下,找到一個(gè)導(dǎo)航文件share/doc/hadoop/index.html,這個(gè)導(dǎo)航文件是一個(gè)寶庫,除了左下角有上述4個(gè)默認(rèn)配置文件的超級(jí)鏈接,還有Hadoop的學(xué)習(xí)教程,值得讀者細(xì)讀。2.5.5安裝和配置Hadoop3.配置Hadoop本節(jié)講述的是全分布模式Hadoop集群的配置,偽分布模式Hadoop集群在配置的時(shí)候配置文件core-site.xml、hdfs-site.xml、yarn-site.xml、slaves配置內(nèi)容有所不同,其余基本相同。另外為了方便,下文中(1)-(9)步驟均僅在主節(jié)點(diǎn)master上進(jìn)行,從節(jié)點(diǎn)slave1、slave2上的配置文件可以通過scp命令同步復(fù)制。2.5.5安裝和配置Hadoop3.配置Hadoop(1)在系統(tǒng)配置文件目錄/etc/profile.d下新建hadoop.sh切換到root用戶,使用“vim/etc/profile.d/hadoop.sh”命令在/etc/profile.d文件夾下新建文件hadoop.sh,添加如下內(nèi)容。exportHADOOP_HOME=/usr/local/hadoop-2.9.2exportPATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH使用命令“source/etc/profile.d/hadoop.sh”重新加載配置文件或者重啟機(jī)器,使之生效。需要說明的是,此步驟可以省略,之所以將Hadoop安裝目錄下bin和sbin加入到系統(tǒng)環(huán)境變量PATH中,是因?yàn)楫?dāng)輸入啟動(dòng)和管理Hadoop集群命令時(shí),無需再切換到Hadoop安裝目錄下的bin目錄或者sbin目錄,否則會(huì)出現(xiàn)錯(cuò)誤信息“bash:****:commandnotfound...”。2.5.5安裝和配置Hadoop3.配置Hadoop接下來的(2)-(9)步驟均在普通用戶xuluhui下完成。(2)配置hadoop-env.sh環(huán)境變量配置文件hadoop-env.sh主要配置Java的安裝路徑JAVA_HOME、Hadoop日志存儲(chǔ)路徑HADOOP_LOG_DIR及添加SSH的配置選項(xiàng)HADOOP_SSH_OPTS等。本書中關(guān)于hadoop-env.sh配置文件的修改具體如下。①第25行“exportJAVA_HOME=${JAVA_HOME}”修改為:exportJAVA_HOME=/usr/java/jdk1.8.0_1912.5.5安裝和配置Hadoop3.配置Hadoop(2)配置hadoop-env.sh②第26行空行處加入:exportHADOOP_SSH_OPTS='-oStrictHostKeyChecking=no'
這里要說明的是,ssh的選項(xiàng)“StrictHostKeyChecking”用于控制當(dāng)目標(biāo)主機(jī)尚未進(jìn)行過認(rèn)證時(shí),是否顯示信息“Areyousureyouwanttocontinueconnecting(yes/no)?”。所以當(dāng)?shù)卿浧渌鼨C(jī)器時(shí),只需要ssh-oStrictHostKeyChecking=no就可以直接登錄,不會(huì)有上面的提示信息,不需要人工干預(yù)輸入“yes”,而且還會(huì)將目標(biāo)主機(jī)key加到~/.ssh/known_hosts文件里。③第113行“exportHADOOP_PID_DIR=${HADOOP_PID_DIR}”指定HDFS守護(hù)進(jìn)程號(hào)的保存位置,默認(rèn)為“/tmp”,由于該文件夾用以存放臨時(shí)文件,系統(tǒng)定時(shí)會(huì)自動(dòng)清理,因此本書將“HADOOP_PID_DIR”設(shè)置為Hadoop安裝目錄下的目錄pids,如下所示,其中目錄pids會(huì)隨著HDFS守護(hù)進(jìn)程的啟動(dòng)而由系統(tǒng)自動(dòng)創(chuàng)建,無需用戶手工創(chuàng)建。exportHADOOP_PID_DIR=${HADOOP_HOME}/pids2.5.5安裝和配置Hadoop3.配置Hadoop(3)配置mapred-env.sh環(huán)境變量配置文件mapred-env.sh主要配置Java安裝路徑JAVA_HOME、MapReduce日志存儲(chǔ)路徑HADOOP_MAPRED_LOG_DIR等,之所以再次設(shè)置JAVA_HOME,是為了保證所有進(jìn)程使用的是同一個(gè)版本的JDK。本書中關(guān)于mapred-env.sh配置文件的修改具體如下。①第16行注釋“#exportJAVA_HOME=/home/y/libexec/jdk1.6.0/”修改為:exportJAVA_HOME=/usr/java/jdk1.8.0_191②第28行指定MapReduce守護(hù)進(jìn)程號(hào)的保存位置,默認(rèn)為“/tmp”,同以上“HADOOP_PID_DIR”,此處注釋“#exportHADOOP_MAPRED_PID_DIR=”修改為Hadoop安裝目錄下的目錄pids,如下所示,其中目錄pids會(huì)隨著MapReduce守護(hù)進(jìn)程的啟動(dòng)而由系統(tǒng)自動(dòng)創(chuàng)建,無需用戶手工創(chuàng)建。exportHADOOP_MAPRED_PID_DIR=${HADOOP_HOME}/pids2.5.5安裝和配置Hadoop3.配置Hadoop(4)配置yarn-env.shYARN是Hadoop的資源管理器,環(huán)境變量配置文件yarn-env.sh主要配置Java安裝路徑JAVA_HOME、YARN日志存放路徑Y(jié)ARN_LOG_DIR等。本書中關(guān)于yarn-env.sh配置文件的修改具體如下。①第23行注釋“#exportJAVA_HOME=/home/y/libexec/jdk1.6.0/”修改為:exportJAVA_HOME=/usr/java/jdk1.8.0_191②yarn-env.sh文件中并未提供YARN_PID_DIR配置項(xiàng),用于指定YARN守護(hù)進(jìn)程號(hào)的保存位置,在該文件最后添加一行,內(nèi)容如下所示,其中目錄pids會(huì)隨著YARN守護(hù)進(jìn)程的啟動(dòng)而由系統(tǒng)自動(dòng)創(chuàng)建,無需用戶手工創(chuàng)建。exportYARN_PID_DIR=${HADOOP_HOME}/pids2.5.5安裝和配置Hadoop3.配置Hadoop(5)配置core-site.xmlcore-site.xml是hadoopcore配置文件,如HDFS和MapReduce常用的I/O設(shè)置等,其中包括很多配置項(xiàng),但實(shí)際上,大多數(shù)配置項(xiàng)都有默認(rèn)項(xiàng),也就是說,很多配置項(xiàng)即使不配置,也無關(guān)緊要,只是在特定場合下,有些默認(rèn)值無法工作,這時(shí)再找出來配置特定值。<configuration><property><name>fs.defaultFS</name><value>hdfs://30:9000</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop-2.9.2/hdfsdata</value></property><property><name>io.file.buffer.size</name><value>131072</value></property><configuration>2.5.5安裝和配置Hadoop3.配置Hadoop(5)配置core-site.xmlcore-site.xml中幾個(gè)重要配置項(xiàng)的參數(shù)名、功能、默認(rèn)值。配置項(xiàng)參數(shù)名功能默認(rèn)值本書設(shè)置值fs.defaultFSHDFS的文件URIfile:///hdfs://30:9000io.file.buffer.sizeIO文件的緩沖區(qū)大小4096131072hadoop.tmp.dirHadoop的臨時(shí)目錄/tmp/hadoop-${}/usr/local/hadoop-2.9.2/hdfsdata2.5.5安裝和配置Hadoop3.配置Hadoop(6)配置hdfs-site.xmlhdfs-site.xml配置文件主要配置HDFS分項(xiàng)數(shù)據(jù),如字空間元數(shù)據(jù)、數(shù)據(jù)塊、輔助節(jié)點(diǎn)的檢查點(diǎn)的存放路徑等,不修改配置項(xiàng)的采用默認(rèn)值即可,本書中關(guān)于hdfs-site.xml配置文件未做任何修改。hdfs-site.xml中幾個(gè)重要配置項(xiàng)的參數(shù)名、功能、默認(rèn)值。配置項(xiàng)參數(shù)名功能默認(rèn)值本書設(shè)置值.dir元數(shù)據(jù)存放位置file://${hadoop.tmp.dir}/dfs/name未修改dfs.datanode.data.dir數(shù)據(jù)塊存放位置file://${hadoop.tmp.dir}/dfs/data未修改node.checkpoint.dir輔助節(jié)點(diǎn)的檢查點(diǎn)存放位置file://${hadoop.tmp.dir}/dfs/namesecondary未修改dfs.blocksizeHDFS文件塊大小134217728未修改dfs.replicationHDFS文件塊副本數(shù)3未修改node.http-addressNameNodeWebUI地址和端口:50070未修改2.5.5安裝和配置Hadoop3.配置Hadoop(7)配置mapred-site.xmlmapred-site.xml配置文件是有關(guān)MapReduce計(jì)算框架的配置信息,Hadoop配置文件中沒有mapred-site.xml,但有mapred-site.xml.template,讀者使用命令例如“cpmapred-site.xml.templatemapred-site.xml”將其復(fù)制并重命名為“mapred-site.xml”即可,然后用vim編輯相應(yīng)的配置信息,本書中對(duì)于mapred-site.xml的添加內(nèi)容如下所示。<configuration><property><name></name><value>yarn</value></property></configuration>2.5.5安裝和配置Hadoop3.配置Hadoop(7)配置mapred-site.xmlmapred-site.xml中幾個(gè)重要配置項(xiàng)的參數(shù)名、功能、默認(rèn)值。配置項(xiàng)參數(shù)名功能默認(rèn)值本書設(shè)置值MapReduce應(yīng)用程序的執(zhí)行框架localyarnmapreduce.jobhistory.webapp.addressMapReduceWebUI端口號(hào)19888未修改mapreduce.job.maps每個(gè)MapReduce作業(yè)的map任務(wù)數(shù)目2未修改mapreduce.job.reduces每個(gè)MapReduce作業(yè)的reduce任務(wù)數(shù)目1未修改2.5.5安裝和配置Hadoop3.配置Hadoop(8)配置yarn-site.xmlyarn-site.xml是有關(guān)資源管理器的YARN配置信息,本書中對(duì)于yarn-site.xml的添加內(nèi)容如下所示。<configuration><property><name>yarn.resourcemanager.hostname</name><value>master</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>2.5.5安裝和配置Hadoop3.配置Hadoop(8)配置yarn-site.xmlyarn-site.xml中幾個(gè)重要配置項(xiàng)的參數(shù)名、功能、默認(rèn)值。配置項(xiàng)參數(shù)名功能默認(rèn)值本書設(shè)置值yarn.resourcemanager.hostname提供ResourceManager服務(wù)的主機(jī)名masteryarn.resourcemanager.scheduler.class啟用的資源調(diào)度器主類org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler未修改yarn.resourcemanager.webapp.addressResourceManagerWebUIhttp地址${yarn.resourcemanager.hostname}:8088未修改yarn.nodemanager.local-dirs中間結(jié)果存放位置${hadoop.tmp.dir}/nm-local-dir未修改yarn.nodemanager.aux-servicesNodeManager上運(yùn)行的附屬服務(wù)
mapreduce_shuffle2.5.5安裝和配置Hadoop3.配置Hadoop(9)配置slaves配置文件slaves用于指定從節(jié)點(diǎn)主機(jī)名列表,在這個(gè)文件中,需要添加所有的從節(jié)點(diǎn)主機(jī)名,每一個(gè)主機(jī)名占一行,本書中slaves文件的內(nèi)容如下所示。slave1slave2需要注意的是,在slaves文件里,有一個(gè)默認(rèn)值localhost,一定要?jiǎng)h除,若不刪除,雖然后面添加了所有的從節(jié)點(diǎn)主機(jī)名,Hadoop還是無法逃脫“偽分布模式”的命運(yùn)。2.5.5安裝和配置Hadoop4.同步配置文件(1)同步hadoop.sh切換到root用戶下,將master節(jié)點(diǎn)上的文件hadoop.sh同步到其他2臺(tái)從節(jié)點(diǎn)上,命令如下所示。scp/etc/profile.d/hadoop.shroot@slave1:/etc/profile.d/scp/etc/profile.d/hadoop.shroot@slave2:/etc/profile.d/(2)同步Hadoop配置文件切換到普通用戶xuluhui下,將master上/usr/local/hadoop-2.9.2/etc/hadoop下的配置文件同步到其他2個(gè)從節(jié)點(diǎn)上。依次通過如下命令將主節(jié)點(diǎn)master上的Hadoop配置文件同步到從節(jié)點(diǎn)slave1和slave2上。scp-r/usr/local/hadoop-2.9.2/etc/hadoop/*xuluhui@slave1:/usr/local/hadoop-2.9.2/etc/hadoop/scp-r/usr/local/hadoop-2.9.2/etc/hadoop/*xuluhui@slave2:/usr/local/hadoop-2.9.2/etc/hadoop/至此,1主節(jié)點(diǎn)2從節(jié)點(diǎn)的Hadoop全分布模式集群全部配置結(jié)束,重啟3臺(tái)機(jī)器,使得上述配置生效。2.5.6關(guān)閉防火墻為了避免不必要的麻煩,建議關(guān)閉防火墻,若防火墻沒有關(guān)閉,可能會(huì)導(dǎo)致Hadoop雖然可以啟動(dòng),但是數(shù)據(jù)節(jié)點(diǎn)DataNode無法連接名稱節(jié)點(diǎn)NameNode,如圖2-23所示,Hadoop集群啟動(dòng)正常,但數(shù)據(jù)容量為0B,數(shù)據(jù)節(jié)點(diǎn)數(shù)量也是0。2.5.6關(guān)閉防火墻CentOS7下關(guān)閉防火墻的方式有兩種:命令“systemctlstopfirew
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國農(nóng)業(yè)銀行研發(fā)中心社會(huì)招聘7人備考題庫及答案詳解一套
- 2025年淮北市相山區(qū)公開招考村(社區(qū))后備干部66名考試重點(diǎn)試題及答案解析
- 2025四川南充市閬中市考核招聘大學(xué)生志愿服務(wù)西部計(jì)劃志愿者服務(wù)期滿人員1人考試核心題庫及答案解析
- 中國社會(huì)科學(xué)院世界經(jīng)濟(jì)與政治研究所2026年度公開招聘第一批專業(yè)技術(shù)人員6人備考題庫及完整答案詳解一套
- 2025上海對(duì)外經(jīng)貿(mào)大學(xué)統(tǒng)計(jì)與數(shù)據(jù)科學(xué)學(xué)院教學(xué)秘書招聘1人參考考試試題及答案解析
- 2025廣西來賓市興賓區(qū)婦幼保健院公開招聘見習(xí)人員11人考試核心題庫及答案解析
- 2025共青團(tuán)張家口經(jīng)開區(qū)工委招聘就業(yè)見習(xí)崗位8人(河北)考試重點(diǎn)題庫及答案解析
- 2025年泰和縣新睿人力資源服務(wù)有限公司公開招聘項(xiàng)目制員工考試核心試題及答案解析
- 2025年山西省長治市人民醫(yī)院公開招聘碩士以上專業(yè)技術(shù)工作人員考試重點(diǎn)題庫及答案解析
- 2025福建三明市永安市人民政府辦公室(永安市國防動(dòng)員辦公室)招聘編外聘用人員1人筆試重點(diǎn)題庫及答案解析
- 新教科版四上科學(xué)2.2《呼吸與健康生活》優(yōu)質(zhì)課件
- 數(shù)字化智慧病理科建設(shè)白皮書
- plc課程設(shè)計(jì)電鍍自動(dòng)生產(chǎn)線控制大學(xué)論文
- 高壓作業(yè)實(shí)操科目三安全隱患圖片題庫(考試用)
- 綠盾加密軟件技術(shù)白皮書
- 鋁合金門窗計(jì)算書
- GMP質(zhì)量管理體系文件 事故調(diào)查報(bào)告
- GB/T 7600-2014運(yùn)行中變壓器油和汽輪機(jī)油水分含量測定法(庫侖法)
- 比較文學(xué)概論馬工程課件 第5章
- 跨境人民幣業(yè)務(wù)介紹-楊吉聰
- 工程項(xiàng)目質(zhì)量管理培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論