版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1第4章Hadoop分布式文件系統(tǒng)4.1分布式文件系統(tǒng)的結(jié)構(gòu)4.2HDFS基本特征4.3HDFS存儲架構(gòu)及組件功能4.4HDFS的文件訪問過程4.5HDFS操作常用Shell命令4.6HDFS編程實(shí)踐4.1分布式文件系統(tǒng)的結(jié)構(gòu)4.1.1主控服務(wù)器4.1.2數(shù)據(jù)服務(wù)器4.1.3客戶端4.1分布式文件系統(tǒng)的結(jié)構(gòu)本地文件系統(tǒng)管理本地的磁盤存儲資源、提供文件到存儲位置的映射,并抽象出一套文件訪問接口供用戶使用。當(dāng)數(shù)據(jù)集的大小超過一臺獨(dú)立的物理計(jì)算機(jī)的存儲能力時(shí),就有必要對它進(jìn)行分區(qū)并存儲到若干臺單獨(dú)的計(jì)算機(jī)上,管理網(wǎng)絡(luò)中跨越多臺計(jì)算機(jī)存儲的文件系統(tǒng)稱為分布式文件系統(tǒng)(DistributedFileSystem)。分布式文件系統(tǒng)將數(shù)據(jù)存儲在物理上分散的多個(gè)存儲節(jié)點(diǎn)上,對這些節(jié)點(diǎn)的資源進(jìn)行統(tǒng)一的管理與分配,并向用戶提供文件系統(tǒng)訪問接口,其主要解決了本地文件系統(tǒng)在文件大小、文件數(shù)量、打開文件數(shù)等的限制問題。4.1分布式文件系統(tǒng)的結(jié)構(gòu)分布式文件系統(tǒng)架構(gòu),通常包括主控服務(wù)器(主,或稱元數(shù)據(jù)服務(wù)器、名字服務(wù)器等),主控服務(wù)器(備,以便在故障時(shí)接管服務(wù)),多個(gè)數(shù)據(jù)服務(wù)器(或稱存儲服務(wù)器,存儲節(jié)點(diǎn)等),以及多個(gè)客戶端。4.1分布式文件系統(tǒng)的結(jié)構(gòu)分布式文件系統(tǒng)的數(shù)據(jù)存儲解決方案大量的文件,均勻分布到多個(gè)數(shù)據(jù)服務(wù)器上后。對于很大的文件,將大文件劃分成多個(gè)相對較小的片段,存儲在多個(gè)數(shù)據(jù)服務(wù)器上。理論上,分布式文件系統(tǒng)可以只有客戶端和多個(gè)數(shù)據(jù)服務(wù)器組成:客戶端根據(jù)文件名決定將文件存儲到哪個(gè)數(shù)據(jù)服務(wù)器。但一旦有數(shù)據(jù)服務(wù)器失效時(shí),客戶端并不知道數(shù)據(jù)服務(wù)器宕機(jī)的消息,仍然連接它進(jìn)行數(shù)據(jù)存取,導(dǎo)致整個(gè)系統(tǒng)的可靠性極大地降低而且完全由客戶端決定數(shù)據(jù)分配無法根據(jù)文件特性制定不同的分布策略。4.1分布式文件系統(tǒng)的結(jié)構(gòu)數(shù)據(jù)服務(wù)器的狀態(tài)管理可分為分散式:讓多個(gè)數(shù)據(jù)服務(wù)器相互管理,每個(gè)服務(wù)器向其他所有的服務(wù)器發(fā)送心跳信息。集中式:通過一個(gè)獨(dú)立的服務(wù)器(如上圖中的主控服務(wù)器)來管理數(shù)據(jù)服務(wù)器,每個(gè)服務(wù)器向其匯報(bào)服務(wù)狀態(tài)來達(dá)到集中管理的目的,該方式簡單易實(shí)現(xiàn),目前很多分布式文件系統(tǒng)都采用這種方式如GFS、TFS、MooseFS等。主控服務(wù)器在負(fù)載較大時(shí)會出現(xiàn)單點(diǎn)失效,較好的解決方案是配置備用服務(wù)器,以便在故障時(shí)接管服務(wù)。4.1.1主控服務(wù)器主控服務(wù)器主要負(fù)責(zé)命名空間的維護(hù)、數(shù)據(jù)服務(wù)器管理、服務(wù)調(diào)度、主備(主)容災(zāi)。(1)命名空間的維護(hù)負(fù)責(zé)維護(hù)整個(gè)文件系統(tǒng)的命名空間,并暴露給用戶使用,命名空間的結(jié)構(gòu)主要有目錄樹結(jié)構(gòu)如MooseFS等,扁平化結(jié)構(gòu)如淘寶TFS(目前已提供目錄樹結(jié)構(gòu)支持),圖結(jié)構(gòu)(主要面向終端用戶,方便用戶根據(jù)文件關(guān)聯(lián)性組織文件)。(2)數(shù)據(jù)服務(wù)器管理通過輪詢數(shù)據(jù)服務(wù)器或由數(shù)據(jù)服務(wù)器報(bào)告心跳的方式實(shí)現(xiàn)對數(shù)據(jù)服務(wù)器的管理4.1.1主控服務(wù)器(2)數(shù)據(jù)服務(wù)器管理通過輪詢數(shù)據(jù)服務(wù)器或由數(shù)據(jù)服務(wù)器報(bào)告心跳的方式實(shí)現(xiàn)對數(shù)據(jù)服務(wù)器的管理。在接收到客戶端寫請求時(shí),主控服務(wù)器需要根據(jù)各個(gè)數(shù)據(jù)服務(wù)器的負(fù)載等信息選擇一組(根據(jù)系統(tǒng)配置的副本數(shù))數(shù)據(jù)服務(wù)器為其服務(wù);當(dāng)主控服務(wù)器發(fā)現(xiàn)有數(shù)據(jù)服務(wù)器宕機(jī)時(shí),需要對一些副本數(shù)不足的文件(塊)執(zhí)行復(fù)制計(jì)劃;當(dāng)有新的數(shù)據(jù)服務(wù)器加入集群或是某個(gè)數(shù)據(jù)服務(wù)器上負(fù)載過高,主控服務(wù)器也可根據(jù)需要執(zhí)行一些副本遷移計(jì)劃。4.1.1主控服務(wù)器(3)服務(wù)調(diào)度主控服務(wù)器最終的目的還是要服務(wù)好客戶端的請求,除了一些周期性線程任務(wù)外,主控服務(wù)器需要服務(wù)來自客戶端和數(shù)據(jù)服務(wù)器的請求。(4)主備(主)容災(zāi)主控服務(wù)器維護(hù)文件(塊)到數(shù)據(jù)服務(wù)器的映射、管理所有的數(shù)據(jù)服務(wù)器狀態(tài)并在某些條件觸發(fā)時(shí)執(zhí)行負(fù)載均衡計(jì)劃等。為了避免主控服務(wù)器的單點(diǎn)失效問題,通常會為其配置備用服務(wù)器,以保證在主控服務(wù)器節(jié)點(diǎn)失效時(shí)接管其工作。4.1.2數(shù)據(jù)服務(wù)器數(shù)據(jù)服務(wù)器主要負(fù)責(zé)數(shù)據(jù)本地存儲、狀態(tài)維護(hù)、副本管理、服務(wù)調(diào)度。(1)數(shù)據(jù)本地存儲負(fù)責(zé)文件數(shù)據(jù)在本地的持久化存儲,最簡單的方式是將客戶每個(gè)文件作為一個(gè)本地文件存儲,但這種方式并不能很好的利用分布式文件系統(tǒng)的特性,很多文件系統(tǒng)使用固定大小的塊來存儲數(shù)據(jù),典型的塊大小為64M。對于小文件的存儲,可以將多個(gè)文件的數(shù)據(jù)存儲在一個(gè)塊中,并為塊內(nèi)的文件建立索引,這樣可以極大的提高存儲空間利用率。對于大文件的存儲,則可將文件存儲到多個(gè)塊上。4.1.2數(shù)據(jù)服務(wù)器(2)狀態(tài)維護(hù)數(shù)據(jù)服務(wù)器除了簡單的存儲數(shù)據(jù)外,還需要維護(hù)一些狀態(tài),首先它需要將自己的狀態(tài)以心跳包的方式周期性的報(bào)告給主控服務(wù)器,使得主控服務(wù)器知道自己是否正常工作,通常心跳包中還會包含數(shù)據(jù)服務(wù)器當(dāng)前的負(fù)載狀況(CPU、內(nèi)存、磁盤IO、磁盤存儲空間、網(wǎng)絡(luò)IO等、進(jìn)程資源,視具體需求而定),這些信息可以幫助主控服務(wù)器更好的制定負(fù)載均衡策略。4.1.2數(shù)據(jù)服務(wù)器(3)副本管理為了保證數(shù)據(jù)的安全性,分布式文件系統(tǒng)中的文件會存儲多個(gè)副本到數(shù)據(jù)服務(wù)器上,寫多個(gè)副本的方式,主要分為3種。最簡單的方式是客戶端分別向多個(gè)數(shù)據(jù)服務(wù)器寫同一份數(shù)據(jù),如DNFS采用這種方式;第2種方式是客戶端向主數(shù)據(jù)服務(wù)器寫數(shù)據(jù),主數(shù)據(jù)服務(wù)器向其他數(shù)據(jù)服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù),如TFS采用這種方式;第三種方式采用流水復(fù)制的方式,client向某個(gè)數(shù)據(jù)服務(wù)器寫數(shù)據(jù),該數(shù)據(jù)服務(wù)器向副本鏈中下一個(gè)數(shù)據(jù)服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù),依次類推,如HDFS、GFS采取這種方式。4.1.2數(shù)據(jù)服務(wù)器(3)副本管理為了保證數(shù)據(jù)的安全性,分布式文件系統(tǒng)中的文件會存儲多個(gè)副本到數(shù)據(jù)服務(wù)器上,寫多個(gè)副本的方式,主要分為3種。最簡單的方式是客戶端分別向多個(gè)數(shù)據(jù)服務(wù)器寫同一份數(shù)據(jù),如DNFS采用這種方式;第2種方式是客戶端向主數(shù)據(jù)服務(wù)器寫數(shù)據(jù),主數(shù)據(jù)服務(wù)器向其他數(shù)據(jù)服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù),如TFS采用這種方式;第三種方式采用流水復(fù)制的方式,client向某個(gè)數(shù)據(jù)服務(wù)器寫數(shù)據(jù),該數(shù)據(jù)服務(wù)器向副本鏈中下一個(gè)數(shù)據(jù)服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù),依次類推,如HDFS采取這種方式。(4)服務(wù)調(diào)度參考主控服務(wù)器服務(wù)調(diào)度一節(jié)。4.1.3客戶端(1)接口用戶最終通過文件系統(tǒng)提供的接口來存取數(shù)據(jù),linux環(huán)境下,最好莫過于能提供POSIX接口的支持,如果不能支持POSIX接口,則為了支持不同語言的開發(fā)者,需要提供多種語言的客戶端支持,如常用的C/C++、Java、php、Python客戶端。(2)緩存分布式文件系統(tǒng)的文件存取,要求客戶端先連接主控服務(wù)器獲取一些用于文件訪問的元信息,這會加重主控服務(wù)器的負(fù)擔(dān),增加了客戶端的請求的響應(yīng)延遲。為了加速該過程,同時(shí)減小主控服務(wù)器的負(fù)擔(dān),可將元信息進(jìn)行緩存,TFS可利用tair作為緩存(減小主控服務(wù)器負(fù)擔(dān)、降低客戶端資源占用)。15第4章Hadoop分布式文件系統(tǒng)4.1分布式文件系統(tǒng)的結(jié)構(gòu)4.2HDFS基本特征4.3HDFS存儲架構(gòu)及組件功能4.4HDFS的文件訪問過程4.5HDFS操作常用Shell命令4.6HDFS編程實(shí)踐4.2HDFS基本特征(1)大規(guī)模數(shù)據(jù)分布存儲能力(2)流數(shù)據(jù)讀寫(3)強(qiáng)大的容錯(cuò)能力(4)簡單的文件模型HDFS采用“一次寫入、多次讀取”的簡單文件模型,支持大量數(shù)據(jù)的一次寫入,多次讀??;不支持已寫入數(shù)據(jù)的更新操作,但允許在文件尾部添加新的數(shù)據(jù)。(5)數(shù)據(jù)塊存儲模式HDFS采用基于大粒度數(shù)據(jù)塊的方式存儲文件,默認(rèn)的塊大小是64MB,這樣做的好處是可以減少元數(shù)據(jù)的數(shù)量,并且可以允許將這些數(shù)據(jù)塊通過隨機(jī)方式選擇節(jié)點(diǎn),分布存儲在不同的地方。17第4章Hadoop分布式文件系統(tǒng)4.1分布式文件系統(tǒng)的結(jié)構(gòu)4.2HDFS基本特征4.3HDFS存儲架構(gòu)及組件功能4.4HDFS的文件訪問過程4.5HDFS操作常用Shell命令4.6HDFS編程實(shí)踐4.3HDFS存儲架構(gòu)及組件功能HDFS是一個(gè)建立在一組分布式服務(wù)器節(jié)點(diǎn)的本地文件系統(tǒng)之上的分布式文件系統(tǒng)。HDFS采用Master/Slave的架構(gòu)來存儲數(shù)據(jù),這種架構(gòu)主要由四個(gè)部分組成:分別為Client、NameNode、DataNode和SecondaryNameNode。NameNode是一個(gè)中心服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的名字空間(NameSpace)及客戶端對文件的訪問。一個(gè)DataNode節(jié)點(diǎn)運(yùn)行一個(gè)DataNode進(jìn)程,負(fù)責(zé)管理它所在節(jié)點(diǎn)上的數(shù)據(jù)存儲。NameNode和DataNode共同協(xié)調(diào)完成分布式的文件存儲服務(wù)。4.3.2數(shù)據(jù)塊在傳統(tǒng)的文件系統(tǒng)中,為了提高磁盤讀寫效率,一般以數(shù)據(jù)塊block為單位,而不是以字節(jié)為單位。HDFS同樣有block的概念,但是它是一個(gè)更大的單元——默認(rèn)128M(hadoop2.x)。HDFS中的文件也分解成block大小的數(shù)據(jù)塊,獨(dú)立保存在各單元中。不像單一磁盤文件系統(tǒng),如果HDFS中的文件比block小,它不會占用block的整個(gè)存儲空間(例如,一個(gè)1M的文件存儲在128M的block中,它只使用1M的磁盤空間而不是128M)。4.3.3名稱節(jié)點(diǎn)名稱節(jié)點(diǎn)(NameNode)是一個(gè)中心服務(wù)器,負(fù)責(zé)管理整個(gè)文件系統(tǒng)的名字空間(Namespace)和元數(shù)據(jù),以及處理來自客戶端的文件訪問請求。NameNode保存了文件系統(tǒng)的三種元數(shù)據(jù):1)命名空間,即整個(gè)分布式文件系統(tǒng)的目錄結(jié)構(gòu);2)數(shù)據(jù)塊與文件名的映射表;3)每個(gè)數(shù)據(jù)塊副本的位置信息,每一個(gè)數(shù)據(jù)塊默認(rèn)有3個(gè)副本。4.3.4數(shù)據(jù)節(jié)點(diǎn)DataNode節(jié)點(diǎn)用來實(shí)際存儲文件的數(shù)據(jù)塊,文件的每個(gè)數(shù)據(jù)塊默認(rèn)的大小為128M(hadoop2.x)。為了防止數(shù)據(jù)丟失,一個(gè)數(shù)據(jù)塊Block會在多個(gè)DataNode中進(jìn)行冗余備份,每個(gè)數(shù)據(jù)塊默認(rèn)有3個(gè)副本。一個(gè)HDFS集群可能包含上千個(gè)DataNode節(jié)點(diǎn),它們定時(shí)和NameNode進(jìn)行通信,接受NameNode的指令;為了減輕NameNode的負(fù)擔(dān),NameNode上并不永久保存哪個(gè)DataNode上有哪些數(shù)據(jù)塊的信息,而是通過DataNode啟動時(shí)的上報(bào)來更新NameNode上的映射表。DataNode和NameNode建立連接后,就會不斷地和NameNode保持聯(lián)系進(jìn)行信息反饋,反饋信息中也包含了NameNode對DataNode的一些命令,如刪除數(shù)據(jù)塊或者把數(shù)據(jù)塊復(fù)制到另一個(gè)DataNode。4.3.4數(shù)據(jù)節(jié)點(diǎn)DataNode也作為服務(wù)器接受來自客戶端的訪問,處理數(shù)據(jù)塊讀/寫請求。DataNode之間還會相互通信,執(zhí)行數(shù)據(jù)塊復(fù)制任務(wù),同時(shí),在客戶端執(zhí)行寫操作的時(shí)候,DataNode之間需要相互配合,以保證寫操作的一致性。DataNode會通過心跳(Heartbeat)定時(shí)向NameNode發(fā)送所存儲的文件塊信息。4.3.5第二名稱節(jié)點(diǎn)Hadoop中使用SecondaryNameNode來備份NameNode的元數(shù)據(jù),以便在NameNode失效時(shí)能從SecondaryNameNode恢復(fù)出NameNode上的元數(shù)據(jù)。但NameNode中保存了整個(gè)文件系統(tǒng)的元數(shù)據(jù),而SecondaryNameNode只是周期性保存NameNode的元數(shù)據(jù),包括元數(shù)據(jù)鏡像文件(FsImage)數(shù)據(jù)和操作日志文件(EditLog)數(shù)據(jù)。FsImage相當(dāng)于HDFS的檢查點(diǎn),NameNode啟動時(shí)會讀取FsImage的內(nèi)容到內(nèi)存,并將其與EditLog日志中的所有修改信息合并生成新的FsImage;在NameNode運(yùn)行過程中,所有關(guān)于HDFS的修改都將寫入EditLog。若NameNode失效,可以通過SecondaryNameNode中保存的FsImage和EditLog數(shù)據(jù)恢復(fù)出NameNode最近的狀態(tài)。4.3.6客戶端嚴(yán)格來講,客戶端并不能算是HDFS的一部分,但客戶端是用戶和HDFS通信最常見也是最方便的渠道,而且部署的HDFS都會提供客戶端??蛻舳藶橛脩籼峁┝艘环N可以通過與Linux中的Shell類似的方式訪問HDFS的數(shù)據(jù)??蛻舳酥巫畛R姷牟僮魅绱蜷_、讀取、寫入等,而且命令的格式也和Shell十分相似,大大方便了程序員和管理員的操作。Client(代表用戶)通過與NameNode和DataNode交互訪問HDFS中的文件。25第4章Hadoop分布式文件系統(tǒng)4.1分布式文件系統(tǒng)的結(jié)構(gòu)4.2HDFS基本特征4.3HDFS存儲架構(gòu)及組件功能4.4HDFS的文件訪問過程4.5HDFS操作常用Shell命令4.6HDFS編程實(shí)踐4.4HDFS的文件訪問過程在一個(gè)集群中采用單一的NameNode可大大簡化系統(tǒng)的架構(gòu),簡化操作流程。雖然NameNode記錄了HDFS的元數(shù)據(jù),但是,客戶端程序訪問文件時(shí),實(shí)際的文件數(shù)據(jù)流并不會通過NameNode傳送,而是從NameNode獲得所需訪問數(shù)據(jù)塊的存儲位置信息后,直接去訪問對應(yīng)的DataNode獲取數(shù)據(jù)。這樣設(shè)計(jì)有兩個(gè)好處:一是可以允許一個(gè)文件的數(shù)據(jù)能同時(shí)在不同DataNode上并發(fā)訪問,提高訪問數(shù)據(jù)的速度;二是可以大大減少NameNode的負(fù)擔(dān),避免NameNode成為訪問數(shù)據(jù)的瓶頸。4.4HDFS的文件訪問過程HDFS的基本文件訪問過程如下。(1)首先,用戶通過客戶端將文件名發(fā)送至NameNode;(2)NameNode接收到文件名之后,在HDFS的目錄中檢索文件名對應(yīng)的數(shù)據(jù)塊,再根據(jù)數(shù)據(jù)塊信息找到保存數(shù)據(jù)塊的DataNode地址,將這些地址回送給客戶端;(3)客戶端接收到這些DataNode地址之后,與這些DataNode并行地進(jìn)行數(shù)據(jù)傳輸操作,同時(shí)將操作結(jié)果的相關(guān)日志(比如數(shù)據(jù)讀寫是否成功、修改后的數(shù)據(jù)塊信息等)提交到NameNode。4.4HDFS的文件訪問過程4.4.1HDFS讀文件流程4.4HDFS的文件訪問過程4.4.1HDFS讀文件流程(1)客戶端首先調(diào)用DistributedFileSystem對象的open方法打開文件,調(diào)用open方法后,DistributeFileSystem會創(chuàng)建輸入流FSDataFileSystem,對于HDFS而言,具體的輸入流就是DFSInputStream。(2)輸入流通過ClientProtocal.getBlockLocations()遠(yuǎn)程調(diào)用名稱節(jié)點(diǎn),獲得文件的第一批數(shù)據(jù)塊的位置,同一數(shù)據(jù)塊按照副本數(shù)會返回多個(gè)位置,距離客戶端近的排在前面;然后,DistributedFileSystem會利用DFSInputStream來實(shí)例化FSDataInputStream,返回給客戶端,同時(shí)返回?cái)?shù)據(jù)塊的數(shù)據(jù)節(jié)點(diǎn)地址。(3)獲得輸入流DFSInputStream對象后,客戶端調(diào)用read方法開始讀取數(shù)據(jù),通過DFSInputStream可以方便的管理DataNode和NameNode數(shù)據(jù)流。DFSInputStream就會找出離客戶端最近的DataNode建立連接并讀取數(shù)據(jù)。4.4HDFS的文件訪問過程4.4.1HDFS讀文件流程(4)數(shù)據(jù)從DataNode源源不斷的流向客戶端,如果第一個(gè)數(shù)據(jù)塊的數(shù)據(jù)讀完了,就會關(guān)閉指向第一個(gè)數(shù)據(jù)塊的DataNode連接。輸入流通過getBlockLocations方法查找下一個(gè)數(shù)據(jù)塊(如果客戶端緩存中已經(jīng)包含了該數(shù)據(jù)塊的位置信息,就不需要調(diào)用該方法)讀取數(shù)據(jù)。(5)如果第一批數(shù)據(jù)塊都讀完了,DFSInputStream就會去NameNode獲取下一批數(shù)據(jù)塊的位置,然后繼續(xù)讀,如果所有的數(shù)據(jù)塊都讀完,調(diào)用FSDataInputStream的close方法,關(guān)閉輸入流。4.4HDFS的文件訪問過程4.4.2HDFS寫文件流程32第4章Hadoop分布式文件系統(tǒng)4.1分布式文件系統(tǒng)的結(jié)構(gòu)4.2HDFS基本特征4.3HDFS存儲架構(gòu)及組件功能4.4HDFS的文件訪問過程4.5HDFS操作常用Shell命令4.6HDFS編程實(shí)踐4.5HDFS操作常用Shell命令HDFS支持多種Shell命令方式,例如hadoopfs、hadoopdfs和hdfsdfs都是HDFS最常用的Shell命令,分別用來查看HDFS文件系統(tǒng)的目錄結(jié)構(gòu)、上傳和下載數(shù)據(jù)、創(chuàng)建文件等,這3個(gè)命令既有相同點(diǎn)又有區(qū)別。(1)hadoopfs:適用于任何不同的文件系統(tǒng),例如本地文件系統(tǒng)和HDFS文件系統(tǒng)。(2)hadoopdfs:只能適用于HDFS文件系統(tǒng)。(3)hdfsdfs:跟hadoopdfs命令的作用一樣,也只能適用于HDFS文件系統(tǒng)。4.5HDFS操作常用Shell命令4.5.1查看命令使用方法登錄Linux系統(tǒng),打開一個(gè)終端,首先啟動Hadoop,命令如下:cd/usr/local/hadoop./sbin/start-dfs.sh可以在終端輸入如下命令,查看hdfsdfs總共支持哪些操作cd/usr/local/hadoop./bin/hdfsdfshdfsdfs命令的統(tǒng)一格式是類似hdfsdfs–ls這種形式,即在“-”后面跟上具體的操作。4.5HDFS操作常用Shell命令4.5.2HDFS目錄操作Hadoop系統(tǒng)安裝好以后,第一次使用HDFS時(shí),需要首先在HDFS中創(chuàng)建用戶目錄。命令如下:cd/usr/local/hadoop./bin/hdfsdfs-mkdir-p/user/hadoop該命令表示在HDFS中創(chuàng)建一個(gè)/user/hadoop目錄,-mkdir是創(chuàng)建目錄的操作,-p表示如果是多級目錄,則父目錄和子目錄一起創(chuàng)建,這里/user/hadoop就是一個(gè)多級目錄,因此必須使用參數(shù)-p,否則會出錯(cuò)。36第4章Hadoop分布式文件系統(tǒng)4.1分布式文件系統(tǒng)的結(jié)構(gòu)4.2HDFS基本特征4.3HDFS體系結(jié)構(gòu)4.4HDFS的文件訪問過程4.5HDFS操作常用Shell命令4.6HDFS編程實(shí)踐4.6HDFS編程實(shí)踐Hadoop采用Java語言開發(fā),提供了JavaAPI與HDFS進(jìn)行交互。上面介紹的Shell命令,在執(zhí)行時(shí)實(shí)際上會被系統(tǒng)轉(zhuǎn)換成JavaAPI調(diào)用。本書采用Eclipse工具編寫Java程序。4.6.1在Eclipse中創(chuàng)建項(xiàng)目Eclipse啟動以后,選擇File→New→JavaProject命令,開始創(chuàng)建一個(gè)Java工程,會彈出如圖3-4所示的界面。4.6HDFS編程實(shí)踐單擊界面底部的Next按鈕,進(jìn)入下一步設(shè)置。4.6.2為項(xiàng)目添加需要用到的JAR包這些JAR包中包含了可以訪問HDFS的JavaAPI。這些JAR包都位于Linux系統(tǒng)的Hadoop安裝目錄下,對于本書而言,就是在/usr/local/hadoop/share/hadoop目錄下。單擊界面中的Libraries選項(xiàng)卡,然后單擊界面右側(cè)的AddExternalJARs按鈕,會彈出如圖3-6所示的界面。4.6HDFS編程實(shí)踐單擊界面底部的Next按鈕,進(jìn)入下一步設(shè)置。4.6.2為項(xiàng)目添加需要用到的JAR包為了編寫一個(gè)能夠與HDFS交互的Java應(yīng)用程序,一般需要向Java工程中添加以下JAR包:(1)/usr/local/hadoop/share/hadoop/common目錄下的hadoop-common-2.7.1.jar和hadoop-nfs-2.7.1.jar。(2)/usr/local/hadoop/share/hadoop/common/lib目錄下的所有JAR包。(3)/usr/local/hadoop/share/hadoop/hdfs目錄下的hadoop-hdfs-2.7.1.jar和hadoop-hdfs-nfs-2.7.1.jar。(4)/usr/local/hadoop/share/hadoop/hdfs/lib目錄下的所有JAR包。4.6HDFS編程實(shí)踐4.6.3編寫Java應(yīng)用程序下面編寫一個(gè)Java應(yīng)用程序,用來檢測HDFS中是否存在一個(gè)文件。在Eclipse工作界面左側(cè)的PackageExplorer面板中找到剛才創(chuàng)建好的工程名稱HDFSExample(如圖3-9所示),然后在該工程名稱上右擊,在彈出的菜單中選擇New→Class命令。出現(xiàn)如圖3-10所示的界面。4.6HDFS編程實(shí)踐4.6.3編寫Java應(yīng)用程序下面編寫一個(gè)Java應(yīng)用程序,用來檢測HDFS中是否存在一個(gè)文件。在Eclipse工作界面左側(cè)的PackageExplorer面板中找到剛才創(chuàng)建好的工程名稱HDFSExample(如圖3-9所示),然后在該工程名稱上右擊,在彈出的菜單中選擇New→Class命令。出現(xiàn)如圖3-10所示的界面。在該界面中,只需要在Name后面輸入新建的Java類文件的名稱,這里采用名稱HDFSFileIfExist,其它都可以采用默認(rèn)設(shè)置,然后單擊界面右下角的Finish按鈕,出現(xiàn)如圖3-11所示的界面。4.6HDFS編程實(shí)踐4.6.3編寫Java應(yīng)用程序下面編寫一個(gè)Java應(yīng)用程序,用來檢測HDFS中是否存在一個(gè)文件。在Eclipse工作界面左側(cè)的PackageExplorer面板中找到剛才創(chuàng)建好的工程名稱HDFSExample(如圖3-9所示),然后在該工程名稱上右擊,在彈出的菜單中選擇New→Class命令。出現(xiàn)如圖3-10所示的界面。在該界面中,只需要在Name后面輸入新建的Java類文件的名稱,這里采用名稱HDFSFileIfExist,其它都可以采用默認(rèn)設(shè)置,然后單擊界面右下角的Finish按鈕,出現(xiàn)如圖3-11所示的界面??梢钥闯?,Eclipse自動創(chuàng)建了一個(gè)名為HDFSFileIfExist.java的源代碼文件,請?jiān)谠撐募?/p>
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 多文化家庭沖突與融合策略-深度研究
- 2025年嵩山少林武術(shù)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- GmPIN1介導(dǎo)的生長素不對稱分布調(diào)控大豆葉柄夾角和株型
- W縣推動村容村貌整體提升工作存在的問題與改進(jìn)的對策
- 2025年安徽汽車職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 2025年安徽審計(jì)職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 2025年天津體育職業(yè)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 2025至2030年中國古木家具數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國三加侖飲水瓶數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025年四川工程職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 2024至2030年中國膨潤土行業(yè)投資戰(zhàn)略分析及發(fā)展前景研究報(bào)告
- 【地理】地圖的選擇和應(yīng)用(分層練) 2024-2025學(xué)年七年級地理上冊同步備課系列(人教版)
- (正式版)CB∕T 4552-2024 船舶行業(yè)企業(yè)安全生產(chǎn)文件編制和管理規(guī)定
- JBT 14588-2023 激光加工鏡頭 (正式版)
- 2024年四川省成都市樹德實(shí)驗(yàn)中學(xué)物理八年級下冊期末質(zhì)量檢測試題含解析
- 九型人格與領(lǐng)導(dǎo)力講義
- 廉潔應(yīng)征承諾書
- 2023年四川省成都市中考物理試卷真題(含答案)
- 泵車述職報(bào)告
- 2024年山西文旅集團(tuán)招聘筆試參考題庫含答案解析
- 恢復(fù)中華人民共和國國籍申請表
評論
0/150
提交評論