




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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編程實踐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ù)集的大小超過一臺獨立的物理計算機的存儲能力時,就有必要對它進行分區(qū)并存儲到若干臺單獨的計算機上,管理網(wǎng)絡(luò)中跨越多臺計算機存儲的文件系統(tǒng)稱為分布式文件系統(tǒng)(DistributedFileSystem)。分布式文件系統(tǒng)將數(shù)據(jù)存儲在物理上分散的多個存儲節(jié)點上,對這些節(jié)點的資源進行統(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ù)器(備,以便在故障時接管服務(wù)),多個數(shù)據(jù)服務(wù)器(或稱存儲服務(wù)器,存儲節(jié)點等),以及多個客戶端。4.1分布式文件系統(tǒng)的結(jié)構(gòu)分布式文件系統(tǒng)的數(shù)據(jù)存儲解決方案大量的文件,均勻分布到多個數(shù)據(jù)服務(wù)器上后。對于很大的文件,將大文件劃分成多個相對較小的片段,存儲在多個數(shù)據(jù)服務(wù)器上。理論上,分布式文件系統(tǒng)可以只有客戶端和多個數(shù)據(jù)服務(wù)器組成:客戶端根據(jù)文件名決定將文件存儲到哪個數(shù)據(jù)服務(wù)器。但一旦有數(shù)據(jù)服務(wù)器失效時,客戶端并不知道數(shù)據(jù)服務(wù)器宕機的消息,仍然連接它進行數(shù)據(jù)存取,導(dǎo)致整個系統(tǒng)的可靠性極大地降低而且完全由客戶端決定數(shù)據(jù)分配無法根據(jù)文件特性制定不同的分布策略。4.1分布式文件系統(tǒng)的結(jié)構(gòu)數(shù)據(jù)服務(wù)器的狀態(tài)管理可分為分散式:讓多個數(shù)據(jù)服務(wù)器相互管理,每個服務(wù)器向其他所有的服務(wù)器發(fā)送心跳信息。集中式:通過一個獨立的服務(wù)器(如上圖中的主控服務(wù)器)來管理數(shù)據(jù)服務(wù)器,每個服務(wù)器向其匯報服務(wù)狀態(tài)來達到集中管理的目的,該方式簡單易實現(xiàn),目前很多分布式文件系統(tǒng)都采用這種方式如GFS、TFS、MooseFS等。主控服務(wù)器在負載較大時會出現(xiàn)單點失效,較好的解決方案是配置備用服務(wù)器,以便在故障時接管服務(wù)。4.1.1主控服務(wù)器主控服務(wù)器主要負責(zé)命名空間的維護、數(shù)據(jù)服務(wù)器管理、服務(wù)調(diào)度、主備(主)容災(zāi)。(1)命名空間的維護負責(zé)維護整個文件系統(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ù)器報告心跳的方式實現(xiàn)對數(shù)據(jù)服務(wù)器的管理4.1.1主控服務(wù)器(2)數(shù)據(jù)服務(wù)器管理通過輪詢數(shù)據(jù)服務(wù)器或由數(shù)據(jù)服務(wù)器報告心跳的方式實現(xiàn)對數(shù)據(jù)服務(wù)器的管理。在接收到客戶端寫請求時,主控服務(wù)器需要根據(jù)各個數(shù)據(jù)服務(wù)器的負載等信息選擇一組(根據(jù)系統(tǒng)配置的副本數(shù))數(shù)據(jù)服務(wù)器為其服務(wù);當(dāng)主控服務(wù)器發(fā)現(xiàn)有數(shù)據(jù)服務(wù)器宕機時,需要對一些副本數(shù)不足的文件(塊)執(zhí)行復(fù)制計劃;當(dāng)有新的數(shù)據(jù)服務(wù)器加入集群或是某個數(shù)據(jù)服務(wù)器上負載過高,主控服務(wù)器也可根據(jù)需要執(zhí)行一些副本遷移計劃。4.1.1主控服務(wù)器(3)服務(wù)調(diào)度主控服務(wù)器最終的目的還是要服務(wù)好客戶端的請求,除了一些周期性線程任務(wù)外,主控服務(wù)器需要服務(wù)來自客戶端和數(shù)據(jù)服務(wù)器的請求。(4)主備(主)容災(zāi)主控服務(wù)器維護文件(塊)到數(shù)據(jù)服務(wù)器的映射、管理所有的數(shù)據(jù)服務(wù)器狀態(tài)并在某些條件觸發(fā)時執(zhí)行負載均衡計劃等。為了避免主控服務(wù)器的單點失效問題,通常會為其配置備用服務(wù)器,以保證在主控服務(wù)器節(jié)點失效時接管其工作。4.1.2數(shù)據(jù)服務(wù)器數(shù)據(jù)服務(wù)器主要負責(zé)數(shù)據(jù)本地存儲、狀態(tài)維護、副本管理、服務(wù)調(diào)度。(1)數(shù)據(jù)本地存儲負責(zé)文件數(shù)據(jù)在本地的持久化存儲,最簡單的方式是將客戶每個文件作為一個本地文件存儲,但這種方式并不能很好的利用分布式文件系統(tǒng)的特性,很多文件系統(tǒng)使用固定大小的塊來存儲數(shù)據(jù),典型的塊大小為64M。對于小文件的存儲,可以將多個文件的數(shù)據(jù)存儲在一個塊中,并為塊內(nèi)的文件建立索引,這樣可以極大的提高存儲空間利用率。對于大文件的存儲,則可將文件存儲到多個塊上。4.1.2數(shù)據(jù)服務(wù)器(2)狀態(tài)維護數(shù)據(jù)服務(wù)器除了簡單的存儲數(shù)據(jù)外,還需要維護一些狀態(tài),首先它需要將自己的狀態(tài)以心跳包的方式周期性的報告給主控服務(wù)器,使得主控服務(wù)器知道自己是否正常工作,通常心跳包中還會包含數(shù)據(jù)服務(wù)器當(dāng)前的負載狀況(CPU、內(nèi)存、磁盤IO、磁盤存儲空間、網(wǎng)絡(luò)IO等、進程資源,視具體需求而定),這些信息可以幫助主控服務(wù)器更好的制定負載均衡策略。4.1.2數(shù)據(jù)服務(wù)器(3)副本管理為了保證數(shù)據(jù)的安全性,分布式文件系統(tǒng)中的文件會存儲多個副本到數(shù)據(jù)服務(wù)器上,寫多個副本的方式,主要分為3種。最簡單的方式是客戶端分別向多個數(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向某個數(shù)據(jù)服務(wù)器寫數(shù)據(jù),該數(shù)據(jù)服務(wù)器向副本鏈中下一個數(shù)據(jù)服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù),依次類推,如HDFS、GFS采取這種方式。4.1.2數(shù)據(jù)服務(wù)器(3)副本管理為了保證數(shù)據(jù)的安全性,分布式文件系統(tǒng)中的文件會存儲多個副本到數(shù)據(jù)服務(wù)器上,寫多個副本的方式,主要分為3種。最簡單的方式是客戶端分別向多個數(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向某個數(shù)據(jù)服務(wù)器寫數(shù)據(jù),該數(shù)據(jù)服務(wù)器向副本鏈中下一個數(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ù)器的負擔(dān),增加了客戶端的請求的響應(yīng)延遲。為了加速該過程,同時減小主控服務(wù)器的負擔(dān),可將元信息進行緩存,TFS可利用tair作為緩存(減小主控服務(wù)器負擔(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編程實踐4.2HDFS基本特征(1)大規(guī)模數(shù)據(jù)分布存儲能力(2)流數(shù)據(jù)讀寫(3)強大的容錯能力(4)簡單的文件模型HDFS采用“一次寫入、多次讀取”的簡單文件模型,支持大量數(shù)據(jù)的一次寫入,多次讀?。徊恢С忠褜懭霐?shù)據(jù)的更新操作,但允許在文件尾部添加新的數(shù)據(jù)。(5)數(shù)據(jù)塊存儲模式HDFS采用基于大粒度數(shù)據(jù)塊的方式存儲文件,默認的塊大小是64MB,這樣做的好處是可以減少元數(shù)據(jù)的數(shù)量,并且可以允許將這些數(shù)據(jù)塊通過隨機方式選擇節(jié)點,分布存儲在不同的地方。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編程實踐4.3HDFS存儲架構(gòu)及組件功能HDFS是一個建立在一組分布式服務(wù)器節(jié)點的本地文件系統(tǒng)之上的分布式文件系統(tǒng)。HDFS采用Master/Slave的架構(gòu)來存儲數(shù)據(jù),這種架構(gòu)主要由四個部分組成:分別為Client、NameNode、DataNode和SecondaryNameNode。NameNode是一個中心服務(wù)器,負責(zé)管理文件系統(tǒng)的名字空間(NameSpace)及客戶端對文件的訪問。一個DataNode節(jié)點運行一個DataNode進程,負責(zé)管理它所在節(jié)點上的數(shù)據(jù)存儲。NameNode和DataNode共同協(xié)調(diào)完成分布式的文件存儲服務(wù)。4.3.2數(shù)據(jù)塊在傳統(tǒng)的文件系統(tǒng)中,為了提高磁盤讀寫效率,一般以數(shù)據(jù)塊block為單位,而不是以字節(jié)為單位。HDFS同樣有block的概念,但是它是一個更大的單元——默認128M(hadoop2.x)。HDFS中的文件也分解成block大小的數(shù)據(jù)塊,獨立保存在各單元中。不像單一磁盤文件系統(tǒng),如果HDFS中的文件比block小,它不會占用block的整個存儲空間(例如,一個1M的文件存儲在128M的block中,它只使用1M的磁盤空間而不是128M)。4.3.3名稱節(jié)點名稱節(jié)點(NameNode)是一個中心服務(wù)器,負責(zé)管理整個文件系統(tǒng)的名字空間(Namespace)和元數(shù)據(jù),以及處理來自客戶端的文件訪問請求。NameNode保存了文件系統(tǒng)的三種元數(shù)據(jù):1)命名空間,即整個分布式文件系統(tǒng)的目錄結(jié)構(gòu);2)數(shù)據(jù)塊與文件名的映射表;3)每個數(shù)據(jù)塊副本的位置信息,每一個數(shù)據(jù)塊默認有3個副本。4.3.4數(shù)據(jù)節(jié)點DataNode節(jié)點用來實際存儲文件的數(shù)據(jù)塊,文件的每個數(shù)據(jù)塊默認的大小為128M(hadoop2.x)。為了防止數(shù)據(jù)丟失,一個數(shù)據(jù)塊Block會在多個DataNode中進行冗余備份,每個數(shù)據(jù)塊默認有3個副本。一個HDFS集群可能包含上千個DataNode節(jié)點,它們定時和NameNode進行通信,接受NameNode的指令;為了減輕NameNode的負擔(dān),NameNode上并不永久保存哪個DataNode上有哪些數(shù)據(jù)塊的信息,而是通過DataNode啟動時的上報來更新NameNode上的映射表。DataNode和NameNode建立連接后,就會不斷地和NameNode保持聯(lián)系進行信息反饋,反饋信息中也包含了NameNode對DataNode的一些命令,如刪除數(shù)據(jù)塊或者把數(shù)據(jù)塊復(fù)制到另一個DataNode。4.3.4數(shù)據(jù)節(jié)點DataNode也作為服務(wù)器接受來自客戶端的訪問,處理數(shù)據(jù)塊讀/寫請求。DataNode之間還會相互通信,執(zhí)行數(shù)據(jù)塊復(fù)制任務(wù),同時,在客戶端執(zhí)行寫操作的時候,DataNode之間需要相互配合,以保證寫操作的一致性。DataNode會通過心跳(Heartbeat)定時向NameNode發(fā)送所存儲的文件塊信息。4.3.5第二名稱節(jié)點Hadoop中使用SecondaryNameNode來備份NameNode的元數(shù)據(jù),以便在NameNode失效時能從SecondaryNameNode恢復(fù)出NameNode上的元數(shù)據(jù)。但NameNode中保存了整個文件系統(tǒng)的元數(shù)據(jù),而SecondaryNameNode只是周期性保存NameNode的元數(shù)據(jù),包括元數(shù)據(jù)鏡像文件(FsImage)數(shù)據(jù)和操作日志文件(EditLog)數(shù)據(jù)。FsImage相當(dāng)于HDFS的檢查點,NameNode啟動時會讀取FsImage的內(nèi)容到內(nèi)存,并將其與EditLog日志中的所有修改信息合并生成新的FsImage;在NameNode運行過程中,所有關(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編程實踐4.4HDFS的文件訪問過程在一個集群中采用單一的NameNode可大大簡化系統(tǒng)的架構(gòu),簡化操作流程。雖然NameNode記錄了HDFS的元數(shù)據(jù),但是,客戶端程序訪問文件時,實際的文件數(shù)據(jù)流并不會通過NameNode傳送,而是從NameNode獲得所需訪問數(shù)據(jù)塊的存儲位置信息后,直接去訪問對應(yīng)的DataNode獲取數(shù)據(jù)。這樣設(shè)計有兩個好處:一是可以允許一個文件的數(shù)據(jù)能同時在不同DataNode上并發(fā)訪問,提高訪問數(shù)據(jù)的速度;二是可以大大減少NameNode的負擔(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并行地進行數(shù)據(jù)傳輸操作,同時將操作結(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()遠程調(diào)用名稱節(jié)點,獲得文件的第一批數(shù)據(jù)塊的位置,同一數(shù)據(jù)塊按照副本數(shù)會返回多個位置,距離客戶端近的排在前面;然后,DistributedFileSystem會利用DFSInputStream來實例化FSDataInputStream,返回給客戶端,同時返回數(shù)據(jù)塊的數(shù)據(jù)節(jié)點地址。(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源源不斷的流向客戶端,如果第一個數(shù)據(jù)塊的數(shù)據(jù)讀完了,就會關(guān)閉指向第一個數(shù)據(jù)塊的DataNode連接。輸入流通過getBlockLocations方法查找下一個數(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編程實踐4.5HDFS操作常用Shell命令HDFS支持多種Shell命令方式,例如hadoopfs、hadoopdfs和hdfsdfs都是HDFS最常用的Shell命令,分別用來查看HDFS文件系統(tǒng)的目錄結(jié)構(gòu)、上傳和下載數(shù)據(jù)、創(chuàng)建文件等,這3個命令既有相同點又有區(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),打開一個終端,首先啟動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時,需要首先在HDFS中創(chuàng)建用戶目錄。命令如下:cd/usr/local/hadoop./bin/hdfsdfs-mkdir-p/user/hadoop該命令表示在HDFS中創(chuàng)建一個/user/hadoop目錄,-mkdir是創(chuàng)建目錄的操作,-p表示如果是多級目錄,則父目錄和子目錄一起創(chuàng)建,這里/user/hadoop就是一個多級目錄,因此必須使用參數(shù)-p,否則會出錯。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編程實踐4.6HDFS編程實踐Hadoop采用Java語言開發(fā),提供了JavaAPI與HDFS進行交互。上面介紹的Shell命令,在執(zhí)行時實際上會被系統(tǒng)轉(zhuǎn)換成JavaAPI調(diào)用。本書采用Eclipse工具編寫Java程序。4.6.1在Eclipse中創(chuàng)建項目Eclipse啟動以后,選擇File→New→JavaProject命令,開始創(chuàng)建一個Java工程,會彈出如圖3-4所示的界面。4.6HDFS編程實踐單擊界面底部的Next按鈕,進入下一步設(shè)置。4.6.2為項目添加需要用到的JAR包這些JAR包中包含了可以訪問HDFS的JavaAPI。這些JAR包都位于Linux系統(tǒng)的Hadoop安裝目錄下,對于本書而言,就是在/usr/local/hadoop/share/hadoop目錄下。單擊界面中的Libraries選項卡,然后單擊界面右側(cè)的AddExternalJARs按鈕,會彈出如圖3-6所示的界面。4.6HDFS編程實踐單擊界面底部的Next按鈕,進入下一步設(shè)置。4.6.2為項目添加需要用到的JAR包為了編寫一個能夠與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編程實踐4.6.3編寫Java應(yīng)用程序下面編寫一個Java應(yīng)用程序,用來檢測HDFS中是否存在一個文件。在Eclipse工作界面左側(cè)的PackageExplorer面板中找到剛才創(chuàng)建好的工程名稱HDFSExample(如圖3-9所示),然后在該工程名稱上右擊,在彈出的菜單中選擇New→Class命令。出現(xiàn)如圖3-10所示的界面。4.6HDFS編程實踐4.6.3編寫Java應(yīng)用程序下面編寫一個Java應(yīng)用程序,用來檢測HDFS中是否存在一個文件。在Eclipse工作界面左側(cè)的PackageExplorer面板中找到剛才創(chuàng)建好的工程名稱HDFSExample(如圖3-9所示),然后在該工程名稱上右擊,在彈出的菜單中選擇New→Class命令。出現(xiàn)如圖3-10所示的界面。在該界面中,只需要在Name后面輸入新建的Java類文件的名稱,這里采用名稱HDFSFileIfExist,其它都可以采用默認設(shè)置,然后單擊界面右下角的Finish按鈕,出現(xiàn)如圖3-11所示的界面。4.6HDFS編程實踐4.6.3編寫Java應(yīng)用程序下面編寫一個Java應(yīng)用程序,用來檢測HDFS中是否存在一個文件。在Eclipse工作界面左側(cè)的PackageExplorer面板中找到剛才創(chuàng)建好的工程名稱HDFSExample(如圖3-9所示),然后在該工程名稱上右擊,在彈出的菜單中選擇New→Class命令。出現(xiàn)如圖3-10所示的界面。在該界面中,只需要在Name后面輸入新建的Java類文件的名稱,這里采用名稱HDFSFileIfExist,其它都可以采用默認設(shè)置,然后單擊界面右下角的Finish按鈕,出現(xiàn)如圖3-11所示的界面。可以看出,Eclipse自動創(chuàng)建了一個名為HDFSFileIfExist.java的源代碼文件,請在該文件
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 面試試講五三試題及答案
- 母豬護理的未來趨勢試題及答案
- 規(guī)劃院面試試題及答案
- 激光技術(shù)的未來發(fā)展愿景試題及答案
- 實戰(zhàn)模擬的初級會計師試題及答案
- 食品上崗考試試題及答案
- 高考乙卷理綜試題及答案
- 精神營地考試題及答案
- 育嬰師考試心理準(zhǔn)備技巧試題及答案
- 藥品注冊申請流程試題及答案
- 船舶駕駛培訓(xùn)虛擬場景構(gòu)建-深度研究
- 樹木移植的施工方案
- 四川大學(xué)自主招生個人陳述語言風(fēng)格范文
- 5.2《稻》教案-【中職專用】高二語文同步教學(xué)(高教版2023·拓展模塊下冊)
- 人工智能在智能安防中的應(yīng)用
- ORP-數(shù)值對反滲透裝置的影響
- 小王子英文介紹課件
- 水上交通工程的施工方案
- 法律服務(wù)行業(yè)智能合同審查方案
- 2025南水北調(diào)東線山東干線限責(zé)任公司人才招聘30人高頻重點提升(共500題)附帶答案詳解
- 公共管理學(xué)筆記
評論
0/150
提交評論