版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Hadoop系統(tǒng)搭建及項(xiàng)目實(shí)踐全套可編輯PPT課件目錄Contents項(xiàng)目1項(xiàng)目2項(xiàng)目3項(xiàng)目4Hadoop基礎(chǔ)知識Hadoop安裝與配置管理HDFS技術(shù)MapReduce技術(shù)項(xiàng)目5項(xiàng)目6Hadoop
I/O操作HBase技術(shù)目錄Contents項(xiàng)目7項(xiàng)目8項(xiàng)目9項(xiàng)目10ZooKeeper技術(shù)分布式數(shù)據(jù)倉庫技術(shù)Hive分布式數(shù)據(jù)分析工具PigHadoop與RDMS數(shù)據(jù)遷移工具Sqoop項(xiàng)目11Hadoop
實(shí)時數(shù)據(jù)處理技術(shù)Hadoop基礎(chǔ)知識項(xiàng)目1任務(wù)1認(rèn)識Hadoop任務(wù)2理解Hadoop體系架構(gòu)任務(wù)3理解Hadoop與分布式開發(fā)任務(wù)4Hadoop應(yīng)用案例簡介目標(biāo)了解Hadoop的發(fā)展歷史。理解Hadoop的體系架構(gòu)。掌握Hadoop與分布式開發(fā)。了解Hadoop的應(yīng)用案例。任務(wù)1認(rèn)識Hadoop1.1.1Hadoop的由來2006年,開發(fā)人員將NDFS和MapReduce移出Nutch,形成獨(dú)立項(xiàng)目,稱為Hadoop。說到Hadoop,就不得不提到DougCutting,如圖1-1所示。2002年,開源組織Apache成立開源搜索引擎項(xiàng)目Nutch,但在Nutch開發(fā)過程中,始終無法有效地將計算任務(wù)分配到多臺計算機(jī)上。2002年,開源組織Apache成立開源搜索引擎項(xiàng)目Nutch,但在Nutch開發(fā)過程中,始終無法有效地將計算任務(wù)分配到多臺計算機(jī)上。Hadoop是通過開源代碼形式提供的軟件平臺產(chǎn)品。圖1-1“Hadoop之父”DougCutting任務(wù)1認(rèn)識Hadoop1.1.1Hadoop的由來2004年,Cutting和同為程序員出身的MikeCafarella決定開發(fā)一款可以代替當(dāng)時的主流搜索產(chǎn)品的開源搜索引擎,這個項(xiàng)目被命名為Nutch。在此之前,Cutting所在的公司Architext因沒有頂住互聯(lián)網(wǎng)經(jīng)濟(jì)泡沫的沖擊而破產(chǎn),那時的Cutting正處在自由職業(yè)者的生涯中,所以他希望自己的項(xiàng)目能通過一種低開銷的方式來構(gòu)建網(wǎng)頁中的大量算法。幸運(yùn)的是,Google這時正好發(fā)布了一項(xiàng)研究報告,報告中介紹了兩款Google為支持自家的搜索引擎而開發(fā)的軟件平臺。這兩個平臺,一個是GFS(GoogleFileSystem),用于存儲不同設(shè)備所產(chǎn)生的海量數(shù)據(jù);另一個是MapReduce,它運(yùn)行在GFS之上,負(fù)責(zé)分布式大規(guī)模數(shù)據(jù)。基于這兩個平臺,Cutting最引人注目的作品——Hadoop誕生了。任務(wù)1認(rèn)識Hadoop1.1.1Hadoop的由來DougCutting如此解釋Hadoop的得名:這個名字是我孩子給一頭吃飽了的棕黃色大象命名的。我的命名標(biāo)準(zhǔn)就是簡短,容易發(fā)音和拼寫,沒有太多的意義,并且不會被用于別處。任務(wù)1認(rèn)識Hadoop1.1.2關(guān)于Hadoop的版本不收費(fèi)的Hadoop版本主要有國外的4個,分別是Apache基金會Hadoop、Cloudera版本(CDH)、Hortonworks版本(HDP)、MapR版本。1.第一代、第二代和第三代第一代Hadoop稱為Hadoop1.0第二代Hadoop稱為Hadoop2.00.20.x0.23.xApacheHadoop版本0.21.x0.22.x2.x第三代Hadoop稱為Hadoop3.0任務(wù)1認(rèn)識Hadoop1.1.2關(guān)于Hadoop的版本1.第一代和第二代Hadoop版本的特性有以下幾個:Append支持文件追加功能,如果想使用HBase,需要這個特性。(1)(2)(3)04RAID在保證數(shù)據(jù)可靠的前提下,通過引入校驗(yàn)碼減少數(shù)據(jù)塊數(shù)目。Symlinks支持HDFS文件鏈接。SecurityHadoop安全。任務(wù)1認(rèn)識Hadoop1.1.2關(guān)于Hadoop的版本1.第一代和第二代需要注意的是,Hadoop2.0主要由Yahoo獨(dú)立出來的Hortonworks公司主持開發(fā)。2013年10月,Hadoop2.0發(fā)布,關(guān)鍵特性包括以下內(nèi)容。(1)YARN(2)HDFS單點(diǎn)故障得以解決(3)HDFSFederation(4)HDFS快照(5)通過NFSv3訪問HDFS(6)支持Windows操作系統(tǒng)(7)兼容1.x上運(yùn)行的MapReduce應(yīng)用程序。任務(wù)1認(rèn)識Hadoop1.1.2關(guān)于Hadoop的版本2.Hadoop2.3.0新版本不僅增強(qiáng)了核心平臺的大量功能,還修復(fù)了大量bug。新版本對HDFS做了兩個非常重要的增強(qiáng):支持異構(gòu)的存儲層次和通過數(shù)據(jù)節(jié)點(diǎn)為存儲在HDFS中的數(shù)據(jù)提供內(nèi)存緩存功能。借助HDFS對異構(gòu)存儲層次的支持,人們將能夠在同一個Hadoop集群上使用不同的存儲類型。在YARN方面,資源管理器自動故障轉(zhuǎn)移功能的研發(fā)已經(jīng)進(jìn)入尾聲。此外,2.3.0版本還對YARN做了一些關(guān)鍵的運(yùn)維方面的增強(qiáng),如更好的日志、錯誤處理和診斷等。任務(wù)1認(rèn)識Hadoop1.1.2關(guān)于Hadoop的版本3.Hadoop2.4.02014年4月,Hadoop2.4.0發(fā)布,關(guān)鍵特性包括:(1)HDFS支持訪問控制列表(accesscontrollists,ACLs)(2)原生支持HDFS滾動升級(3)HDFSFsImage用到了protocol-buffers,從而可以平滑地升級。(4)HDFS完全支持HTTPS特性(5)YARNResourceManager支持自動故障轉(zhuǎn)移,解決了YARNResourceManager的單點(diǎn)故障。(6)對YARN的ApplicationHistoryServer和ApplicationTimelineServer上的新應(yīng)用加強(qiáng)了支持。(7)通過搶占使得YARNCapacityScheduler支持強(qiáng)SLAs協(xié)議。任務(wù)1認(rèn)識Hadoop1.1.2關(guān)于Hadoop的版本4.Hadoop2.5.02014年8月,Hadoop2.5.0發(fā)布,關(guān)鍵特性包括:(1)Common①使用HTTP代理服務(wù)器時的認(rèn)證改進(jìn)。當(dāng)通過代理服務(wù)器使用WebHDFS時,這是非常有用的。②增加了一個新的Hadoop指標(biāo)監(jiān)控sink,允許直接寫到Graphite。③Hadoop文件系統(tǒng)兼容相關(guān)的規(guī)范工作。任務(wù)1認(rèn)識Hadoop1.1.2關(guān)于Hadoop的版本4.Hadoop2.5.02014年8月,Hadoop2.5.0發(fā)布,關(guān)鍵特性包括:(2)HDFS①支持POSIX風(fēng)格的擴(kuò)展文件系統(tǒng)。更多的細(xì)節(jié)可以查看ExtendedAttributesinHDFS文檔。②支持離線image瀏覽,客戶端現(xiàn)在可以通過WebHDFS的API瀏覽一個FsImage。③NFS網(wǎng)關(guān)得到大量可支持性的改進(jìn)和bug修復(fù)。Hadoopportmapper不再需要運(yùn)行網(wǎng)關(guān),網(wǎng)關(guān)現(xiàn)在可以拒絕沒有權(quán)限的端口的連接。④SecondaryNameNode、JournalNode和DataNode的WebUI已經(jīng)使用HTML5和JavaScript美化。任務(wù)1認(rèn)識Hadoop1.1.2關(guān)于Hadoop的版本4.Hadoop2.5.02014年8月,Hadoop2.5.0發(fā)布,關(guān)鍵特性包括:(3)YARN①YARN的RESTAPI支持寫/修改操作。用戶可以用RESTAPI提交和殺死應(yīng)用程序。②時間線存儲到Y(jié)ARN,用來存儲一個應(yīng)用通用的和特殊的信息,支持Kerberos認(rèn)證。③公平調(diào)度器支持動態(tài)分層用戶隊列,運(yùn)行時,用戶隊列在任一指定的父隊列中被動態(tài)地創(chuàng)建。任務(wù)1認(rèn)識Hadoop1.1.2關(guān)于Hadoop的版本5.Hadoop2.6.0其關(guān)鍵特性包括:CommonTracingHDFSMapReduceYARN任務(wù)1認(rèn)識Hadoop1.1.2關(guān)于Hadoop的版本6.Hadoop2.7.0和Hadoop2.7.1CommonHDFSMAPREDUCE支持WindowsAzureStorage,BLOB作為Hadoop中的文件系統(tǒng)。①支持文件截斷(filetruncate)。②支持每個存儲類型配額。③支持可變長度的塊文件。①能夠限制運(yùn)行的MapReduce作業(yè)的任務(wù)。②為非常大的Job(有許多輸出文件)加快了FileOutputCommitter。任務(wù)1認(rèn)識Hadoop1.1.2關(guān)于Hadoop的版本你知道嗎?不收費(fèi)的Hadoop版本主要有哪幾個呢?任務(wù)2理解Hadoop體系架構(gòu)1.2.1Hadoop1.x和Hadoop2.x的區(qū)別Hadoop1.x時期的系統(tǒng)架構(gòu)如圖1-3所示。圖1-3Hadoop1.x時期的系統(tǒng)架構(gòu)圖1-4Hadoop2.x時期的系統(tǒng)架構(gòu)Hadoop2.x時期的系統(tǒng)架構(gòu)如圖1-4所示。任務(wù)2理解Hadoop體系架構(gòu)1.2.1Hadoop1.x和Hadoop2.x的區(qū)別Hadoop2.x相比Hadoop1.x最大的變化是增加了YARN組件,YARN是一個資源管理和任務(wù)調(diào)度的框架,主要包含三大模塊:ResourceManager(RM)、NodeManager(NM)和ApplicationMaster(AM)。區(qū)別幾個模塊之間的關(guān)系如圖1-5所示。圖1-5YARN的模塊結(jié)構(gòu)任務(wù)2理解Hadoop體系架構(gòu)1.2.1Hadoop1.x和Hadoop2.x的區(qū)別1.ResourceManager(1)ResourceManager負(fù)責(zé)整個集群的資源管理和分配,是一個全局的資源管理系統(tǒng)。(2)NodeManager以心跳的方式向ResourceManager匯報資源使用情況。RM只接受NM的資源回報信息,對于具體的資源處理,則交給NM自行處理。(3)YARNScheduler根據(jù)application的請求為其分配資源,不負(fù)責(zé)applicationjob的監(jiān)控、追蹤、運(yùn)行狀態(tài)反饋、啟動等工作。任務(wù)2理解Hadoop體系架構(gòu)1.2.1Hadoop1.x和Hadoop2.x的區(qū)別2.NodeManager(1)(2)(3)NodeManager是每個節(jié)點(diǎn)上的資源和任務(wù)管理器,它是管理這臺機(jī)器的代理,負(fù)責(zé)該節(jié)點(diǎn)程序的運(yùn)行,以及該節(jié)點(diǎn)資源的管理和監(jiān)控。YARN集群每個節(jié)點(diǎn)都運(yùn)行一個NodeManager。NodeManager定時向ResourceManager匯報本節(jié)點(diǎn)資源(CPU、內(nèi)存)的使用情況和container的運(yùn)行狀態(tài)。NodeManager接收并處理來自ApplicationMaster的container啟動、停止等各種請求。任務(wù)2理解Hadoop體系架構(gòu)1.2.1Hadoop1.x和Hadoop2.x的區(qū)別3.ApplicationMaster(1)用戶提交的每個應(yīng)用程序均包含一個ApplicationMaster,它可以運(yùn)行在ResourceManager以外的機(jī)器上。(2)負(fù)責(zé)與RM調(diào)度器協(xié)商以獲取資源(用container表示)。(3)將得到的任務(wù)進(jìn)一步分配給內(nèi)部的任務(wù)(資源的二次分配)。(4)與NM通信以啟動/停止任務(wù)。(5)監(jiān)控所有任務(wù)運(yùn)行狀態(tài),并在任務(wù)運(yùn)行失敗時重新為任務(wù)申請資源以重啟任務(wù)。(6)當(dāng)前YARN自帶了兩個ApplicationMaster實(shí)現(xiàn),一個是用于演示AM編寫方法的實(shí)例程序DistributedShel;另一個是運(yùn)行MapReduce應(yīng)用程序的AM,即MRAppMaster。注YARN的運(yùn)行流程如圖1-6所示。任務(wù)2理解Hadoop體系架構(gòu)1.2.1Hadoop1.x和Hadoop2.x的區(qū)別3.ApplicationMaster圖1-6YARN的運(yùn)行流程任務(wù)2理解Hadoop體系架構(gòu)1.2.2HDFS架構(gòu)HDFS的體系結(jié)構(gòu)如圖1-7所示。圖1-7HDFS的體系結(jié)構(gòu)任務(wù)2理解Hadoop體系架構(gòu)1.2.2HDFS架構(gòu)1.NameNodeNameNode是整個文件系統(tǒng)的管理節(jié)點(diǎn)。它維護(hù)著整個文件系統(tǒng)的文件/目錄樹,文件/目錄的元信息和每個文件對應(yīng)的數(shù)據(jù)塊列表,接收用戶的操作請求。文件包括:(3)fstime:保存最近一次checkpoint的時間(2)edits:操作日志文件(1)FsImage:元數(shù)據(jù)鏡像文件任務(wù)2理解Hadoop體系架構(gòu)1.2.2HDFS架構(gòu)2.DataNodeDataNode提供真實(shí)文件數(shù)據(jù)的存儲服務(wù)。(1)文件塊(block):最基本的存儲單位。(2)Replication:多復(fù)本。支持超大文件優(yōu)點(diǎn)檢測和快速應(yīng)對硬件故障流式數(shù)據(jù)訪問簡化的一致性模型任務(wù)2理解Hadoop體系架構(gòu)1.2.2HDFS架構(gòu)2.DataNode(1)(2)(3)(4)不適合低延遲數(shù)據(jù)訪問大量的小文件不支持多用戶寫入和修改文件不支持超強(qiáng)的事務(wù)缺點(diǎn)任務(wù)2理解Hadoop體系架構(gòu)1.2.3MapReduce架構(gòu)MapReduce采用Master/Slave(M/S)架構(gòu),如圖1-8所示,主要包括client、JobTracker、TaskTracker和Task組件。圖1-8MapReduce架構(gòu)任務(wù)2理解Hadoop體系架構(gòu)1.2.3MapReduce架構(gòu)1.client用戶編寫的MapReduce程序通過client提交到JobTracker端;同時,用戶可通過client提供的一些接口查看作業(yè)運(yùn)行狀態(tài)。在Hadoop內(nèi)部,用作業(yè)(job)表示MapReduce程序。一個MapReduce程序可對應(yīng)若干個作業(yè),而每個作業(yè)會被分解成若干個MapReduce任務(wù)(task)。2.JobTrackerJobTracker主要負(fù)責(zé)資源監(jiān)控和作業(yè)調(diào)度。JobTracker監(jiān)控所有TaskTracker與作業(yè)的健康狀況,一旦發(fā)現(xiàn)失敗情況后,其會將相應(yīng)的任務(wù)轉(zhuǎn)移到其他節(jié)點(diǎn);同時JobTracker會跟蹤任務(wù)的執(zhí)行進(jìn)度、資源使用量等,并將這些信息告訴給任務(wù)調(diào)度器(TaskScheduler),而任務(wù)調(diào)度器會在資源出現(xiàn)空閑時,選擇合適的任務(wù)使用這些資源。任務(wù)2理解Hadoop體系架構(gòu)1.2.3MapReduce架構(gòu)3.TaskTrackerTaskTracker會周期性地通過Heartbeat將本節(jié)點(diǎn)上資源的使用情況和任務(wù)的運(yùn)行進(jìn)度匯報給JobTracker,同時接收J(rèn)obTracker發(fā)送過來的命令并執(zhí)行相應(yīng)操作。TaskTracker使用slot等量劃分本節(jié)點(diǎn)上的資源量。slot代表計算資源。一個task獲取到一個slot后才有機(jī)會運(yùn)行,而Hadoop調(diào)度器的作用就是將各個TaskTracker上的空閑slot分配給task使用。slot分為MapSlot和ReduceSlot兩種,分別供MapTask和ReduceTask使用。任務(wù)2理解Hadoop體系架構(gòu)1.2.3MapReduce架構(gòu)4.TaskTask分為MapTask和ReduceTask兩種,均由TaskTracker啟動。我們知道,HDFS以固定大小的block為基本單位存儲數(shù)據(jù),而對于MapReduce而言,其處理單位是split。split與block的對應(yīng)關(guān)系如圖1-9所示。圖1-9split與block的對應(yīng)關(guān)系任務(wù)3理解Hadoop與分布式開發(fā)分布式系統(tǒng)(distributedsystem)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng)。正是因?yàn)檐浖奶匦?,所以分布式系統(tǒng)具有高度的內(nèi)聚性和透明性。因此,網(wǎng)絡(luò)和分布式系統(tǒng)之間的區(qū)別更多體現(xiàn)在高層軟件(特別是操作系統(tǒng)),而不是硬件。分布式系統(tǒng)和計算機(jī)網(wǎng)絡(luò)系統(tǒng)的共同點(diǎn)是:多數(shù)分布式系統(tǒng)是建立在計算機(jī)網(wǎng)絡(luò)之上的,所以分布式系統(tǒng)與計算機(jī)網(wǎng)絡(luò)在物理結(jié)構(gòu)上是基本相同的。分布式系統(tǒng)和計算機(jī)網(wǎng)絡(luò)系統(tǒng)的區(qū)別在于:分布式操作系統(tǒng)的設(shè)計思想和網(wǎng)絡(luò)操作系統(tǒng)是不同的,這決定了它們在結(jié)構(gòu)、工作方式和功能上也不同。任務(wù)3理解Hadoop與分布式開發(fā)分布式部署方案適合以下情況。(1)公司有不同分支機(jī)構(gòu)或較小的分散站點(diǎn),與公司總部的網(wǎng)絡(luò)連接通常是低帶寬、高滯后或不可靠的。(2)公司總部網(wǎng)絡(luò)無法處理中心位置的服務(wù)流量。(3)分支機(jī)構(gòu)有自己的服務(wù)器、企業(yè)網(wǎng)絡(luò)、域控制器和系統(tǒng)管理員,包含數(shù)目不定的用戶。(4)用戶要求有更快的郵箱訪問速度、更佳的用戶體驗(yàn)和可用性。(5)郵箱用戶數(shù)量大,并發(fā)線程多。(6)對于安全要求高,需要把郵件服務(wù)器不同的功能分開部署。任務(wù)3理解Hadoop與分布式開發(fā)表1-1分布式系統(tǒng)的優(yōu)點(diǎn)表1-2分布式系統(tǒng)的缺點(diǎn)任務(wù)3理解Hadoop與分布式開發(fā)分布式系統(tǒng)的優(yōu)點(diǎn)有哪些呢?想一想任務(wù)4Hadoop應(yīng)用案例簡介1.全球最大超市業(yè)者WalMartWalMart分析顧客搜索商品的行為,找出超越競爭對手的商機(jī)。全球最大連鎖超市WalMart利用Hadoop來分析顧客搜尋商品的行為,以及用戶通過搜索引擎尋找到WalMart網(wǎng)站的關(guān)鍵詞,利用這些關(guān)鍵詞的分析結(jié)果發(fā)掘顧客需求,以規(guī)劃下一季商品的促銷策略,甚至打算分析顧客在Facebook、Twitter等社交網(wǎng)站上對商品的討論,期望能比競爭對手提前一步發(fā)現(xiàn)顧客需求。任務(wù)4Hadoop應(yīng)用案例簡介2.全球最大拍賣網(wǎng)站eBayeBay用Hadoop拆解非結(jié)構(gòu)性巨量數(shù)據(jù),降低數(shù)據(jù)倉儲負(fù)載。經(jīng)營拍賣業(yè)務(wù)的eBay則用Hadoop來分析買賣雙方在網(wǎng)站上的行為。eBay擁有全世界最大的數(shù)據(jù)倉儲系統(tǒng),每天增加的數(shù)據(jù)量有50TB,光是儲存就是一大挑戰(zhàn),更別說要分析這些數(shù)據(jù)了,而且更困難的挑戰(zhàn)是這些數(shù)據(jù)包括結(jié)構(gòu)化的數(shù)據(jù)和非結(jié)構(gòu)化的數(shù)據(jù),如照片、影片、電子郵件、用戶的網(wǎng)站瀏覽log記錄等。任務(wù)4Hadoop應(yīng)用案例簡介3.全球最大信用卡公司VisaVisa公司擁有一個全球最大的付費(fèi)網(wǎng)絡(luò)系統(tǒng)VisaNet,作為信用卡付款驗(yàn)證之用。2009年,Visa公司每天就要處理1.3億次授權(quán)交易和140萬臺ATM的聯(lián)機(jī)存取。為了降低信用卡各種詐騙、盜領(lǐng)事件的損失,Visa公司得分析每一筆事務(wù)數(shù)據(jù),來找出可疑的交易。雖然每筆交易的數(shù)據(jù)記錄只有短短200位,但每天VisaNet要處理全球上億筆交易,兩年累積的資料多達(dá)36TB,過去光是要分析5億個用戶賬號之間的關(guān)聯(lián),得等一個月才能得到結(jié)果,所以,Visa也在2009年導(dǎo)入了Hadoop,建置了兩套Hadoop叢集(每套不到50個節(jié)點(diǎn)),讓分析時間從一個月縮短到13分鐘,更快速地找出了可疑交易,也能更快對銀行提出預(yù)警,甚至能及時阻止詐騙交易??偨Y(jié)與回顧總結(jié)與回顧本項(xiàng)目主要介紹了Hadoop項(xiàng)目的發(fā)展歷程、Hadoop產(chǎn)生的歷史背景,詳細(xì)介紹了Hadoop版本的發(fā)展過程。詳細(xì)分析了Hadoop的體系結(jié)構(gòu),分析了分布式系統(tǒng)開發(fā)的特點(diǎn),介紹了Hadoop的一些經(jīng)典案例應(yīng)用。習(xí)題1.Hadoop是由哪個項(xiàng)目發(fā)展來的?2.Hadoop主要有哪些版本?3.簡要描述Hadoop的體系結(jié)構(gòu),分析1.x與2.x版本間的區(qū)別。4.簡要描述分布式系統(tǒng)的優(yōu)點(diǎn)有哪些。THANKS感謝聆聽Hadoop安裝與配置管理項(xiàng)目2任務(wù)1Hadoop環(huán)境的搭建與配置任務(wù)2Hadoop的安裝模式任務(wù)3Hadoop的啟動與驗(yàn)證目標(biāo)能熟練使用VMware虛擬機(jī)軟件創(chuàng)建和復(fù)制虛擬機(jī)。能熟練使用VMware構(gòu)建虛擬網(wǎng)絡(luò)。能熟練在CentOS下完成Vmtools、JDK的安裝與配置。能在CentOS下配置主機(jī)名、IP地址、SSH等。能完成單機(jī)、偽分布、分布式Hadoop的安裝與部署。能完成Hadoop的啟動和停止及驗(yàn)證軟件配置的正確性。任務(wù)1Hadoop環(huán)境的搭建與配置2.1.1安裝VMware從VMware的官網(wǎng)()上下載一個VMwareWorkstationProforWindows,借助VMwareWorkstationPro,可以在單臺WindowsPC上同時運(yùn)行多個虛擬機(jī)系統(tǒng)。安裝VMwareWorkstationPro非常簡單,一直單擊“下一步”按鈕即可安裝成功,安裝成功后啟動軟件,如圖2-1所示。圖2-1VMware運(yùn)行界面任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOSCentOS(communityenterpriseoperatingsystem,社區(qū)企業(yè)操作系統(tǒng))是Linux發(fā)行版之一,它是由RedHatEnterpriseLinux依照開放源代碼規(guī)定釋出的源代碼編譯而成的。讀者可以從CentOS的官網(wǎng)()上下載發(fā)行版本,選擇DVDISO鏡像。1.創(chuàng)建虛擬機(jī)啟動VMware虛擬機(jī),單擊“創(chuàng)建新的虛擬機(jī)”按鈕,進(jìn)入“歡迎使用新建虛擬機(jī)向?qū)А苯缑?,如圖2-2所示。圖2-2“歡迎使用新建虛擬機(jī)向?qū)А苯缑?.創(chuàng)建虛擬機(jī)任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS(1)典型安裝:默認(rèn)安裝,對VMware不熟悉的用戶,可以使用這種安裝模式。(2)自定義安裝:用戶可以按照自己的需要進(jìn)行安裝,使用自定義安裝可以提高不同VMware版本的兼容性,配置CPU、虛擬內(nèi)存的大小、網(wǎng)絡(luò)類型及I/O控制器類型等。VMware新建虛擬機(jī)向?qū)峁┝藘煞N安裝模式1.創(chuàng)建虛擬機(jī)任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS選擇典型安裝后,單擊“下一步”按鈕,進(jìn)入“安裝客戶機(jī)操作系統(tǒng)”界面,如圖2-3所示。圖2-3“安裝客戶機(jī)操作系統(tǒng)”界面1.創(chuàng)建虛擬機(jī)任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS③稍后安裝操作系統(tǒng)。選中這個單選按鈕后,VMWare會先創(chuàng)建一個空磁盤的虛擬機(jī),將來在虛擬機(jī)設(shè)置里重新設(shè)置安裝光盤位置再繼續(xù)安裝系統(tǒng)。②安裝程序光盤映像文件。這是ISO鏡像文件安裝,需要找到ISO文件存放的位置。①安裝程序光盤。這需要有光盤才能安裝,把系統(tǒng)安裝光盤放到光驅(qū)里即可。1.創(chuàng)建虛擬機(jī)任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS單擊“下一步”按鈕,進(jìn)入圖2-4所示的“命名虛擬機(jī)”界面,輸入虛擬機(jī)名稱并選擇存儲位置,選擇存儲路徑需要磁盤有足夠的存儲空間。單擊“下一步”按鈕,進(jìn)入圖2-5所示的“指定磁盤容量”界面,Hadoop實(shí)驗(yàn)機(jī)大概需要20GB的空間。1.創(chuàng)建虛擬機(jī)任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS圖2-4“命名虛擬機(jī)”界面圖2-5“指定磁盤容量”界面1.創(chuàng)建虛擬機(jī)任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS創(chuàng)建完虛擬機(jī)后,還可以編輯虛擬磁盤設(shè)置并添加其他虛擬磁盤。單擊“下一步”按鈕,進(jìn)入圖2-6所示的虛擬機(jī)確認(rèn)界面,在這里可以檢查前面對虛擬機(jī)的各項(xiàng)設(shè)置,若需要修改,則可以單擊“上一步”按鈕回退到設(shè)置內(nèi)容,確認(rèn)后,單擊“完成”按鈕,虛擬機(jī)就創(chuàng)建成功了。圖2-6虛擬機(jī)創(chuàng)建完成1.創(chuàng)建虛擬機(jī)任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS2.安裝CentOS現(xiàn)在要在剛剛建立的虛擬機(jī)上安裝CentOS操作系統(tǒng)。啟動虛擬機(jī)前,還可以對虛擬機(jī)的硬件配置做一些修改,單擊選中需要修改的設(shè)備,如圖2-7所示。圖2-7單擊選中需要修改的設(shè)備任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS2.安裝CentOS內(nèi)存:設(shè)置虛擬機(jī)內(nèi)存大小,一般建議不超過主機(jī)內(nèi)存的一半。(1)(2)(3)04處理器:設(shè)置虛擬機(jī)的處理器個數(shù),包括核數(shù)和進(jìn)程數(shù)。核數(shù)和進(jìn)程數(shù)都不能超過主機(jī)CPU的性能參數(shù)。硬盤:磁盤的大小,可以將擴(kuò)大的磁盤映射到系統(tǒng)的本地卷里。網(wǎng)絡(luò)適配器:設(shè)置網(wǎng)絡(luò)連接的方式。CD/DVD(IDE):選擇光驅(qū)的來源和設(shè)備連接的狀態(tài)。(5)任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS2.安裝CentOS單擊工具欄中的綠色按鈕開啟此虛擬機(jī),啟動機(jī)器進(jìn)入安裝操作系統(tǒng)的界面,如圖2-8和圖2-9所示。圖2-8啟動虛擬機(jī)圖2-9開始安裝CentOS任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS2.安裝CentOS選擇“InstallCentOS7”,按任意鍵開始安裝CentOS7,如圖2-10所示。CentOS的安裝界面是圖形化的,只需進(jìn)行必要的設(shè)置就能完成安裝,第一步是語言設(shè)置,選擇“簡體中文”,單擊“下一步”按鈕,如圖2-11所示。圖2-10按任意鍵開始安裝圖2-11選擇語言任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS2.安裝CentOS打開“安裝信息摘要”界面,如圖2-12所示。這里主要設(shè)置安裝位置和選擇軟件。安裝位置類似Windows安裝過程的磁盤選擇;CentOS默認(rèn)的軟件安裝為最小安裝,這里建議打開“軟件選擇”界面,如圖2-13所示,對安裝軟件進(jìn)行設(shè)置。特別要添加GNOME桌面和一些常用工具,否則系統(tǒng)安裝后僅有命令行模式,會給后續(xù)的軟件安裝帶來很多不便。如果使用多個磁盤分區(qū),還需要對安裝目標(biāo)位置進(jìn)行設(shè)置,如圖2-14所示。安裝過程如圖2-15所示。任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS2.安裝CentOS圖2-12“安裝信息摘要”界面圖2-13“軟件選擇”界面任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS2.安裝CentOS圖2-14安裝目標(biāo)位置設(shè)置圖2-15正在安裝任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS2.安裝CentOS在安裝過程中或安裝結(jié)束后都允許設(shè)置ROOT密碼和創(chuàng)建用戶賬戶,單擊“ROOT密碼”按鈕,進(jìn)入圖2-16所示的界面;單擊“創(chuàng)建用戶”按鈕,進(jìn)入圖2-17所示的界面,按照提示操作即可。需要注意的是,ROOT具有系統(tǒng)最高權(quán)限,應(yīng)該牢記這個密碼。最后直到“重啟”按鈕從灰色變?yōu)樗{(lán)色,如圖2-18所示,表示CentOS安裝完成了。圖2-16創(chuàng)建ROOT密碼任務(wù)1Hadoop環(huán)境的搭建與配置2.1.2安裝CentOS2.安裝CentOS圖2-17創(chuàng)建用戶賬戶圖2-18安裝完成任務(wù)1Hadoop環(huán)境的搭建與配置2.1.3安裝JDKJDK(Javadevelopmentkit)是SunMicroSystems針對Java開發(fā)的產(chǎn)品。JDK是整個Java的核心,包括Java運(yùn)行環(huán)境、Java工具和Java基礎(chǔ)類庫。JDK只要1.5版本以上就可以運(yùn)行,讀者到Oracle官網(wǎng)上下載即可。(1)查詢系統(tǒng)自帶的JDK。在終端輸入運(yùn)行的命令,查看系統(tǒng)是否安裝了Java,如圖2-19所示。任務(wù)1Hadoop環(huán)境的搭建與配置2.1.3安裝JDK圖2-19查詢Java版本任務(wù)1Hadoop環(huán)境的搭建與配置2.1.3安裝JDK(2)刪除自帶JDK。使用rpm-e-nodeps命令,刪除自帶的JDK,如圖2-20所示。運(yùn)行上面的命令,一定要注意不同的JDK的版本號會有區(qū)別,讀者要按照自己查詢到的版本號來輸入。(3)安裝新的JDK,讀者可以到Oracle網(wǎng)站下載最新版本的JDK。新建Java目錄:任務(wù)1Hadoop環(huán)境的搭建與配置2.1.3安裝JDK圖2-20刪除自帶的JDK任務(wù)1Hadoop環(huán)境的搭建與配置2.1.3安裝JDK(4)將壓縮包jdk-8u191-linux-x64.tar.gz上傳到該目錄下,執(zhí)行解壓縮命令:再次執(zhí)行l(wèi)s,該目錄下會多出文件夾jdk1.8.0_191,如圖2-21所示。圖2-21建立JDK目錄任務(wù)1Hadoop環(huán)境的搭建與配置2.1.3安裝JDK(5)修改profile文件。執(zhí)行命令:gedit/etc/profile,打開profile文件,將下列代碼放入文件末尾,如圖2-22所示。圖2-22修改profile文件任務(wù)1Hadoop環(huán)境的搭建與配置2.1.3安裝JDK單擊“保存”按鈕保存并退出后,在命令行執(zhí)行下列命令,使環(huán)境變量生效。完成后,執(zhí)行命令:java-version,屏幕顯示如圖2-23所示的版本信息,說明JDK配置成功。圖2-23Java版本信息任務(wù)2Hadoop的安裝模式(1)(2)(3)單機(jī)模式全分布模式偽分布模式Hadoop的安裝模式分為3種任務(wù)2Hadoop的安裝模式2.2.1單機(jī)安裝單機(jī)模式是Hadoop的默認(rèn)安裝模式,這種模式所需的系統(tǒng)資源最少。在這種模式下,Hadoop的core-site.xml、mapred-site.xml和hdfs-site.xml配置文件均為空。安裝過程如下。(1)解壓Hadoop的tar文件,在usr文件夾下運(yùn)行:(2)配置Hadoop環(huán)境變量。執(zhí)行命令:gedit/etc/profile,在文件末尾添加如下代碼,如圖2-24所示。任務(wù)2Hadoop的安裝模式2.2.1單機(jī)安裝圖2-24配置Hadoop環(huán)境變量任務(wù)2Hadoop的安裝模式2.2.1單機(jī)安裝保存后,執(zhí)行命令:source/etc/profile,完成環(huán)境加載。再執(zhí)行命令:hadoopversion,查看Hadoop是否安裝成功。若出現(xiàn)圖2-25所示的界面,則說明Hadoop安裝成功。(3)到目前為止,我們沒有對Hadoop的配置文件做任何修改,可以執(zhí)行sbin文件夾里的start-all.sh命令,測試一下Hadoop是否可以正常啟動,如圖2-26所示。運(yùn)行hadoopfs-ls命令,查看HDFS單機(jī)部署目錄結(jié)構(gòu),如圖2-27所示。圖2-25查看Hadoop版本任務(wù)2Hadoop的安裝模式2.2.1單機(jī)安裝圖2-26啟動單機(jī)Hadoop圖2-27HDFS單機(jī)部署目錄結(jié)構(gòu)任務(wù)2Hadoop的安裝模式2.2.2分布式安裝1.集群的構(gòu)建和拓?fù)鋱D分布式文件系統(tǒng)HDFS:分布式文件系統(tǒng)主要用于海量數(shù)據(jù)的存儲;統(tǒng)一資源和調(diào)度系統(tǒng)YARN:YARN主要管理集群的計算資源,并根據(jù)計算框架的需求進(jìn)行調(diào)度。Hadoop主要由兩部分構(gòu)成任務(wù)2Hadoop的安裝模式2.2.2分布式安裝1.集群的構(gòu)建和拓?fù)鋱DHDFS集群和YARN集群是由一些守護(hù)進(jìn)程組成的,這些守護(hù)進(jìn)程和運(yùn)行它們的節(jié)點(diǎn)就構(gòu)成了Hadoop集群。如圖2-28(a)所示,這個集群的NameNode進(jìn)程和ResourceManager進(jìn)程在一個節(jié)點(diǎn)上運(yùn)行,而DataNode和NodeManager在同一個節(jié)點(diǎn)上運(yùn)行。出于性能和穩(wěn)定性的考慮,建議將NameNode和ResourceManager分開部署,如圖2-28(b)所示,這樣的部署也是一個標(biāo)準(zhǔn)的Hadoop集群。圖2-28Hadoop集群任務(wù)2Hadoop的安裝模式2.2.2分布式安裝2.搭建服務(wù)器環(huán)境首先要克隆多臺服務(wù)器。在VMWare的庫列表中找到前面使用的CentOS服務(wù)器,右擊并選擇“管理”→“克隆”命令,進(jìn)入“克隆虛擬機(jī)向?qū)А睂υ捒?。單擊“下一步”按鈕,在“克隆類型”界面中選中“創(chuàng)建完整克隆”單選按鈕,如圖2-29所示。繼續(xù)單擊“下一步”按鈕,設(shè)置虛擬機(jī)名稱和位置,如圖2-30所示,單擊“完成”按鈕,VMWare開始克隆新的機(jī)器。按照上述過程,還須再復(fù)制出3臺CentOS虛擬機(jī),將虛擬機(jī)按照集群的功能進(jìn)行重命名,如圖2-31所示。任務(wù)2Hadoop的安裝模式2.2.2分布式安裝2.搭建服務(wù)器環(huán)境圖2-29“克隆類型”界面圖2-30設(shè)置虛擬機(jī)名稱和存儲位置圖2-31hadoop機(jī)器列表任務(wù)2Hadoop的安裝模式2.2.2分布式安裝2.搭建服務(wù)器環(huán)境虛擬機(jī)準(zhǔn)備好后,下面開始配置虛擬網(wǎng)絡(luò)。選擇VMware的菜單,執(zhí)行“編輯”→“虛擬網(wǎng)絡(luò)編輯器”命令,打開“虛擬網(wǎng)絡(luò)編輯器”對話框,如圖2-32所示。單擊“添加網(wǎng)絡(luò)”按鈕,選中“NAT模式”單選按鈕,再選中“將主機(jī)虛擬適配器連接到此網(wǎng)絡(luò)”復(fù)選框,如圖2-33所示。任務(wù)2Hadoop的安裝模式2.2.2分布式安裝2.搭建服務(wù)器環(huán)境圖2-32“虛擬網(wǎng)絡(luò)編輯器”對話框圖2-33虛擬網(wǎng)絡(luò)配置任務(wù)2Hadoop的安裝模式2.2.2分布式安裝2.搭建服務(wù)器環(huán)境在VMWare庫里,右擊虛擬機(jī),在彈出的快捷菜單中選擇“設(shè)置”命令,打開“虛擬機(jī)設(shè)置”對話框,將網(wǎng)絡(luò)連接設(shè)置為“自定義”連接,并選擇“VMnet1(NAT模式)”選項(xiàng),如圖2-34所示。圖2-34“虛擬機(jī)設(shè)置”對話框任務(wù)2Hadoop的安裝模式2.2.2分布式安裝3.修改機(jī)器配置為了讓集群里的機(jī)器能互相訪問,統(tǒng)一開發(fā)環(huán)境,需要對主機(jī)進(jìn)行配置。1)修改用戶密碼、主機(jī)名和IP地址執(zhí)行“useraddhadoop”命令,添加以hadoop為用戶名的用戶;執(zhí)行“passwdhadoop”命令,修改該用戶的密碼,集群里的機(jī)器密碼要統(tǒng)一,如圖2-35所示。如果安裝了圖形界面,這里也可以使用圖形界面來完成。在系統(tǒng)工具里找到設(shè)置功能,選擇網(wǎng)絡(luò),單擊有線網(wǎng)絡(luò)右側(cè)的齒輪圖標(biāo),如圖2-36所示。圖2-35添加用戶和密碼圖2-36有線連接任務(wù)2Hadoop的安裝模式2.2.2分布式安裝3.修改機(jī)器配置在“身份”選項(xiàng)卡中設(shè)置主機(jī)名,如圖2-37所示;在IPv4選項(xiàng)卡中設(shè)置IP地址等信息,如圖2-38所示。圖2-37設(shè)置主機(jī)名圖2-38設(shè)置IP地址任務(wù)2Hadoop的安裝模式2.2.2分布式安裝3.修改機(jī)器配置分布式安裝需要將一個節(jié)點(diǎn)的主機(jī)修改為master1,其他節(jié)點(diǎn)的主機(jī)修改為slave1、slave2和slave3。將幾個節(jié)點(diǎn)的IP地址設(shè)置為同一網(wǎng)段的機(jī)器,這個網(wǎng)段要和虛擬機(jī)里VMnet的網(wǎng)段一致。本書中的設(shè)置見表2-1。表2-1集群機(jī)器列表任務(wù)2Hadoop的安裝模式2.2.2分布式安裝3.修改機(jī)器配置我們需要把規(guī)劃好的IP地址、主機(jī)名添加到4臺虛擬機(jī)的hosts文件里,如圖2-39所示。圖2-39修改host文件任務(wù)2Hadoop的安裝模式2.2.2分布式安裝3.修改機(jī)器配置2)配置SSH無密碼鏈接遠(yuǎn)程管理環(huán)境中最常用的是SSH(secureshell)。在配置SSH無密碼連接之前,需要先關(guān)閉防火墻。執(zhí)行以下命令。然后,執(zhí)行“firewall-cmd-state”命令,查看是否成功關(guān)閉了防火墻,如圖2-40所示。圖2-40查看是否成功關(guān)閉了防火墻任務(wù)2Hadoop的安裝模式2.2.2分布式安裝3.修改機(jī)器配置登錄NameNode()節(jié)點(diǎn),切換至Hadoop用戶,在Hadoop的home目錄下創(chuàng)建“.ssh”目錄。在這臺機(jī)器上生成密鑰對,如圖2-41所示。圖2-41生成密鑰對任務(wù)2Hadoop的安裝模式2.2.2分布式安裝3.修改機(jī)器配置將生成的id_rsa.pub文件復(fù)制一份,命名為authorized_keys,然后分別復(fù)制到其他3臺slave機(jī)器上,執(zhí)行以下命令。按照屏幕提示完成復(fù)制,如圖2-42所示。圖2-42復(fù)制SSH文件任務(wù)2Hadoop的安裝模式2.2.2分布式安裝3.修改機(jī)器配置最后需要從master1機(jī)器向其他機(jī)器發(fā)起SSh連接,如果不需要輸入密碼,則表示配置成功了。注意:“.ssh”是一個隱藏文件夾,用“l(fā)l-a”命令可以看到隱藏的文件夾,“ssh”文件夾權(quán)限必須是700;“.ssh”里面的文件權(quán)限最好是600,如圖2-43所示。圖2-43修改文件權(quán)限任務(wù)2Hadoop的安裝模式2.2.2分布式安裝4.配置HadoopHadoop的配置文件都在/etc/hadoop中,進(jìn)入該文件夾下,會發(fā)現(xiàn)有若干配置文件。Hadoop集群的安裝是在單機(jī)安裝的基礎(chǔ)上修改表2-2中的文件。表2-2Hadoop的配置文件任務(wù)2Hadoop的安裝模式2.2.2分布式安裝4.配置Hadoop
(1)修改hadoop-env.sh。在文件hadoop-env.sh末尾追加環(huán)境變量。(2)修改core-site.xml。該項(xiàng)配置設(shè)置提供HDFS服務(wù)的主機(jī)號和端口號,也就是說,HDFS通過master1的9000端口提供服務(wù),這項(xiàng)配置也指明了NameNode所運(yùn)行的節(jié)點(diǎn)(主節(jié)點(diǎn))。任務(wù)2Hadoop的安裝模式2.2.2分布式安裝4.配置Hadoop(3)修改hdfs-site.xml。在<configuration></configuration>之間添加如下屬性。任務(wù)2Hadoop的安裝模式2.2.2分布式安裝4.配置Hadoop(4)修改mapred-site.xml,在mapred-site.xml中添加:(5)修改slaves文件,slaves指定子節(jié)點(diǎn)的位置,因?yàn)橐趍aster1上啟動HDFS、在master2上啟動ResourceManager,所以master1上的slaves文件指定的是DataNode的位置,master2上的slaves文件指定的是NodeManager的位置。任務(wù)3Hadoop的啟動與驗(yàn)證2.3.1格式化HDFS在第一次啟動Hadoop之前,必須先將HDFS格式化。執(zhí)行如下命令。按照提示輸入“Y”,格式化成功后會出現(xiàn)格式化成功的信息,如圖2-44所示。圖2-44Hadoop格式化任務(wù)3Hadoop的啟動與驗(yàn)證2.3.2Hadoop的守護(hù)進(jìn)程在sbin目錄下有很多啟動腳本,可以根據(jù)自己的需求來啟動Hadoop的守護(hù)進(jìn)程,Hadoop的啟動和停止說明見表2-3。表2-3Hadoop的啟動和停止說明任務(wù)3Hadoop的啟動與驗(yàn)證2.3.2Hadoop的守護(hù)進(jìn)程如果Hadoop集群是第一次啟動,可以用start-all.sh。比較常用的啟動方式是依守護(hù)進(jìn)程次序來啟動,啟動步驟如下。(1)啟動Hadoop的HDFS模塊里的守護(hù)進(jìn)程。Hadoop啟動成功后,執(zhí)行jps命令可以查看運(yùn)行的進(jìn)程,如圖2-45所示。(2)啟動MapReduce模塊里的守護(hù)進(jìn)程:啟動JobTracker守護(hù)進(jìn)程—啟動TaskTracker守護(hù)進(jìn)程。如果關(guān)閉,可以用stop-all.sh命令,或者按上述步驟相反的步驟執(zhí)行即可。圖2-45查看運(yùn)行的進(jìn)程任務(wù)3Hadoop的啟動與驗(yàn)證2.3.3驗(yàn)證集群HDFS如果使用jps命令查看守護(hù)進(jìn)程運(yùn)行正常,則可以在master1的虛擬機(jī)上打開瀏覽器,訪問http://master1:50070,可以打開圖2-46所示的界面。圖2-46HDFS界面總結(jié)與回顧總結(jié)與回顧本項(xiàng)目主要完成了搭建、配置Hadoop環(huán)境的具體過程,包括單機(jī)模式和分布模式。首先,通過VMware安裝了一個CentOS虛擬機(jī),在這個虛擬機(jī)上安裝了JDK、Hadoop,并完成了JDK和Hadoop的配置。然后,根據(jù)Hadoop集群的拓?fù)浣Y(jié)構(gòu),配置了一個虛擬網(wǎng)絡(luò)環(huán)境,并克隆出3臺虛擬機(jī)作為DataNode的節(jié)點(diǎn),通過修改Hadoop的若干配置文件,最終正常啟動Hadoop的一系列守護(hù)進(jìn)程。習(xí)題1.練習(xí)安裝VMware和CentOS。2.練習(xí)下載并安裝Hadoop系統(tǒng)。3.簡要描述配置偽分布式Hadoop和分布式Hadoop的主要區(qū)別。4.練習(xí)啟動和停止Hadoop。BUSENESSACTIVITYPLANNINGTHANKS感謝聆聽HDFS技術(shù)項(xiàng)目3任務(wù)1認(rèn)識HDFS任務(wù)2了解HDFS架構(gòu)任務(wù)3Hadoopshell命令目標(biāo)能理解HDFS體系架構(gòu)。能掌握HDFS命令。能理解HDFS流的操作過程。能掌握HDFSAPI編程方法。任務(wù)1認(rèn)識HDFS概念HDFS(Hadoopdistributedfilesystem)是ApacheHadoop分布式文件系統(tǒng),其設(shè)計初衷是支持高吞吐和超大文件的流式讀/寫操作。這樣的結(jié)構(gòu)能夠使成百上千臺計算機(jī)共同存儲一個文件。也就是說,通過HDFS訪問TB、PB級的數(shù)據(jù)時,就像在一臺計算機(jī)上訪問一個文件一樣。任務(wù)1認(rèn)識HDFS3.1.1HDFS產(chǎn)生的背景在大數(shù)據(jù)時代,數(shù)據(jù)不僅由互聯(lián)網(wǎng)產(chǎn)生,還會由智能終端、科學(xué)計算、工業(yè)設(shè)備、智能交通設(shè)施等產(chǎn)生。這些海量數(shù)據(jù)每天都會產(chǎn)生,使用單個操作系統(tǒng)的存儲方式顯然不能滿足大數(shù)據(jù)的存儲需求,因此,需要一種系統(tǒng)來存儲這些海量數(shù)據(jù),于是分布式文件系統(tǒng)(distributedfilesystem,DFS)就誕生了。任務(wù)1認(rèn)識HDFS3.1.2HDFS簡介HDFS是Hadoop項(xiàng)目的核心子項(xiàng)目,用于大數(shù)據(jù)領(lǐng)域的數(shù)據(jù)存儲。HDFS適合通用硬件上的分布式文件系統(tǒng)。它與現(xiàn)有的分布式系統(tǒng)有很多相近的地方,也有很多明顯的不同。任務(wù)1認(rèn)識HDFS3.1.3HDFS的特點(diǎn)作為Hadoop的基礎(chǔ),HDFS非常適合運(yùn)行在廉價硬件集群上,以數(shù)據(jù)流的形式訪問數(shù)據(jù)以存儲超大文件。其主要優(yōu)勢有以下幾點(diǎn)。(1)適合大數(shù)據(jù)處理。(2)高容錯性。(3)適合批處理。(4)通過移動計算而不是移動數(shù)據(jù),會把數(shù)據(jù)位置暴露給計算框架。(5)流式文件訪問。(6)可構(gòu)建在廉價機(jī)器上。任務(wù)2了解HDFS架構(gòu)概念HDFS為Hadoop分布式計算框架提供了高性能、高可靠、高可擴(kuò)展的存儲服務(wù)。HDFS采用Master/Slave的架構(gòu)來存儲數(shù)據(jù),這種架構(gòu)主要由四個部分組成,分別為client、NameNode、DataNode和SecondaryNameNode。這些部分在集群里以節(jié)點(diǎn)的形式存在,各個節(jié)點(diǎn)運(yùn)行不同類型的守護(hù)進(jìn)程,各個節(jié)點(diǎn)互相配合,一起構(gòu)成了HDFS。任務(wù)2了解HDFS架構(gòu)如圖3-1所示,在一個典型的HDFS集群中,有一個NameNode、一個SecondaryNameNode和至少一個DataNode,而HDFS客戶端數(shù)量并沒有限制,所有的數(shù)據(jù)均存放在運(yùn)行DataNode進(jìn)程的節(jié)點(diǎn)的塊里。圖3-1HDFS架構(gòu)任務(wù)2了解HDFS架構(gòu)3.DataNodeDataNode就是slave。NameNode下達(dá)命令,DataNode執(zhí)行實(shí)際的操作,存儲實(shí)際的數(shù)據(jù)塊,執(zhí)行數(shù)據(jù)塊的讀/寫操作。2.NameNodeNameNode也被稱為名字節(jié)點(diǎn),即master。它是一個主管、管理者,是HDFS的大腦,維護(hù)整個文件系統(tǒng)的目錄樹,管理HDFS的名稱空間,管理數(shù)據(jù)塊(block)映射信息,并在配置副本策略的同時處理客戶端讀寫請求。1.client文件上傳HDFS時,client將文件切分成一個個的block,然后進(jìn)行存儲。任務(wù)2了解HDFS架構(gòu)每個DataNode都是以塊為單位進(jìn)行存儲的。每個磁盤都有默認(rèn)的數(shù)據(jù)塊大小,塊是磁盤讀寫數(shù)據(jù)的最小單位。HDFS的塊比一般文件系統(tǒng)的塊大很多,默認(rèn)為64MB,并可以根據(jù)實(shí)際文件大小而變化,配置項(xiàng)為hdfs-site.xml文件中的dfs.block.size項(xiàng)。例如,某個150MB大小的文件,默認(rèn)配置為64MB,該文件在HDFS的實(shí)際存儲情況如圖3-2所示。圖3-2默認(rèn)配置下文件塊的分布任務(wù)2了解HDFS架構(gòu)4.SecondaryNameNodeSecondaryNameNode并非NameNode的熱備,而是NameNode的輔助節(jié)點(diǎn)。當(dāng)NameNode失效時,它并不能馬上替換NameNode并提供服務(wù)。它輔助NameNode分擔(dān)其工作量,定期合并FsImage和fsedits,并推送給NameNode。在緊急情況下,可輔助恢復(fù)NameNode。任務(wù)2了解HDFS架構(gòu)3.2.1HDFS讀取和寫入數(shù)據(jù)HDFS將文件切分成塊并存儲至各個DataNode中,文件數(shù)據(jù)塊在HDFS的布局情況由NameNode和hdfs-site.xml中的配置dfs.replication共同決定。dfs.replication表示該文件在HDFS中的副本數(shù),默認(rèn)為3,就是有兩份冗余,如圖3-3所示。圖3-3dfs.replication為3的文件塊分布任務(wù)2了解HDFS架構(gòu)3.2.1HDFS讀取和寫入數(shù)據(jù)1.數(shù)據(jù)讀取HDFS客戶端可以通過多種不同的方式對HDFS進(jìn)行讀取,這些操作都遵循同樣的流程。HDFS客戶端需要使用Hadoop庫函數(shù),函數(shù)庫封裝了大部分與NameNode和DataNode通信相關(guān)的細(xì)節(jié),同時也考慮分布式文件系統(tǒng)的錯誤機(jī)制。假設(shè)請求讀取文件ss.avi,這個讀取流程如圖3-4所示。圖3-4數(shù)據(jù)讀取流程任務(wù)2了解HDFS架構(gòu)3.2.1HDFS讀取和寫入數(shù)據(jù)2.數(shù)據(jù)寫入數(shù)據(jù)寫入流程如圖3-5所示。圖3-5數(shù)據(jù)寫入流程任務(wù)2了解HDFS架構(gòu)3.2.2元數(shù)據(jù)節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)數(shù)據(jù)節(jié)點(diǎn)DataNode也是一個通常在HDFS實(shí)例中的單獨(dú)機(jī)器上運(yùn)行的軟件。Hadoop集群包含一個NameNode和大量DataNode。DataNode通常以機(jī)架的形式組織,機(jī)架通過一個交換機(jī)將所有系統(tǒng)連續(xù)起來。元數(shù)據(jù)節(jié)點(diǎn)NameNode是管理者,一個Hadoop集群有一個NameNode節(jié)點(diǎn),是一個通常在HDFS實(shí)例中的單獨(dú)機(jī)器上運(yùn)行的軟件。它負(fù)責(zé)管理文件系統(tǒng)名字空間和控制外部客戶機(jī)的訪問。NameNode決定是否將文件映射到DataNode的復(fù)制塊上。概念任務(wù)2了解HDFS架構(gòu)3.2.2元數(shù)據(jù)節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)DataNode的功能如下。(1)保存block,每個塊對應(yīng)一個元數(shù)據(jù)信息文件。這個文件主要描述這個塊屬于哪個文件、第幾個塊等信息。(2)啟動DataNode線程時會向NameNode匯報block信息。(3)通過向NameNode發(fā)送心跳消息,保持與其聯(lián)系(3s一次),如果NameNode10min沒有收到DataNode的心跳消息,則認(rèn)為其已經(jīng)丟失,并將其上的block復(fù)制到其他DataNode。任務(wù)2了解HDFS架構(gòu)3.2.3輔助元數(shù)據(jù)節(jié)點(diǎn)輔助元數(shù)據(jù)節(jié)點(diǎn)SecondaryNameNode會周期性地將EditsLog文件中對HDFS的操作記錄合并到一個FsImage文件中,然后清空EditsLog文件。NameNode重啟就會加載最新的FsImage文件,并重新創(chuàng)建一個EditsLog文件來記錄HDFS操作,由于EditsLog中記錄的是從上次FsImage以后到現(xiàn)在的操作列表,因此會比較小。任務(wù)2了解HDFS架構(gòu)3.2.3輔助元數(shù)據(jù)節(jié)點(diǎn)SecondaryNameNode合并FsImage和EditsLog文件的過程如下。(1)(2)(3)文件系統(tǒng)客戶端(client)進(jìn)行寫操作時,首先把它記錄在修改日志(EditsLog)中。元數(shù)據(jù)節(jié)點(diǎn)在內(nèi)存中保存了文件系統(tǒng)的元數(shù)據(jù)信息。在記錄修改日志后,元數(shù)據(jù)節(jié)點(diǎn)修改內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)。每次寫操作成功之前,修改日志都會同步到文件系統(tǒng)。(4)(5)(6)FsImage文件即名字空間映像文件,是內(nèi)存中的元數(shù)據(jù)在磁盤上的CheckPoint。同數(shù)據(jù)的機(jī)制相似,當(dāng)元數(shù)據(jù)節(jié)點(diǎn)失敗時,最新CheckPoint的元數(shù)據(jù)信息從FsImage加載到內(nèi)存中,然后逐一重新執(zhí)行修改日志的操作。從元數(shù)據(jù)節(jié)點(diǎn)就是用來幫助元數(shù)據(jù)節(jié)點(diǎn)將內(nèi)存中的元數(shù)據(jù)信息CheckPoint到磁盤上的。任務(wù)2了解HDFS架構(gòu)3.2.3輔助元數(shù)據(jù)節(jié)點(diǎn)CheckPoint的過程如下。(1)從元數(shù)據(jù)節(jié)點(diǎn)通知元數(shù)據(jù)節(jié)點(diǎn)生成新的日志文件,以后的日志都寫到新的日志文件中。(2)從元數(shù)據(jù)節(jié)點(diǎn)用HTTPGet從元數(shù)據(jù)節(jié)點(diǎn)獲得FsImage文件及舊的日志文件。(3)從元數(shù)據(jù)節(jié)點(diǎn)將FsImage文件加載到內(nèi)存中,并執(zhí)行日志文件中的操作,然后生成新的FsImage文件。(4)從元數(shù)據(jù)節(jié)點(diǎn)將新的FsImage文件HTTPPost傳回元數(shù)據(jù)節(jié)點(diǎn)。(5)元數(shù)據(jù)節(jié)點(diǎn)可以將舊的FsImage文件及舊的日志文件換為新的FsImage文件和新的日志文件(第一步生成的),然后更新FsTime文件,寫入此次CheckPoint的時間。(6)這樣元數(shù)據(jù)節(jié)點(diǎn)中的FsImage文件保存了最新CheckPoint的元數(shù)據(jù)信息,日志文件也重新開始,不會變得很大了。任務(wù)2了解HDFS架構(gòu)3.2.3輔助元數(shù)據(jù)節(jié)點(diǎn)SecondaryNameNode會周期性地將EditsLog文件進(jìn)行合并,合并前提條件如下。(1)EditsLog文件到達(dá)某一閾值時,對其進(jìn)行合并。(2)每隔一段時間進(jìn)行一次合并。任務(wù)2了解HDFS架構(gòu)3.2.4安全模式安全模式主要是為了系統(tǒng)啟動時檢查各個DataNode上的數(shù)據(jù)塊的有效性,同時根據(jù)策略復(fù)制或刪除部分?jǐn)?shù)據(jù)塊。運(yùn)行期間可以通過命令進(jìn)入安全模式。用戶可以通過hadoopdfsadmin-safemodevalue來操作安全模式,如圖3-6所示。圖3-6查看安全模式狀態(tài)和進(jìn)入安全模式任務(wù)3Hadoopshell命令和HDFS系統(tǒng)交互可以使用HDFSshell命令,這是最直接、最簡單的交互方式,調(diào)用文件系統(tǒng)(FS)shell命令可以使用的形式。所有的FSshell命令都是使用URI路徑作為參數(shù)的。URI格式是scheme://authority/path。URI的scheme是hdfs,表示分布式HDFS系統(tǒng),scheme是file,表示本地系統(tǒng)。其中,scheme和authority參數(shù)都是可選的,如果未指定,則會使用配置中默認(rèn)的scheme。任務(wù)3Hadoopshell命令3.3.1命令格式文件系統(tǒng)shell包含各種shelllike命令,可以直接和HDFS文件系統(tǒng)進(jìn)行交互,就像對其他系統(tǒng)的支持一樣,如LocalFS、HFTPFS、S3FS。shell命令執(zhí)行格式如下。hadoopfs是使用最廣泛的命令,可以操作任何文件系統(tǒng)。任務(wù)3Hadoopshell命令3.3.2HDFS命令用戶命令對于集群的用戶來說是很有用的,命令也不多。例如,創(chuàng)建文件、創(chuàng)建文件夾、移動文件、刪除文件、重命名等,命令的使用方法和格式與Linux的命令符相似,用戶可以執(zhí)行如下命令。查看命令列表,如圖3-7所示。圖3-7部分用戶命令列表任務(wù)3Hadoopshell命令3.3.2HDFS命令下面來看一下幾個常見的HDFS命令,在simple下執(zhí)行“touchwords.txt”命令新建words.txt文本文件,并對其進(jìn)行編譯。1.cat命令使用方法:hadoopfs-catURI[URI…]。將路徑指定文件的內(nèi)容輸出到stdout。例如,返回值:成功返回0,失敗返回-1。2.chgrp命令使用方法:hadoopfs-chgrp[-R]GROUPURI[URI…]。改變文件所屬的組。使用-R將使改變在目錄結(jié)構(gòu)下遞歸進(jìn)行。命令的使用者必須是文件的所有者或超級用戶。任務(wù)3Hadoopshell命令3.3.2HDFS命令3.chmod命令使用方法:hadoopfs-chmod[-R]<MODE[,MODE]…|OCTALMODE>URI[URI…]。改變文件的權(quán)限。使用-R將使改變在目錄結(jié)構(gòu)下遞歸進(jìn)行。命令的使用者必須是文件的所有者或超級用戶。4.chown命令使用方法:hadoopfs-chown[-R][OWNER][:[GROUP]]URI[URI]。改變文件的擁有者。使用-R將使改變在目錄結(jié)構(gòu)下遞歸進(jìn)行。命令的使用者必須是超級用戶。5.copyFromLocal命令使用方法:hadoopfs-copyFromLocal<localsrc>URI。除了限定源路徑是一個本地文件外,和put命令相似。任務(wù)3Hadoopshell命令3.3.2HDFS命令6.copyToLocal命令使用方法:hadoopfs-copyToLocal[-ignorecrc][-crc]URI<localdst>。除了限定目標(biāo)路徑是一個本地文件外,和get命令相似。7.cp命令使用方法:hadoopfs-cpURI[URI…]<dest>。將文件從源路徑復(fù)制到目標(biāo)路徑。這個命令允許有多個源路徑,此時目標(biāo)路徑必須是一個目錄。例如,返回值:成功返回0,失敗返回-1。任務(wù)3Hadoopshell命令3.3.2HDFS命令8.du命令使用方法:hadoopfs-duURI[URI…]。顯示目錄中所有文件的大小,或者當(dāng)只指定一個文件時,顯示此文件的大小。例如,返回值:成功返回0,失敗返回-1。9.dus命令使用方法:hadoopfs-dus<args>。該命令用于顯示文件的大小。10.expunge命令使用方法:hadoopfs-expunge。使用該命令能夠清空回收站。任務(wù)3Hadoopshell命令3.3.2HDFS命令11.get命令使用方法:hadoopfs-get[-ignorecrc][-crc]<src><localdst>。這個命令用來復(fù)制文件到本地文件系統(tǒng)??梢允褂?ignorecrc選項(xiàng)復(fù)制CRC校驗(yàn)失敗的文件,使用-crc選項(xiàng)復(fù)制文件及CRC信息。例如,返回值:成功返回0,失敗返回-1。12.getmerge命令使用方法:hadoopfs-getmerge<src><localdst>[addnl]。這個命令用來接收一個源目錄和一個目標(biāo)文件作為輸入,并將源目錄中所有的文件連接成本地目標(biāo)文件。addnl是可選的,用于指定在每個文件結(jié)尾添加一個換行符。任務(wù)3Hadoopshell命令3.3.2HDFS命令13.ls命令使用方法:hadoopfs-ls<args>。如果是文件,則按照如下格式返回文件信息。如果是目錄,則返回它直接子文件的一個列表,就像在UNIX中一樣。目錄返回列表的信息如下。例如,返回值:成功返回0,失敗返回-1。任務(wù)3Hadoopshell命令3.3.2HDFS命令14.lsr命令使用方法:hadoopfs-lsr<args>。這個命令是ls命令的遞歸版本。15.mkdir命令使用方法:hadoopfs-mkdir<paths>。這個命令接收路徑指定的URI作為參數(shù),創(chuàng)建這些目錄。其行為類似于UNIX的mkdir-p,它會創(chuàng)建路徑中的各級父目錄。例如,返回值:成功返回0,失敗返回-1。16.movefromLocal命令使用方法:dfs-moveFromLocal<src><dst>。輸出一個“notimplemented”信息。任務(wù)3Hadoopshell命令3.3.2HDFS命令17.mv命令使用方法:hadoopfs-mvURI[URI…]<dest>。將文件從源路徑移動到目標(biāo)路徑。這個命令允許有多個源路徑,此時目標(biāo)路徑必須是一個目錄。不允許在不同的文件系統(tǒng)間移動文件。例如,返回值:成功返回0,失敗返回-1。任務(wù)3Hadoopshell命令3.3.2HDFS命令18.put命令使用方法:hadoopfs-put<localsrc>…<dst>。從本地文件系統(tǒng)中復(fù)制單個或多個源路徑到目標(biāo)文件系統(tǒng),也支持從標(biāo)準(zhǔn)輸入中讀取輸入并寫入目標(biāo)文件系統(tǒng)。例如,從標(biāo)準(zhǔn)輸入中讀取輸入。返回值:成功返回0,失敗返回-1。任務(wù)3Hadoopshell命令3.3.2HDFS命令19.rm命令使用方法:hadoopfs-rmURI[URI…]。刪除指定的文件。只刪除非空目錄和文件。請參考rmr命令了解遞歸刪除。例如,返回值:成功返回0,失敗返回-1。20.rmr命令使用方法:hadoopfs-rmrURI[URI…]。例如,返回值:成功返回0,失敗返回-1。任務(wù)3Hadoopshell命令3.3.2HDFS命令21.setrep命令使用方法:hadoopfs-setrep[-R]<path>。改變一個文件的副本系數(shù)。-R選項(xiàng)用于遞歸改變目錄下所有文件的副本系數(shù)。例如,返回值:成功返回0,失敗返回-1。22.stat命令使用方法:hadoopfs-statURI[URI…]。返回指定路徑的統(tǒng)計信息。例如,返回值:成功返回0,失敗返回-1。任務(wù)3Hadoopshell命令3.3.2HDFS命令23.tail命令使用方法:hadoopfs-tail[-f]URI。將文件尾部1KB字節(jié)的內(nèi)容輸出到stdout。支持-f選項(xiàng),行為和UNIX中一致。例如,返回值:成功返回0,失敗返回-1。24.test命令使用方法:hadoopfs-test-[ezd]URI。選項(xiàng):-e:檢查文件是否存在。若存在則返回0。-z:檢查文件是否是0字節(jié)。若是則返回0。-d:若路徑是個目錄,則返回1,否則返回0。任務(wù)3Hadoopshell命令3.3.2HDFS命令25.text命令使用方法:hadoopfs-text<src>。將源文件輸出為文本格式。允許的格式是zip和TextRecordInputStream。26.touchz命令使用方法:hadoopfs-touchzURI[URI…]。創(chuàng)建一個0字節(jié)的空文件。例如,返回值:成功返回0,失敗返回-1。任務(wù)3Hadoopshell命令3.3.3HDFS管理員命令管理員命令對于集群管理員是非常有用的,命令比較多,如平衡管理、緩存管理、DFS管理、DataNode管理等,用戶可以查看DFS管理員命令的幫
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臍帶護(hù)理的案例分析
- in和on日期區(qū)別課件
- 2026廣東惠州市博羅縣榕盛城市建設(shè)投資有限公司下屬全資子公司招聘2人備考題庫及1套完整答案詳解
- 跨境電商獨(dú)立站域名購買協(xié)議2025年
- 產(chǎn)品管理學(xué)考試題及答案
- 良肢體位擺放試題及答案
- 湖南省人力資源管理專業(yè)人員職稱評價辦法
- 肝轉(zhuǎn)移放射治療的適應(yīng)證與進(jìn)展
- 幼兒園衛(wèi)生統(tǒng)計工作制度
- 中學(xué)衛(wèi)生保健室工作制度
- 鑿巖臺車技術(shù)及應(yīng)用
- 3D打印技術(shù)及應(yīng)用-課件 2.2 典型3D打印技術(shù)-熔融沉積成型(FDM)技術(shù)
- 初中道德與法治課開展議題式教學(xué)實(shí)踐研究
- 交通運(yùn)輸類碩士畢業(yè)論文
- 壓軸訓(xùn)練:全等三角形(多解、動點(diǎn)、新定義型壓軸)(原卷版)
- 極兔快遞合作合同協(xié)議書
- 加油站安全環(huán)保課件
- co中毒遲發(fā)性腦病診斷與治療中國專家共識解讀
- 新版預(yù)算管理制度
- 2024版人教版八年級上冊英語單詞表(含音標(biāo)完整版)
- “轉(zhuǎn)作風(fēng)、換腦子、促管理”集中整頓工作心得體會
評論
0/150
提交評論