版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第一章Hadoop概述1.1Hadoop簡介1.1Hadoop簡介Hadoop是針對大數(shù)據(jù)處理研發(fā)的一個開源分布式計算框架,是一個有效解決分布式計算和存儲任務(wù)的平臺。Hadoop是搭建在廉價PC上的分布式集群系統(tǒng),具有高可用性、高容錯性、可擴(kuò)展性等優(yōu)點。Hadoop因其開源、低成本的特點,備受企業(yè)追捧,目前已成為最常用的大數(shù)據(jù)處理平臺之一。1.1Hadoop簡介Hadoop的實現(xiàn)基于Google發(fā)布的3篇經(jīng)典論文“MapReduce”“GoogleFileSystem”和“BigTable”。Hadoop之父”道格·卡廷(DougCutting)基于Google的3篇論文使用Java語言實現(xiàn)了Hadoop,并將其開源。隨后,阿帕奇基金會整合道格·卡廷以及其他IT公司的貢獻(xiàn),推出了Hadoop生態(tài)系統(tǒng)。1.1Hadoop簡介NutchGFS分布式存儲系統(tǒng)論文MapReduce分布式處理技術(shù)論文20042003Hadoop最早起源Nutch。2002年由道格·卡廷帶領(lǐng)的團(tuán)隊在雅虎開發(fā)。2004年,道格·卡廷發(fā)現(xiàn)GFS可以解決在網(wǎng)絡(luò)爬取和索引過程中產(chǎn)生的超大文件存儲需求的問題,MapReduce框架可用于處理海量網(wǎng)頁的索引問題。同年,Nutch項目組對這兩個系統(tǒng)在原有理論基礎(chǔ)上完成了開源實現(xiàn),形成Hadoop。1.1Hadoop簡介后期開發(fā)Hadoop生態(tài)系統(tǒng)1.2Hadoop體系架構(gòu)1.2.1Hadoop基礎(chǔ)架構(gòu)Hadoop實現(xiàn)了對大數(shù)據(jù)進(jìn)行分布式并行處理的系統(tǒng)框架,是一種并行處理數(shù)據(jù)的方法。Hadoop基礎(chǔ)架構(gòu)由實現(xiàn)數(shù)據(jù)分析的MapReduce計算框架和實現(xiàn)數(shù)據(jù)存儲的HDFS有機(jī)結(jié)合而成。1.2.1Hadoop基礎(chǔ)架構(gòu)1.2.1Hadoop基礎(chǔ)架構(gòu)MapReduce模型通過將數(shù)據(jù)分成多個部分,并在多個計算節(jié)點上并行執(zhí)行數(shù)據(jù)處理。該模型的核心思想是將計算分為兩個階段:Map階段和Reduce階段。在Map階段,數(shù)據(jù)被劃分成多個小塊,并在各個計算節(jié)點上進(jìn)行映射處理,以生成鍵值對。在Reduce階段,相同鍵的值被匯總在一起,并在各個計算節(jié)點上進(jìn)行歸約處理,以生成最終的輸出結(jié)果。1.2.1Hadoop基礎(chǔ)架構(gòu)HDFS是一個設(shè)計運行在普通硬件設(shè)備上的分布式文件系統(tǒng),具有高容錯性,能夠提供高吞吐量,適用于具有大數(shù)據(jù)集的應(yīng)用場合。當(dāng)需要存儲的數(shù)據(jù)文件大小超過一臺物理計算機(jī)所能承受的最大存儲容量時,就需要使用HDFS將一個大文件分解成為若干個小文件,并將它們分別存儲在不同的物理計算機(jī)上。1.2.2Hadoop生態(tài)系統(tǒng)Hadoop中并行應(yīng)用程序是基于MapReduce編程框架開發(fā)的,用戶不需要考慮任務(wù)具體是怎么分配的,只需要根據(jù)MapReduce提供的應(yīng)用程序接口(API)編寫特定的mapper與reducer函數(shù),然后把這些函數(shù)交給MapReduce就可以實現(xiàn)與機(jī)器交互并完成任務(wù)。顯然,僅依賴HDFS和MapReduce,所能夠?qū)崿F(xiàn)的功能是有限的。但隨著Hadoop的快速發(fā)展,很多組件也應(yīng)運而生。例如,Hive是基于Hadoop的數(shù)據(jù)倉庫工具,它可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為數(shù)據(jù)庫表,并提供完整的SQL查詢功能,也可以將SQL語句轉(zhuǎn)換為MapReduce任務(wù)運行,還可以通過類SQL語句快速實現(xiàn)簡單的MapReduce統(tǒng)計。1.2.2Hadoop生態(tài)系統(tǒng)1.2.2Hadoop生態(tài)系統(tǒng)(1)數(shù)據(jù)抽取、轉(zhuǎn)換、裝載(ExtractTransformationLoad,ETL)工具是構(gòu)建數(shù)據(jù)倉庫的重要環(huán)節(jié),由一系列數(shù)據(jù)倉庫采集工具構(gòu)成。(2)商業(yè)智能(BusinessIntelligence,BI)報表能提供綜合報告,還能提供數(shù)據(jù)分析和數(shù)據(jù)集成等功能。1.2.2Hadoop生態(tài)系統(tǒng)(3)關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RelationalDatabaseManagementSystem,RDBMS)中的數(shù)據(jù)存儲在被稱為表(Table)的數(shù)據(jù)庫(DataBase,DB)中。表是相關(guān)記錄的集合,它由列和行組成,是一種二維關(guān)系表。1.2.2Hadoop生態(tài)系統(tǒng)(4)Pig是數(shù)據(jù)處理腳本,提供相應(yīng)的數(shù)據(jù)流(DataFlow)語言和運行環(huán)境,它可用于實現(xiàn)數(shù)據(jù)轉(zhuǎn)換(使用管道)和實驗性研究(如快速原型),適用于數(shù)據(jù)準(zhǔn)備階段。Pig運行在由Hadoop基本架構(gòu)構(gòu)建的集群上。1.2.2Hadoop生態(tài)系統(tǒng)(5)Hive是基于平面文件構(gòu)建的分布式數(shù)據(jù)倉庫。Hive管理存儲在HDFS中的數(shù)據(jù),提供基于結(jié)構(gòu)查詢語言(StructureQueryLanguage,SQL)的Hibernate查詢語言(HibernateQueryLanguage,HQL),用于查詢數(shù)據(jù)。Hive和Pig都是建立在Hadoop基本架構(gòu)之上,用來從數(shù)據(jù)庫中提取信息,并將其交給Hadoop處理。1.2.2Hadoop生態(tài)系統(tǒng)(6)Sqoop是Hadoop與關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RelationalDatabaseManagementSystem,RDBMS)之間進(jìn)行數(shù)據(jù)遷移的工具,使用Sqoop可以從MySQL等傳統(tǒng)關(guān)系數(shù)據(jù)庫中把數(shù)據(jù)導(dǎo)入HDFS、HBase、Hive等Hadoop分布式存儲環(huán)境下,再使用MapReduce等分布式處理工具對數(shù)據(jù)進(jìn)行加工和處理,將處理結(jié)果導(dǎo)出到RDBMS中。1.2.2Hadoop生態(tài)系統(tǒng)(7)HBase是類似于GoogleBigtable的分布式列數(shù)據(jù)庫(ColumnDB)。HBase支持MapReduce的并行計算和點查詢(即隨機(jī)讀取)。HBase是基于Java的產(chǎn)品,與其對應(yīng)的基于C++的開源項目是Hypertable。1.2.2Hadoop生態(tài)系統(tǒng)(8)Avro是一種新的數(shù)據(jù)序列化(Serialization)格式和傳輸工具,主要用來取代Hadoop基本架構(gòu)中原有的進(jìn)程間通信(InterprocessCommunication,IPC)機(jī)制。1.2.2Hadoop生態(tài)系統(tǒng)(9)ZooKeeper是一個開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),它是一個為分布式應(yīng)用提供一致性服務(wù)的軟件,它提供的功能包括配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等。1.2.2Hadoop生態(tài)系統(tǒng)(10)Ambari項目旨在將監(jiān)控和管理等核心功能加入Hadoop項目。Ambari可幫助系統(tǒng)管理員部署和配置Hadoop、升級集群以及監(jiān)控服務(wù)。1.2.2Hadoop生態(tài)系統(tǒng)(11)Flume是Cloudera提供的一個高可用、高可靠、分布式的用于海量日志采集、聚合和傳輸?shù)南到y(tǒng)。Flume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時,F(xiàn)lume提供對數(shù)據(jù)進(jìn)行簡單處理,并寫到各種數(shù)據(jù)接收方的能力。1.2.2Hadoop生態(tài)系統(tǒng)(12)Mahout是機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的一個分布式框架,區(qū)別于其他的開源數(shù)據(jù)挖掘軟件,它是基于Hadoop的;因為Mahout用MapReduce實現(xiàn)了部分?jǐn)?shù)據(jù)挖掘算法,解決了并行挖掘的問題,所以Hadoop的優(yōu)勢就是Mahout的優(yōu)勢。1.3Hadoop與分布式開發(fā)1.3Hadoop與分布式開發(fā)分布式從字面意思理解是指物理地址分開,如主分店模式:主店在紐約,分店在北京。分布式就是要在不同的物理空間實現(xiàn)數(shù)據(jù)資源共享與處理。例如,金融行業(yè)的銀行聯(lián)網(wǎng)、交通行業(yè)的售票系統(tǒng)、公安系統(tǒng)的全國戶籍管理等,這些行業(yè)或系統(tǒng)的單位之間具有地理分布性或業(yè)務(wù)分布性。主店:紐約分店:北京數(shù)據(jù)資源設(shè)置在哪里?1.3Hadoop與分布式開發(fā)典型的分布式開發(fā)采用的是層模式變體,即松散分層系統(tǒng)(RelaxedLayeredSystem)。這種模式的層間關(guān)系松散,每層可以使用比它低的層的所有服務(wù),不限于相鄰層,從而增加層模式的靈活性。較常用的分布式開發(fā)模式有客戶機(jī)/服務(wù)器(Client/Server,C/S)開發(fā)模式、瀏覽器/服務(wù)器(Browser/Server,B/S)開發(fā)模式、C/S開發(fā)模式和B/S開發(fā)模式綜合應(yīng)用。1.3Hadoop與分布式開發(fā)客戶機(jī)/服務(wù)器開發(fā)模式瀏覽器/服務(wù)器開發(fā)模式1.3Hadoop與分布式開發(fā)Hadoop實現(xiàn)了分布式文件系統(tǒng)和部分分布式數(shù)據(jù)庫系統(tǒng)的功能。Hadoop中的HDFS能夠使數(shù)據(jù)在計算機(jī)集群組成的云上高效地存儲和管理,并行編程框架MapReduce能夠讓用戶編寫Hadoop并行應(yīng)用程序,并使運行變得更加簡單,從而通過Hadoop進(jìn)行分布式開發(fā)。需要注意的是,Hadoop不僅具有處理大規(guī)模分布式數(shù)據(jù)的能力,而且所有作業(yè)的數(shù)據(jù)處理都是批處理,MapReduce的處理過程雖然是流式的,但處理的數(shù)據(jù)不是實時數(shù)據(jù)。也就是說,Hadoop在實時性數(shù)據(jù)處理上不占優(yōu)勢,因此,它不適用于開發(fā)Web程序。1.4Hadoop行業(yè)應(yīng)用案例分析1.4Hadoop行業(yè)應(yīng)用案例分析文化遺產(chǎn)保護(hù):Hadoop可以用于存儲和管理大量的文化遺產(chǎn)數(shù)據(jù),例如歷史建筑、文物和藝術(shù)品等。這些數(shù)據(jù)可以被組織、分析和可視化,以幫助文化機(jī)構(gòu)和研究人員更好地了解和保護(hù)中國傳統(tǒng)文化。古籍?dāng)?shù)字化:Hadoop可以用于處理大規(guī)模的古籍?dāng)?shù)據(jù),包括掃描、OCR、文字識別和文本分析等。這有助于加快古籍?dāng)?shù)字化的進(jìn)程,使得更多的人能夠方便地訪問和研究中國傳統(tǒng)文化。1.4Hadoop行業(yè)應(yīng)用案例分析民俗文化研究:Hadoop可以用于分析大規(guī)模的民俗文化數(shù)據(jù),例如節(jié)日慶典、民間傳說和習(xí)俗等。這可以幫助研究人員更好地了解和保護(hù)中國傳統(tǒng)的民俗文化,促進(jìn)文化多樣性的發(fā)展。語言文化保護(hù):Hadoop可以用于處理大規(guī)模的語言數(shù)據(jù),例如語音、文本和圖像等。這可以幫助保護(hù)和傳承中國傳統(tǒng)的語言文化,例如方言和少數(shù)民族語言等。總的來說,Hadoop可以為中國傳統(tǒng)文化的保護(hù)、研究和傳承提供支持,幫助我們更好地了解和珍惜這些文化遺產(chǎn)。1.4.1Hadoop在搜索引擎中的應(yīng)用百度作為全球最大的中文搜索引擎公司,提供基于搜索引擎的各種產(chǎn)品,包括以網(wǎng)絡(luò)搜索為主的功能性搜索,以貼吧為主的社區(qū)搜索,針對區(qū)域、行業(yè)的垂直搜索、MP3音樂搜索以及百科等,幾乎覆蓋了中文網(wǎng)絡(luò)世界中所有的搜索需求。百度對海量數(shù)據(jù)處理的要求是比較高的,要在線下對數(shù)據(jù)進(jìn)行分析,還要在規(guī)定的時間內(nèi)處理完并反饋到平臺上。百度在互聯(lián)網(wǎng)領(lǐng)域的平臺需求要通過性能較好的云平臺進(jìn)行處理,Hadoop就是很好的選擇。在百度,Hadoop主要應(yīng)用于日志的存儲和統(tǒng)計;網(wǎng)頁數(shù)據(jù)的分析和挖掘;商業(yè)分析,如用戶的行為和廣告關(guān)注度等。1.4.2Hadoop在電商平臺中的應(yīng)用在eBay上存儲著上億種商品的信息,而且每天有數(shù)百萬種的新商品在增加,因此需要用云系統(tǒng)來存儲和處理PB級別的數(shù)據(jù),而Hadoop則是個很好的選擇。Hadoop是建立在商業(yè)硬件上的容錯、可擴(kuò)展、分布式的云計算框架,eBay利用Hadoop建立了一個大規(guī)模的集群系統(tǒng)——Athena,它被分為5層。本章完第二章Hadoop的安裝配置與管理2.1實驗準(zhǔn)備2.1實驗準(zhǔn)備通過物理機(jī)器虛擬化4臺虛擬機(jī),設(shè)置1個主(Master)節(jié)點、3個從(Slave)節(jié)點,節(jié)點之間通過局域網(wǎng)相互連通。NameNode00DataNode01DataNode02DataNode032.1實驗準(zhǔn)備主節(jié)點主要配置名稱節(jié)點(NameNode)和JobTracker角色,總體負(fù)責(zé)分布式數(shù)據(jù)的處理和分解任務(wù)的執(zhí)行;3個從節(jié)點主要配置數(shù)據(jù)節(jié)點(DataNode)和TaskTracker角色,負(fù)責(zé)分布式數(shù)據(jù)的存儲,以及分布式任務(wù)的執(zhí)行。2.1實驗準(zhǔn)備需要用到的軟件2.1實驗準(zhǔn)備設(shè)置系統(tǒng)用戶名和密碼2.2配置一個單節(jié)點環(huán)境2.2.1運行一個虛擬環(huán)境CentOS在計算機(jī)上安裝虛擬機(jī),下載VMware12后,安裝并打開VMware12,再添加CentOS到虛擬機(jī)的CD/DVD中,執(zhí)行菜單欄中的“文件”→“打開”命令,選擇CentOS文件,單擊“打開”按鈕2.2.1運行一個虛擬環(huán)境CentOS2.2.1運行一個虛擬環(huán)境CentOS在CentOS上單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“設(shè)置”命令,彈出“虛擬機(jī)設(shè)置”對話框,其中顯示虛擬系統(tǒng)的主要硬件參數(shù)信息,用戶可以根據(jù)自己的機(jī)器性能進(jìn)行配置,這里保持默認(rèn)配置2.2.2配置網(wǎng)絡(luò)VMware提供了3種工作模式:橋接(Bridged)模式、網(wǎng)絡(luò)地址轉(zhuǎn)換(NetworkAddressTranslation,NAT)模式和僅主機(jī)(Host-Only)模式。在學(xué)習(xí)VMware虛擬網(wǎng)絡(luò)時,建議選擇Host-Only模式Bridged模式NAT模式Host-Only模式在Bridged模式下,VMware虛擬出來的操作系統(tǒng)就像是局域網(wǎng)中一臺獨立的主機(jī),它可以訪問局域網(wǎng)內(nèi)的任何一臺機(jī)器。同時在Bridged模式下,需要手動為虛擬系統(tǒng)配置IP地址和子網(wǎng)掩碼,而且要與宿主機(jī)器處于同一網(wǎng)段,這樣虛擬系統(tǒng)才能和宿主機(jī)器通信。使用NAT模式就是讓虛擬系統(tǒng)借助NAT功能,通過宿主機(jī)器所在的網(wǎng)絡(luò)來訪問公網(wǎng)。也就是說,使用NAT模式可以在虛擬系統(tǒng)中安全地訪問互聯(lián)網(wǎng)。使用NAT模式最大的優(yōu)勢就是虛擬系統(tǒng)接入互聯(lián)網(wǎng)非常簡單,不需要進(jìn)行任何其他配置,只需要宿主機(jī)器能訪問互聯(lián)網(wǎng)即可。在Host-Only模式中,所有的虛擬系統(tǒng)是可以相互通信的,但虛擬系統(tǒng)和真實環(huán)境是被隔離開的。在Host-Only模式下,虛擬系統(tǒng)的TCP/IP配置信息[如IP地址、網(wǎng)關(guān)地址、域名服務(wù)器(DomainNameServer,DNS)等都可以由VMnet1(使用Host-Only模式)虛擬網(wǎng)絡(luò)的動態(tài)主機(jī)配置協(xié)議(DynamicHostConfigurationProtocol,DHCP)服務(wù)器來分配。2.2.2配置網(wǎng)絡(luò)2.2.1運行一個虛擬環(huán)境CentOS對VMnet1的網(wǎng)絡(luò)配置進(jìn)行修改步驟1,啟動虛擬機(jī),登錄root賬戶2.2.2配置網(wǎng)絡(luò)步驟2,在Windows網(wǎng)絡(luò)連接中打開VMnet1網(wǎng)絡(luò),然后設(shè)置IPv4,2.2.2配置網(wǎng)絡(luò)步驟3,在Linux桌面環(huán)境中的任務(wù)欄右側(cè)的計算機(jī)圖標(biāo)上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“WiredSettings”選項,打開“NetworkConnections”對話框。選擇“Autoeth1”,單擊“Edit”按鈕,彈出“EditingAutoeth1”對話框,選擇“IPv4Settings”選項,在“Method”中選擇“Manual”,然后增加IP地址,單擊“Apply”按鈕2.2.2配置網(wǎng)絡(luò)步驟4,打開終端,重啟網(wǎng)絡(luò)服務(wù)器,使配置生效,當(dāng)出現(xiàn)3個“OK”后,說明網(wǎng)絡(luò)配置成功,可以用ifconfig命令查看網(wǎng)絡(luò)配置情況.2.2.2配置網(wǎng)絡(luò)使用PieTTY連接到Linux的步驟步驟1,打開PieTTY客戶端軟件,在文本框中填寫目標(biāo)IP地址,端口號是22,以SSH模式訪問端口。單擊“Open”按鈕2.2.2配置網(wǎng)絡(luò)步驟2,進(jìn)入目標(biāo)IP地址的Linux系統(tǒng)后,輸入用戶名和密碼,即可進(jìn)入命令行窗口2.2.3創(chuàng)建新的用戶組和用戶創(chuàng)建用戶組命令groupadd[-g[-o]][-r][-f]groupname2.2.3創(chuàng)建新的用戶組和用戶添加Hadoop用戶命令useradd[-dhomedir][-ggroupname][-m][-sshell][-uuserid][accountname]2.2.3創(chuàng)建新的用戶組和用戶創(chuàng)建Hadoop用戶組和Hadoop用戶創(chuàng)建用戶組hadoopGroup,并創(chuàng)建hadoop用戶,將該用戶添加到這個組,用戶主目錄為/home/hadoop2.2.4上傳文件到CentOS并配置Java和Hadoop環(huán)境1.使用WinSCP傳輸文件在root用戶下,執(zhí)行命令rm-rf/usr/local/*,刪除目錄下的所有內(nèi)容(當(dāng)前內(nèi)容無用)。使用WinSCP把JDK文件從Windows復(fù)制到/usr/local目錄下,以下是使用WinSCP傳輸文件的步驟。步驟1,打開WinSCP后,在“WinSCP登錄”對話框中單擊“新建”按鈕,如圖2-13所示。在彈出的新建對話框中輸入IP地址和用戶信息后,單擊“確定”按鈕。步驟2,在WinSCP驗證窗口的“用戶名”文本框中輸入Linux的用戶名,單擊“確定”按鈕,如圖2-14所示。步驟3,WinSCP窗口左側(cè)是Windows端,右側(cè)是Linux端,可以直接拖動文件來進(jìn)行傳輸,2-15所示2.2.4上傳文件到CentOS并配置Java和Hadoop環(huán)境1.使用WinSCP傳輸文件2.2.4上傳文件到CentOS并配置Java和Hadoop環(huán)境1.使用WinSCP傳輸文件2.2.4上傳文件到CentOS并配置Java和Hadoop環(huán)境2.解壓文件在虛擬機(jī)終端執(zhí)行如下命令將JDK文件解壓到當(dāng)前目錄: tar-zvxfjdk-8u211-linux-x64.tar.gz。其中,參數(shù)z表示調(diào)用gzip壓縮程序的功能,v表示顯示詳細(xì)解壓過程,x表示解壓文件參數(shù)指令,f參數(shù)后跟解壓的文件名。為了后面寫環(huán)境變量方便,執(zhí)行如下命令更改文件名為jdk1.8: mvjdk1.8.0_211jdk1.8。同樣,執(zhí)行解壓命令將Hadoop解壓到當(dāng)前目錄,并移動到Hadoop用戶的主目錄:
tar-zvxfhadoop-3.2.2-x64.tar.gz mvhadoop-3.2.2/home/hadoop/hadoop3.22.2.4上傳文件到CentOS并配置Java和Hadoop環(huán)境3.目錄規(guī)劃具體目錄的準(zhǔn)備與配置如下。(1)創(chuàng)建程序存儲目錄/home/hadoop/hadoop3.2,用來存儲Hadoop程序文件。(2)創(chuàng)建數(shù)據(jù)存儲目錄/home/hadoop/hadoop3.2/hdfs,用來存儲集群數(shù)據(jù)。(3)創(chuàng)建目錄/home/hadoop/hadoop3.2/hdfs/name,用來存儲文件系統(tǒng)元數(shù)據(jù)。(4)創(chuàng)建目錄/home/hadoop/hadoop3.2/hdfs/data,用來存儲真正的數(shù)據(jù)。(5)創(chuàng)建日志目錄/home/hadoop/hadoop3.2/logs,用來存儲日志信息。(6)創(chuàng)建臨時目錄/home/hadoop/hadoop3.2/tmp,用來存儲臨時生成的文件。2.2.4上傳文件到CentOS并配置Java和Hadoop環(huán)境3.目錄規(guī)劃為還不存在目錄的Hadoop程序創(chuàng)建目錄: mkdir–p/home/hadoop/hadoop3.2/hdfs在hadoop3.2當(dāng)前目錄下執(zhí)行命令:
chgrp-RhadoopGrouphadoop3.2為hadoopGroup組賦予權(quán)限:
chmod-Rg=rwxhadoop3.22.2.4上傳文件到CentOS并配置Java和Hadoop環(huán)境4.導(dǎo)入JDK環(huán)境變量執(zhí)行cd/etc命令后,再執(zhí)行viprofile命令,對profile文件進(jìn)行編輯,在“#/etc/profile”下行添加如下代碼2.2.4上傳文件到CentOS并配置Java和Hadoop環(huán)境4.導(dǎo)入JDK環(huán)境變量執(zhí)行命令sourceprofile,使配置立即生效。執(zhí)行命令java–version,查看是否安裝成功。2.2.4上傳文件到CentOS并配置Java和Hadoop環(huán)境5.導(dǎo)入Hadoop環(huán)境變量用前述方法,在profile文件中添加如下內(nèi)容。2.2.4上傳文件到CentOS并配置Java和Hadoop環(huán)境5.導(dǎo)入Hadoop環(huán)境變量執(zhí)行hadoop命令,查看Hadoop環(huán)境變量配置是否成功2.2.5修改Hadoop配置文件(1)配置~/hadoop3.2/etc/hadoop下的hadoop-env.sh、yarn-env.sh、mapred-env.sh,修改JAVA_HOME值(添加文字:exportJAVA_HOME=/usr/local/jdk1.8/)2.2.5修改Hadoop配置文件(2)配置~/hadoop3.2/etc/hadoop/slaves,這個文件保存所有從節(jié)點2.2.5修改Hadoop配置文件(3)配置~/hadoop3.2/etc/hadoop/core-site.xml,將以下代碼添加到文件中。<configuration><property><name>fs.defaultFS</name><value>hdfs://node:9000/</value><description>設(shè)定NameNode的主機(jī)名及端口</description></property>
<property><name>hadoop.tmp.dir</name><value>/home/hadoop/tmp/hadoop-${}</value><description>存儲臨時文件的目錄</description></property>
<property><name>xyuser.hadoop.hosts</name><value>*</value></property>
<property><name>xyuser.hadoop.groups</name><value>*</value></property> </configuration>2.2.5修改Hadoop配置文件(4)配置~/hadoop3.2/etc/hadoop/hdfs-site.xml,添加如下代碼。<configuration>
<property><name>node.http-address</name><value>node:50070</value><description>設(shè)定NameNode的地址和端口</description></property>
<property><name>node.secondary.http-address</name><value>node1:50090</value><description>設(shè)定SecondaryNameNode的地址和端口</description></property>
<property><name>dfs.replication</name><value>3</value><description>設(shè)定HDFS存儲文件的副本數(shù),默認(rèn)為3</description></property>
<property><name>.dir</name><value>file:///home/hadoop/hadoop3.2/hdfs/name</value><description>NameNode用來持續(xù)存儲命名空間和交換日志的本地文件系統(tǒng)路徑</description></property>
<property><name>dfs.datanode.data.dir</name><value>file:///home/hadoop/hadoop3.2/hdfs/data</value><description>DataNode用于在本地存儲塊文件的目錄列表</description></property>
<property><name>node.checkpoint.dir</name><value>file:///home/hadoop/hadoop3.2/hdfs/namesecondary</value><description>設(shè)置SecondaryNameNode來存儲臨時鏡像的本地文件系統(tǒng)路徑。如果該位置顯示一個用逗號分隔的文件列表,則鏡像將會冗余復(fù)制到所有目錄</description></property>
<property><name>dfs.webhdfs.enabled</name><value>true</value><description>判斷是否允許網(wǎng)頁瀏覽HDFS文件</description></property>
<property><name>dfs.stream-buffer-size</name><value>131072</value><description>默認(rèn)是4KB,作為Hadoop緩沖區(qū),用于Hadoop讀HDFS的文件和寫HDFS的文件,Map的輸出也用到了這個緩沖區(qū)容量,對于現(xiàn)在的硬件而言,可以設(shè)置為128KB(131072B),甚至是1MB(但會過大,Map和Reduce任務(wù)可能會出現(xiàn)內(nèi)存溢出的情況)</description></property></configuration>2.2.5修改Hadoop配置文件(5)配置~/hadoop3.2/etc/hadoop/mapred-site.xml,添加如下代碼。<configuration><property><name></name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>node:10020</value></property>
<property><name>mapreduce.jobhistory.webapp.address</name><value>node:19888</value></property>
</configuration>2.2.5修改Hadoop配置文件(6)配置~/hadoop3.2/etc/hadoop/yarn-site.xml,添加如下代碼。<configuration><property><name>yarn.resourcemanager.hostname</name><value>node</value></property>
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
<property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property>
<property><name>yarn.resourcemanager.address</name><value>node:8032</value></property>
<property><name>yarn.resourcemanager.scheduler.address</name><value>node:8030</value></property>
<property><name>yarn.resourcemanager.resource-tracker.address</name><value>node:8031</value></property>
<property><name>yarn.resourcemanager.admin.address</name><value>node:8033</value></property>
<property><name>yarn.resourcemanager.webapp.address</name><value>node:8088</value></property>
</configuration>2.2.6修改CentOS主機(jī)名修改當(dāng)前會話中的主機(jī)名:
hostnamenode要想修改配置文件中的主機(jī)名,可以執(zhí)行命令:
vi/etc/sysconfig/network。2.2.7綁定hostname與IP地址執(zhí)行命令vi/etc/hosts,在hosts文件中增加內(nèi)容如下。00 node01 node102 node203 node3執(zhí)行命令pingnode,檢驗hosts文件是否修改成功2.2.8關(guān)閉防火墻如果不關(guān)閉防火墻,則可能會出現(xiàn)以下3種情況。(1)HDFS的Web管理頁面會出現(xiàn)打不開文件瀏覽頁面的情況。(2)后臺運行腳本(如Hive)會出現(xiàn)莫名其妙的假死狀態(tài)。(3)在刪除和增加節(jié)點時,數(shù)據(jù)遷移處理時間會增長,甚至不能正常完成相關(guān)操作。執(zhí)行命令serviceiptablesstop關(guān)閉防火墻,執(zhí)行命令serviceiptablesstatus查看防火墻狀態(tài),以確認(rèn)防火墻關(guān)閉2.2.8關(guān)閉防火墻執(zhí)行上面的命令可以關(guān)閉防火墻,但因為重啟后防火墻還會自動啟動,所以還要禁止防火墻自動啟動。執(zhí)行命令chkconfigiptablesoff禁止防火墻自動啟動,執(zhí)行命令chkconfig--list|grepiptables驗證禁止防火墻自動啟動是否成功2.3境節(jié)點之間的免密碼登錄2.3.1什么是SSHSSH是由國際互聯(lián)網(wǎng)工程任務(wù)組(InternetEngineeringTaskForce,IETF)中的網(wǎng)絡(luò)工作小組(NetworkWorkingGroup)制定的。SSH是建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全外殼協(xié)議,專為遠(yuǎn)程登錄會話和其他網(wǎng)絡(luò)服務(wù)提供安全協(xié)議,即利用SSH可以有效防止遠(yuǎn)程管理過程中的信息泄露問題,且SSH具有高可靠性。2.3.2復(fù)制虛擬機(jī)節(jié)點配置完SSH后,關(guān)閉當(dāng)前開啟的虛擬機(jī),然后在菜單欄中選擇“虛擬機(jī)”→“管理”→“克隆”命令,打開“克隆虛擬機(jī)向?qū)А睂υ捒?,選擇“創(chuàng)建完整克隆”,單擊“下一步”按鈕,再設(shè)置復(fù)制的虛擬機(jī)名稱和安裝位置2.3.3配置SSH免密碼登錄(1)以root用戶為例,登錄root用戶后設(shè)置SSH(當(dāng)然也可以登錄創(chuàng)建的用戶進(jìn)行設(shè)置),運行ssh-keygen-trsa-p''-f~/.ssh/id_rsa命令以后,系統(tǒng)出現(xiàn)一系列提示,在每一個提示頁面按Enter鍵確認(rèn)。運行結(jié)束以后,在$HOME/.ssh/目錄下會新生成兩個文件:id_rsa和id_rsa.pub。前者是存放私鑰的文件,后者是存放公鑰的文件。2.3.3配置SSH免密碼登錄(2)遠(yuǎn)程主機(jī)將用戶的公鑰保存在登錄后的用戶主目錄的$HOME/.ssh/authorized_keys文件中,執(zhí)行catid_rsa.pub>>authorized_keys命令,在本機(jī)上生成authorized_keys,并驗證能否對本機(jī)進(jìn)行SSH免密碼登錄。2.3.3配置SSH免密碼登錄(3)對其他所有節(jié)點重復(fù)上述操作,生成各自的authorized_keys,通過ssh-copy-id命令復(fù)制各自的公鑰到Node2節(jié)點(可以隨機(jī)指定某個存在的節(jié)點)。以Node1節(jié)點為例,使用ssh-copy-id命令把Node1節(jié)點的公鑰復(fù)制到Node2節(jié)點的authorized_keys文件,并驗證是否配置成功。2.3.3配置SSH免密碼登錄(4)在Node2節(jié)點復(fù)制其他所有節(jié)點公鑰后的authorized_keys文件如圖所示。由此可見,所有節(jié)點的公鑰都已經(jīng)加入了這個文件。也就是說,其他節(jié)點可以免密碼登錄到Node2節(jié)點,只要把這個文件遠(yuǎn)程復(fù)制到其他所有節(jié)點中,即在Node2節(jié)點上執(zhí)行遠(yuǎn)程復(fù)制,節(jié)點之間就可以實現(xiàn)免密碼登錄了。2.4Hadoop的啟動和測試2.4.1格式化文件系統(tǒng)首先格式化NameNode,執(zhí)行命令hdfsnamenode-format,提示信息的倒數(shù)第2行出現(xiàn)“Exitingwithstatus0”表示格式化成功,如圖所示。在Linux中,0表示成功,1表示失敗。因此,如果返回“Exitingwithstatus1”,就應(yīng)該好好分析前面的提示信息。一般來說問題出在前面的配置文件和hosts文件中,修改其中的問題后,將文件同步到其他節(jié)點上以保持環(huán)境相同,再接著執(zhí)行格式化操作。2.4.2啟動HDFS執(zhí)行start-dfs.sh腳本命令,啟動HadoopHDFS服務(wù)。2.4.2啟動HDFS通過jps命令在各節(jié)點上驗證HDFS是否啟動。2.4.2啟動HDFS以通過網(wǎng)絡(luò)驗證HDFS的啟動狀況2.4.3啟動YARN在主節(jié)點Node上,執(zhí)行命令start-yarn.sh2.4.3啟動YARN可以通過jps查看各個節(jié)點啟動的進(jìn)程來驗證YARN是否啟動,當(dāng)然最方便的方法是在瀏覽器的地址欄中輸入http://node:8088/,按Enter鍵2.4.3啟動YARN啟動JobHistoryServer,通過Web瀏覽器的控制臺查看集群計算的任務(wù)信息。執(zhí)行如下命令啟動歷史任務(wù)管理器。mr-jobhistory-daemon.shstarthistoryserver啟動成功后,訪問http://node:19888/,可以查看任務(wù)執(zhí)行歷史信息2.4.5集群驗證執(zhí)行如下命令,在HDFS上創(chuàng)建目錄。 hdfsdfs-mkdir-p/data/wordcount hdfsdfs-mkdir-p/output/目錄/data/wordcount用來存儲Hadoop自帶的WordCount例子的數(shù)據(jù)文件,運行這個例子的結(jié)果將輸出到該目錄中的/output/wordcount文件中。執(zhí)行如下命令,將本地文件上傳到HDFS中(這里上傳一個配置文件)。 hdfsdfs-put/home/hadoop/hadoop3.2/etc/hadoop/core-site.xml/data/wordcount/執(zhí)行如下命令可以查看上傳后的文件情況。 hdfsdfs-ls/data/wordcount執(zhí)行如下命令運行WordCount案例。 hadoopjar/home/hadoop/hadoop3.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jarwordcount/data/wordcount/output/wordcount2.4.5集群驗證訪問http://node:8088/,可以監(jiān)視節(jié)點的運行情況2.4.6需要了解的默認(rèn)配置2.5動態(tài)管理節(jié)點2.5.1動態(tài)增加和刪除DataNode1.修改配置文件在NameNode下修改配置文件,如果集群版本是Hadoop0.x,則配置存儲在文件conf/hadoop-site.xml中;而在Hadoop2.x及之后的版本中,配置存儲在文件conf/hdfs-site.xml中。需要配置的參數(shù)為dfs.hosts和dfs.hosts.exclude。2.5.1動態(tài)增加和刪除DataNode2.添加一個節(jié)點向Hadoop中添加一個新的節(jié)點的相關(guān)步驟如下。(1)對新的DataNode做好相關(guān)配置(SSH配置、Hadoop配置、IP地址配置等)工作。(2)在主節(jié)點上的slaves文件列表中加入該DataNode的主機(jī)名(非必須,方便以后重啟集群用)。(3)若有datanode-allow.list文件,則在主節(jié)點的datanode-allow.list中加入該DataNode的主機(jī)名,若沒有,則可以自己創(chuàng)建后加入。(4)運行命令hadoop-daemon.shstartdatanode,在該DataNode上啟動DataNode進(jìn)程。2.5.1動態(tài)增加和刪除DataNode3.刪除一個節(jié)點在Hadoop中刪除一個節(jié)點的相關(guān)步驟如下。(1)在主節(jié)點上修改datanode-deny.list(沒有的話可以自己創(chuàng)建),添加要刪除的相應(yīng)節(jié)點的主機(jī)名。(2)在主節(jié)點上刷新節(jié)點配置情況,通過運行命令hadoopdfsadmin–refreshNodes實現(xiàn)。(3)此時在WebUI上可以看到該節(jié)點的狀態(tài)變?yōu)镈ecommissioning狀態(tài),之后變?yōu)镈ead狀態(tài)。也可以通過hadoopdfsadmin-report命令查看刪除節(jié)點的操作是否成功。(4)運行命令hadoop-daemon.shstopdatanode,在從節(jié)點上關(guān)閉DataNode進(jìn)程(非必須)。2.5.1動態(tài)增加和刪除DataNode4.重新加入各個被刪除的節(jié)點下面是關(guān)于重新加入被刪除的節(jié)點的操作說明。(1)在主節(jié)點的datanode-deny.list中刪除相應(yīng)節(jié)點的主機(jī)名。(2)在主節(jié)點刷新節(jié)點配置情況,通過運行命令hadoopdfsadmin–refreshNodes實現(xiàn)。(3)在欲加入的節(jié)點上重啟DataNode進(jìn)程,通過運行命令hadoop-daemon.shstartdatanode2.5.2動態(tài)修改TaskTracker1.修改配置文件對于Hadoop2.0以后的版本而言,需要在NameNode中修改配置文件conf/mapred-site.xml,以及關(guān)鍵參數(shù)mapred.hosts和mapred.hosts.exclude。下面對這兩個參數(shù)進(jìn)行說明。mapred.hosts:即mapreduce.jobtracker.hosts.filename,定義允許與JobTracker節(jié)點通信的節(jié)點列表文件,如果其值為空,則所有節(jié)點都不允許與之通信。mapred.hosts.exclude:即mapreduce.jobtracker.hosts.exclude.filename,定義不允許與JobTracker節(jié)點通信的節(jié)點列表文件,如果其值為空,則所有節(jié)點都允許與之通信。如修改mapred-site.xml,可以添加如下參數(shù)。2.5.2動態(tài)修改TaskTracker2.添加TaskTracker(1)在新的從節(jié)點上做好相關(guān)配置(SSH配置、Hadoop配置、IP地址配置等)工作。(2)在主節(jié)點上的slaves列表文件中加入該從節(jié)點(非必須,方便以后重啟集群用)。(3)在tasktracker-allow.list中加入該從節(jié)點的主機(jī)名,如果沒有主機(jī)名,則可以自己創(chuàng)建后加入。(4)在該從節(jié)點上啟動TaskTracker進(jìn)程,運行命令hadoop-daemon.shstarttasktracker。2.5.2動態(tài)修改TaskTracker3.刪除TaskTracker不建議直接在從節(jié)點上通過hadoop-daemon.shstoptasktracker命令關(guān)掉TaskTracker,這會導(dǎo)致NameNode認(rèn)為這些機(jī)器只是暫時失聯(lián),在超時時間內(nèi)(默認(rèn)為10min左右)依然假設(shè)它們是正常的,還會將任務(wù)發(fā)送給它們。正常的刪除步驟應(yīng)如下。(1)在主節(jié)點上修改tasktracker-deny.list(沒有的話可以自己創(chuàng)建),添加相應(yīng)機(jī)器。(2)在主節(jié)點上刷新節(jié)點配置情況,通過執(zhí)行命令hadoopmradmin–refreshNodes實現(xiàn)。(3)在從節(jié)點上關(guān)閉TaskTracker進(jìn)程(非必須),通過執(zhí)行命令hadoop-daemon.shstoptasktracker實現(xiàn)。2.5.2動態(tài)修改TaskTracker4.重新加入各個刪除的節(jié)點(1)在主節(jié)點的tasktracker-deny.list中刪除相應(yīng)機(jī)器。(2)在主節(jié)點上刷新節(jié)點配置情況,通過執(zhí)行命令hadoopmradmin–refreshNodes實現(xiàn)。(3)在從節(jié)點上重啟TaskTracker進(jìn)程,通過執(zhí)行命令hadoop-daemon.shstarttasktracker實現(xiàn)。本章完第三章HDFS技術(shù)3.1HDFS的特點3.1HDFS的特點簡單一致性核心:“一次寫,多次讀”,寫入文件不可修改;若需修改,需在HDFS外處理后重新上傳(如搜索引擎文件)。故障檢測與自動恢復(fù)基于廉價硬件,支持自動檢測節(jié)點故障;通過多副本機(jī)制(默認(rèn)3份)快速修復(fù)損壞數(shù)據(jù),對用戶透明。流式數(shù)據(jù)訪問優(yōu)化數(shù)據(jù)吞吐量(非交互型小數(shù)據(jù)),放寬POSIX規(guī)范,適合長時間分析大數(shù)據(jù)集。支持超大文件存儲適配GB/TB級文件;避免大量小文件(會占用NameNode內(nèi)存)。優(yōu)化讀?。C(jī)架感知)優(yōu)先從同機(jī)架節(jié)點讀取數(shù)據(jù),跨數(shù)據(jù)中心時優(yōu)先近距離復(fù)制,減少跨機(jī)架網(wǎng)絡(luò)開銷。數(shù)據(jù)完整性客戶端計算數(shù)據(jù)塊校驗和,存儲為隱藏文件;讀取時比對校驗和,不一致則從其他副本獲取。3.2點HDFS架構(gòu)3.2HDFS架構(gòu)HDFS采用典型的主從架構(gòu),包括一個主節(jié)點(NameNode或者M(jìn)etadataNode),負(fù)責(zé)管理系統(tǒng)命名管理空間(NameSpace)、控制客戶端文件操作、管理和分配存儲任務(wù);多個從節(jié)點(DataNode),提供真實文件數(shù)據(jù)的物理支持。3.2.1數(shù)據(jù)塊塊大小設(shè)計默認(rèn)64MB(企業(yè)常用128MB),計算公式:splitSize=max{minSize,min{maxSize,blockSize}}目的:減少尋址時間占比(目標(biāo)1%),平衡并行度(避免Map任務(wù)過少)。塊的優(yōu)勢支持存儲超單磁盤容量的大文件;按塊備份提升容錯性(默認(rèn)3副本),損壞后自動恢復(fù)。塊信息查看工具-fsck命令語法:hdfsfsck<path>-blocks-files功能:檢查指定目錄的數(shù)據(jù)塊健康狀況、顯示塊信息與文件名。示例:hdfsfsck/input-blocks-files(查看/input目錄塊信息)3.2.2NameNode與DataNodeNameNode(主節(jié)點)核心作用:管理集群命名空間、維護(hù)文件樹狀元數(shù)據(jù)、協(xié)調(diào)DataNode。元數(shù)據(jù)存儲:fsimage:文件系統(tǒng)鏡像(全量命名空間信息);editslog:編輯日志(增量事務(wù)記錄);存儲路徑:本地磁盤+NFS(防止損壞,配置2個目錄)。文件結(jié)構(gòu):current目錄(含VERSION文件、edits文件、fsimage文件),VERSION記錄namespaceID、clusterID等。3.2.2NameNode與DataNode
DataNode(從節(jié)點)核心作用:存儲數(shù)據(jù)塊、響應(yīng)客戶端讀寫、向NameNode上報塊信息(心跳機(jī)制,默認(rèn)3s一次)。文件結(jié)構(gòu):blk_refix:原始數(shù)據(jù)塊(默認(rèn)128MB);blk_refix.meta:塊元數(shù)據(jù)(版本+校驗和,默認(rèn)1MB);subdir:子目錄存儲塊文件與元數(shù)據(jù)。心跳機(jī)制:若超時(timeout=2erval+10erval),NameNode標(biāo)記節(jié)點為“Dead”。3.2.3輔助NameNode輔助NameNode:元數(shù)據(jù)合并與恢復(fù)核心作用周期性合并fsimage與editslog,清空舊日志,減少NameNode重啟時間;非NameNode備份,狀態(tài)滯后于NameNode,用于NameNode故障時部分恢復(fù)。3.2.3輔助NameNodeNameNode停止寫edits,新建edits.new;輔助NameNode通過HTTPGET獲取舊edits與fsimage;內(nèi)存中合并生成新鏡像fsimage.ckpt(CheckPoint);HTTPPOST將fsimage.ckpt傳回NameNode;NameNode更新fsimage,重命名edits.new為edits。輔助NameNode合并編輯日志文件的過程3.2.4安全模式與負(fù)載均衡HDFS的一個關(guān)鍵特性是能夠同時提供安全模式和負(fù)載均衡,以安全和高效的方式存儲和處理大量數(shù)據(jù)。在安全模式方面,HDFS支持各種身份驗證和授權(quán)機(jī)制,這使得系統(tǒng)能夠保護(hù)自己的數(shù)據(jù),并確保只有經(jīng)過授權(quán)的用戶才能訪問這些數(shù)據(jù),只有數(shù)據(jù)安全有了保障,信息安全才有保障。3.2.4安全模式與負(fù)載均衡當(dāng)NameNode啟動時,NameNode會讀取文件系統(tǒng)鏡像文件并將其加載到內(nèi)存中,然后繼續(xù)讀取并執(zhí)行編輯日志文件中記錄的各項操作,接著開始監(jiān)聽RPC和HTTP請求,此時會進(jìn)入一種特殊狀態(tài),即安全模式(Safe
Mode)狀態(tài)。在此狀態(tài)下,各個
DataNode
將心跳報告和塊列表信息發(fā)送到NameNode,而塊列表信息保存的是數(shù)據(jù)塊的位置信息,NameNode的內(nèi)存中會保留所有節(jié)點的塊列表信息,當(dāng)塊列表信息足夠時,即退出安全模式,這個過程一般需耗時30s。3.2.4安全模式與負(fù)載均衡觸發(fā)場景:NameNode啟動時(加載fsimage、執(zhí)行editslog后)。核心邏輯:DataNode上報塊列表,滿足“最小復(fù)制條件”(默認(rèn)副本數(shù)≥1)后退出,期間僅可訪問元數(shù)據(jù),不可讀寫文件。關(guān)鍵命令:查看狀態(tài):hdfsdfsadmin-safemodeget進(jìn)入安全模式:hdfsdfsadmin-safemodeenter離開安全模式:hdfsdfsadmin-safemodeleave3.2.4安全模式與負(fù)載均衡目的:避免節(jié)點任務(wù)不均,優(yōu)化資源利用率(考慮機(jī)架感知)。核心組件:Balancer類(獨立進(jìn)程,調(diào)整塊分布)。關(guān)鍵配置與命令:帶寬限制:dfs.balance.bandwidthPerSec(默認(rèn)1MB/s);均衡命令:hadoopbalance[-threshold<threshold>](默認(rèn)閾值10%,磁盤容量占比差)。3.2.5垃圾回收垃圾分類第一類:正常邏輯產(chǎn)生(文件刪除、塊遷移后的原始塊),NameNode記錄至“最近無效集”;第二類:異常產(chǎn)生(節(jié)點重啟后過期副本),DataNode上報塊信息時比對識別?;厥照緳C(jī)制存儲目錄:/user/${USER}/.Trash/Current(用戶可在此目錄恢復(fù)文件);清理機(jī)制:NameNode后臺線程Emptier,按erval配置周期(默認(rèn)0,即直接刪除;配置1440為24小時)清理過期文件。強(qiáng)制刪除命令:hdfsdfs-rm-skipTrash<src>(文件不進(jìn)入回收站,直接刪除)。3.2點HDFS架構(gòu)3.3.1文件處理命令開啟HDFS,執(zhí)行命令hdfsdfs,輸出HDFS支持的命令列表3.3.1文件處理命令ls:列出目錄/文件語法:hdfsdfs-ls[-d/-h/-R]<path>功能:-d列目錄、-h顯單位(如KB/MB)、-R遞歸列子目錄示例:hdfsdfs-ls/(列出根目錄下文件/目錄)mkdir:創(chuàng)建目錄語法:hdfsdfs-mkdir[-p]<path>功能:-p創(chuàng)建多級目錄(如dir0/dir1/dir2)示例:hdfsdfs-mkdir-pdir0/dir1/dir2cat/text/tail:查看文件內(nèi)容語法:hdfsdfs-cat<src>;hdfsdfs-tail[-f]<file>功能:text支持壓縮文件,tail查看最后1KB,-f動態(tài)更新(如日志)示例:hdfsdfs-tail/input/file3.3.1文件處理命令4.touchz:創(chuàng)建空文件語法:hdfsdfs-touchz<path>功能:創(chuàng)建0字節(jié)文件,若文件已存在且非空則報錯示例:hdfsdfs-touchz/user/root/dir/file5.appendToFile:追加文件語法:hdfsdfs-appendToFile<localsrc><dst>功能:將本地文件內(nèi)容追加到HDFS文件,“-”表示鍵盤輸入示例:hdfsdfs-appendToFile-dir/file(鍵盤輸入內(nèi)容追加到dir/file)6.put/get:上傳/下載文件語法:hdfsdfs-put<localsrc><dst>;hdfsdfs-get<src><localdst>功能:put本地→HDFS,getHDFS→本地;-f覆蓋已存在文件,-p保留原始屬性示例:hdfsdfs-putlocalfile/user/root(本地localfile上傳到HDFS的/user/root)3.3.1文件處理命令7.rm:刪除文件/目錄語法:hdfsdfs-rm[-f/-r/-skipTrash]<src>功能:-r遞歸刪除目錄,-f忽略不存在文件,-skipTrash跳過回收站示例:hdfsdfs-rm-rdir(遞歸刪除dir目錄)8.du:顯示磁盤占用語法:hdfsdfs-du[-s/-h]<path>功能:-s顯示總大小,-h顯單位(如KB/MB)示例:hdfsdfs-du-h/user/root(顯示/user/root目錄占用,帶單位)3.3.2交互式命令1.dfsadmin命令dfsadmin是一個多任務(wù)客戶端工具,用來顯示HDFS運行狀態(tài)和管理HDFS常用選項及說明:-report:顯示集群基本信息(節(jié)點數(shù)量、塊統(tǒng)計、磁盤使用等),與HDFSWeb界面功能一致-safemode<enter/leave/get/wait>:安全模式操作,enter進(jìn)入、leave離開、get查看狀態(tài)、wait等待退出安全模式-refreshNodes:重新讀取主機(jī)允許/拒絕列表,更新可與NameNode通信的DataNode集-setQuota<quota><dirname>:設(shè)置目錄配額(限制目錄下文件/子目錄數(shù)量),quota為正整數(shù)-help[cmd]:查看指定命令的幫助信息3.3.2交互式命令2.NameNode(元數(shù)據(jù)管理命令)格式化NameNode、升級回滾、導(dǎo)入檢查點等常用選項及說明:-format:格式化NameNode(首次啟動前執(zhí)行),會生成namespaceID等元數(shù)據(jù)-upgrade:NameNode版本更新后啟動,保留舊版本數(shù)據(jù)以便回滾-rollback:回滾到前一版本,需先停止集群并分發(fā)舊版本-importCheckpoint:從檢查點目錄(fs.checkpoint.dir)加載鏡像,用于NameNode故障恢復(fù)3.3.2交互式命令3.fsck(塊健康檢查命令)語法:hdfsfsck<path>[-move/-delete/-openforwrite/-files/-blocks/-locations]常用選項及說明:-move:將損壞文件移至/lost+found目錄-delete:直接刪除損壞文件-openforwrite:輸出正在寫入的文件-files:顯示檢查的文件名-blocks:顯示塊報告(需與-files搭配)-locations:顯示每個塊的存儲位置(需與-files搭配)3.3.2交互式命令4.job(MapReduce作業(yè)交互命令)功能:提交作業(yè)、查看作業(yè)狀態(tài)、終止作業(yè)等。語法:mapredjob常用選項及說明:-submit<job-file>:提交MapReduce作業(yè)-status<job-id>:查看指定作業(yè)的進(jìn)度(Map/Reduce完成百分比)與計數(shù)器-kill<job-id>:終止指定ID的作業(yè)進(jìn)程-set-priority<job-id><priority>:修改作業(yè)優(yōu)先級,優(yōu)先級值:VERY_HIGH、HIGH、NORMAL、LOW、VERY_LOW-list[all]:顯示未完成的作業(yè),加all顯示所有作業(yè)(含已完成)3.4HDFS中JavaAPI的使用3.4HDFS中JavaAPI的使用Hadoop整合了眾多文件系統(tǒng),其中有一個綜合性的抽象文件系統(tǒng),它提供了文件系統(tǒng)實現(xiàn)的各類接口。HDFS只是這個抽象文件系統(tǒng)的一個實例,它提供了一個高層的文件系統(tǒng)抽象類org.apache.hadoop.fs.FileSystem,這個抽象類展示了一個分布式文件系統(tǒng),并有幾個具體實現(xiàn)3.4.1上傳文件通過FileSystem.copyFromLocalFile(Pathsrc,Pathdst),可以將本地文件上傳到HDFS指定的位置,其中,src和dst均為文件的完整路徑3.4.2新建文件通過FileSystem.create(Pathf,Booleanb),可以在HDFS上創(chuàng)建文件,其中,f為文件的完整路徑,b為判斷是否覆蓋,具體實現(xiàn)如下。3.4.3查看文件詳細(xì)信息通過FileStatus,可以查找指定文件在HDFS集群上的詳細(xì)信息,包括文件訪問時間、文件修改時間、文件所占塊大小、文件長度、文件所在用戶組、文件擁有者和文件副本數(shù)等信息3.4.4下載文件將文件從HDFS下載到本地非常簡單,直接調(diào)用FileSystem.copyToLocalFile(Pathsrc,Pathdst)即可。其中,src為HDFS上的文件的路徑,dst為要下載到本地的文件的路徑3.5RPC通信3.5RPC通信1.RPC特點RPC的主要特點如下。(1)透明性:通過RPC遠(yuǎn)程調(diào)用其他機(jī)器上的程序,對用戶來說就像是調(diào)用本地方法一樣。(2)高性能:RPCServer能夠并發(fā)處理多個來自客戶端的請求。(3)可控性:JDK中已經(jīng)提供了一個RPC框架——RMI,但是該RPC框架過于重量級并且可控之處比較少,所以HadoopRPC實現(xiàn)了自定義的RPC框架。3.5.1反射機(jī)制反射機(jī)制定義:Java在運行時動態(tài)獲取類的屬性、方法,動態(tài)調(diào)用對象方法的能力,是RPC實現(xiàn)動態(tài)調(diào)用的核心。核心類:Class關(guān)鍵方法:getName():返回類的完整名稱(如org.apache.hadoop.examples.Student);newInstance():創(chuàng)建類的實例(調(diào)用默認(rèn)構(gòu)造方法);getMethods():獲取類的所有公共方法(含繼承的方法);getFields():獲取類的所有公共屬性;getInterfaces():獲取類實現(xiàn)的所有接口。作用:HadoopRPC通過反射機(jī)制解析服務(wù)端接口的方法與參數(shù),實現(xiàn)跨節(jié)點的方法調(diào)用,無需提前知曉具體接口實現(xiàn)。3.5.2代理模式與動態(tài)代理代理模式的作用是為真實對象提供代理,讓代理來控制對對象的訪問。有時,客戶不想或者不能夠直接引用一個對象,而代理對象可以在客戶端和目標(biāo)對象之間起到類似中介的作用核心角色:抽象對象(AbstractObject):聲明真實對象與代理對象的共同接口(如定義operation()方法);真實對象(RealObject):實現(xiàn)抽象對象接口,是代理對象代表的目標(biāo)對象(如RealObject的operation()實現(xiàn)具體業(yè)務(wù)邏輯);代理對象(ProxyObject):持有真實對象引用,實現(xiàn)抽象對象接口,在調(diào)用真實對象方法前后可附加額外操作(如日志記錄、權(quán)限校驗)。代理模式類圖3.5.3HadoopRPC機(jī)制核心類與作用Client:RPC客戶端,負(fù)責(zé)與服務(wù)端建立連接、發(fā)送請求(方法+參數(shù))、接收響應(yīng)結(jié)果;Server:RPC服務(wù)端,監(jiān)聽端口、接收客戶端請求、執(zhí)行對應(yīng)方法、返回結(jié)果;VersionedProtocol:所有RPC協(xié)議的父接口,僅含getProtocolVersion()方法(用于版本兼容);RPC:RPC核心工具類,提供waitForProxy()(生成客戶端代理)、getServer()(創(chuàng)建服務(wù)端)等靜態(tài)方法。3.5.3HadoopRPC機(jī)制整個RPC架構(gòu)如圖所示。遠(yuǎn)程的對象擁有固定的接口,這些接口對調(diào)用者也是可見的,真正的實現(xiàn)只在服務(wù)器端。用戶如果想使用某個接口實現(xiàn)的話,則調(diào)用接口實現(xiàn)的過程如下:先根據(jù)某個接口動態(tài)代理生成一個代理對象,調(diào)用這個代理對象時,用戶的調(diào)用請求被RPC客戶端捕捉到,然后RPC客戶端包裝調(diào)用請求,將調(diào)用請求序列化成數(shù)據(jù)流發(fā)送到RPC服務(wù)器端;RPC服務(wù)器端從數(shù)據(jù)流中解析出調(diào)用請求,然后調(diào)用用戶希望調(diào)用的接口,真正實現(xiàn)對象,再把調(diào)用結(jié)果返回給RPC客戶端。本章完第四章YARN技術(shù)4.1YARN概述4.1YARN概述ApacheHadoop另一種資源協(xié)調(diào)者(YetAnotherResourceNegotiator,YARN)是一種通用的Hadoop資源管理器調(diào)度平臺。YARN的基本思想是將JobTracker的兩個主要功能(資源管理和作業(yè)調(diào)度/監(jiān)控)分離,主要方法是創(chuàng)建一個全局的RM和若干個針對應(yīng)用程序的AM。這里的應(yīng)用程序是指傳統(tǒng)的Ma
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2026年初一生物(考點梳理)上學(xué)期試題及答案
- 2025年高職音樂教育(聲樂演唱)試題及答案
- 高職第三學(xué)年(網(wǎng)絡(luò)工程技術(shù))網(wǎng)絡(luò)安全防護(hù)2026年綜合測試題及答案
- 2025年高職汽車檢測與維修技術(shù)(新能源汽車檢測與維修)試題及答案
- 2025年大學(xué)(家政學(xué))家庭心理學(xué)綜合測試卷及答案
- 2025年中職(金屬礦開采技術(shù))采礦工藝基礎(chǔ)測試題及答案
- 2025年中職畜牧獸醫(yī)(動物防疫)試題及答案
- 2025年高職城市軌道交通工程技術(shù)(城市軌道交通工程技術(shù))試題及答案
- 2023年 中考數(shù)學(xué)專題提升訓(xùn)練-二次函數(shù)(選擇題、填空題)
- 2025個人年終總結(jié)報告范文
- GB/T 18894-2016電子文件歸檔與電子檔案管理規(guī)范
- GB 10133-2014食品安全國家標(biāo)準(zhǔn)水產(chǎn)調(diào)味品
- 急診科主任-個人述職報告-課件
- 水肥一體化控制系統(tǒng)實施方案
- 采氣工程課件
- 工時的記錄表
- 統(tǒng)編版六年級道德與法治上冊《期末測試卷》測試題教學(xué)課件PPT小學(xué)公開課
- 金屬材料與熱處理全套ppt課件完整版教程
- 熱拌瀝青混合料路面施工機(jī)械配置計算(含表格)
- 水利施工CB常用表格
- 微生物限度檢查室空調(diào)凈化系統(tǒng)確認(rèn)方案
評論
0/150
提交評論