




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Hadoop電子工業(yè)出版社 劉鵬主編云計(jì)算教材配套課件8主要內(nèi)容 Hadoop項(xiàng)目簡(jiǎn)介 HDFS體系結(jié)構(gòu) HDFS關(guān)鍵運(yùn)行機(jī)制 Hadoop VS.Google(分布式文件系統(tǒng)) Hadoop API Hadoop環(huán)境搭建Hadoop項(xiàng)目簡(jiǎn)介 Apache的解決方案GFS-HDFS MapReduce-HadoopBigTable-HBase Hadoop項(xiàng)目簡(jiǎn)介 HDFS為了做到可靠性(reliability)創(chuàng)建了多份數(shù)據(jù)塊(data blocks)的復(fù)制(replicas),并將它們放置在服務(wù)器群的計(jì)算節(jié)點(diǎn)中(compute nodes),MapReduce就可以在它們所在的節(jié)點(diǎn)上處理這
2、些數(shù)據(jù)了。HDFS體系結(jié)構(gòu) NameNodeMaster DataNodeChunkseverHDFS關(guān)鍵運(yùn)行機(jī)制-保障可靠性的措施 一個(gè)名字節(jié)點(diǎn)和多個(gè)數(shù)據(jù)節(jié)點(diǎn) 數(shù)據(jù)復(fù)制(冗余機(jī)制) -存放的位置(機(jī)架感知策略) 故障檢測(cè)-數(shù)據(jù)節(jié)點(diǎn) 心跳包(檢測(cè)是否宕機(jī)) 塊報(bào)告(安全模式下檢測(cè)) 數(shù)據(jù)完整性檢測(cè)(校驗(yàn)和比較)-名字節(jié)點(diǎn)(日志文件,鏡像文件) 空間回收機(jī)制 HDFS關(guān)鍵運(yùn)行機(jī)制-寫文件流程 客戶端緩存 流水線復(fù)制 并發(fā)寫控制 流程:1.客戶端把數(shù)據(jù)緩存到本地臨時(shí)文件夾2.臨時(shí)文件夾數(shù)據(jù)超過64M,客戶端聯(lián)系NameNode, NameNode分配DataNode,DataNode依照客戶端的位
3、置被排列成一個(gè)有著最近物理距離和最小的序列3.與序列的第一個(gè)數(shù)據(jù)服務(wù)器建立Socket連接,發(fā)送請(qǐng)求頭,然后等待回應(yīng),依次下傳,客戶端得到回包,流水線建立成功,4. 正式發(fā)送數(shù)據(jù),以4K為大小傳送HDFS關(guān)鍵運(yùn)行機(jī)制-讀文件流程 客戶端聯(lián)系NameNode,得到所有數(shù)據(jù)塊信息,以及數(shù)據(jù)塊對(duì)應(yīng)的所有數(shù)據(jù)服務(wù)器的位置信息 嘗試從某個(gè)數(shù)據(jù)塊對(duì)應(yīng)的一組數(shù)據(jù)服務(wù)器中選出一個(gè),進(jìn)行連接(選取算法未加入相對(duì)位置的考慮) 數(shù)據(jù)被一個(gè)包一個(gè)包發(fā)送回客戶端,等到整個(gè)數(shù)據(jù)塊的數(shù)據(jù)都被讀取完了,就會(huì)斷開此鏈接,嘗試連接下一個(gè)數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù)服務(wù)器,整個(gè)流程,依次如此反復(fù),直到所有想讀的都讀取完了為止Hadoop VS
4、. Google 技術(shù)架構(gòu)的比較 數(shù)據(jù)結(jié)構(gòu)化管理組件:HbaseBigTable 并行計(jì)算模型:MapReduceMapReduce 分布式文件系統(tǒng):HDFSGFS Hadoop缺少分布式鎖服務(wù)ChubbyHBaseMapReduceHDFSBigTableMapReduceGFSHadoop云計(jì)算應(yīng)用ChubbyGoogle云計(jì)算應(yīng)用Hadoop VS. Google HDFS與GFS比較 中心服務(wù)器模式的差異 GFS:多臺(tái)物理服務(wù)器,選擇一臺(tái)對(duì)外服務(wù),損壞時(shí)可選擇另外一臺(tái)提供服務(wù) HDFS:?jiǎn)我恢行姆?wù)器模式,存在單點(diǎn)故障 原因:Hadoop缺少分布式鎖服務(wù)Hadoop VS. Googl
5、e HDFS與GFS比較 子服務(wù)器管理模式差異 GFS:Chunk Server在Chubby中獲取獨(dú)占鎖表示其生存狀態(tài),Master通過輪詢這些獨(dú)占鎖獲知Chunk Server的生存狀態(tài) HDFS:DataNode通過心跳的方式告知NameNode其生存狀態(tài) GFS中,Master損壞時(shí),替補(bǔ)服務(wù)器可以快速獲知Chunk Server的狀態(tài) HDFS中,NameNode損壞后,NameNode恢復(fù)時(shí)需要花費(fèi)一段時(shí)間獲知DataNode的狀態(tài) 在添加數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)時(shí),GFS的伸縮性較HDFS要好 原因:Hadoop缺乏分布式鎖服務(wù)Hadoop VS. Google HDFS與GFS比較 HDF
6、S具備安全模式 獲知數(shù)據(jù)塊副本狀態(tài),若副本不足,則拷貝副本至安全數(shù)目(如3個(gè)) GFS不具備安全模式 副本損壞處理:API讀取副本失敗時(shí),Master負(fù)責(zé)發(fā)起拷貝任務(wù)Hadoop VS. Google HDFS與GFS比較 HDFS具備空間回收機(jī)制 文件刪除時(shí),僅刪除目錄結(jié)構(gòu) 實(shí)際數(shù)據(jù)的刪除在等待一段時(shí)間后實(shí)施 優(yōu)點(diǎn):便于恢復(fù)文件HDFS APIHadoop API被分成(divide into)如下幾種主要的包(package): org.apache.hadoop.conforg.apache.hadoop.conf 定義了系統(tǒng)參數(shù)的配置文件處理API。 org.apache.hadoop
7、.fsorg.apache.hadoop.fs 定義了抽象的文件系統(tǒng)API。 org.apache.hadoop.Hdfsorg.apache.hadoop.Hdfs HDFS,Hadoop的分布式文件系統(tǒng)實(shí)現(xiàn)。 org.apache.hadoop.ioorg.apache.hadoop.io 定義了通用的I/O API,用于針對(duì)網(wǎng)絡(luò),數(shù)據(jù)庫,文件等數(shù)據(jù)對(duì)象做讀寫操作。 org.apache.hadoop.ipcorg.apache.hadoop.ipc 用于網(wǎng)絡(luò)服務(wù)端和客戶端的工具,封裝了網(wǎng)絡(luò)異步I/O的基礎(chǔ)模塊。 org.apache.hadoop.mapreduceorg.apache.
8、hadoop.mapreduce Hadoop分布式計(jì)算系統(tǒng)(MapReduce)模塊的實(shí)現(xiàn),包括任務(wù)的分發(fā)調(diào)度等。 org.apache.hadoop.metricsorg.apache.hadoop.metrics 定義了用于性能統(tǒng)計(jì)信息的API,主要用于mapred和dfs模塊。 org.apache.hadoop.recordorg.apache.hadoop.record 定義了針對(duì)記錄的I/O API類以及一個(gè)記錄描述語言翻譯器,用于簡(jiǎn) 化將記錄序列化成語言中性的格式(language-neutral manner)。 org.apache.hadoop.toolsorg.apac
9、he.hadoop.tools 定義了一些命令行的工具。 org.apache.hadoop.utilorg.apache.hadoop.util 定義了一些公用的API。 org.apache.hadoop.Secruity org.apache.hadoop.Secruity 用戶和用戶組信息HDFS API-org.apache.hadoop.fs org.apache.hadoop.fs.FileSystem (implements java.io.Closeable) org.apache.hadoop.fs.FilterFileSystem org.apache.hadoop.fs
10、.ChecksumFileSystem org.apache.hadoop.fs.InMemoryFileSystem org.apache.hadoop.fs.LocalFileSystem org.apache.hadoop.fs.HarFileSystem org.apache.hadoop.fs.RawLocalFileSystem 抽象文件系統(tǒng)的基本要素和基本操作。最顯著的一個(gè)特點(diǎn)就是,F(xiàn)ileSystem文件系統(tǒng)是基于流式數(shù)據(jù)訪問的,并且,可以基于命令行的方式來對(duì)文件系統(tǒng)的文件進(jìn)行管理與操作。HDFS API-.apache.hado
11、op.ipc.VersionedProtocol 。tocol.ClientProtocol 。tocol.ClientDatanodeProtocol 。tocol.NamenodeProtocol 。tocol.DatanodeProtocol 。tocol.InterDatanodeProt
12、ocol HDFS API-org.apache.hadoop.HDFSClientProtocolClientProtocol協(xié)議:協(xié)議:客戶端進(jìn)程與Namenode進(jìn)程進(jìn)行通信DataNodeProtocolDataNodeProtocol協(xié)議:協(xié)議:一個(gè)DFS Datanode用戶與Namenode進(jìn)行通信的協(xié)議InterDatanodeProtocolInterDatanodeProtocol協(xié)議:協(xié)議:Datanode之間的通信ClientDatanodeProtocolClientDatanodeProtocol協(xié)議協(xié)議 :客戶端進(jìn)程與datenode進(jìn)程進(jìn)行通信NamenodeP
13、rotocolNamenodeProtocol協(xié)議協(xié)議 :次級(jí)Namenode(Secondary NameNode)與Namenode進(jìn)行通信所需進(jìn)行的操作clientNameNodeDataNodeclientProtocolDataNodeProtocolClientDatanodeProtocolNamenode主要實(shí)現(xiàn)了ClientProtocol,DatanodeProtocol,NamenodeProtocolHDFS API- ClientProtocol(文件基本操作接口)(文件基本操作接口)獲取到指定文件src的全部塊的信息返回LocatedBlocks,包括文件長(zhǎng)度、組成
14、文件的塊及其存儲(chǔ)位置(所在的Datanode數(shù)據(jù)結(jié)點(diǎn)) -public LocatedBlocks getBlockLocations(String src, long offset, long length) 在制定的文件系統(tǒng)命名空間中創(chuàng)建一個(gè)文件入口(entry) ,在命名空間中創(chuàng)建一個(gè)文件入口。該方法將創(chuàng)建一個(gè)由src路徑指定的空文件 -public void create(String src, FsPermission masked, String clientName, boolean overwrite, short replication, long blockSize) 對(duì)指
15、定文件執(zhí)行追加寫操作,返回信息,可以定位到追加寫入最后部分塊的信息 -public LocatedBlock append(String src, String clientName)設(shè)置副本因子,為一個(gè)指定的文件修改塊副本因子 -public boolean setReplication(String src, short replication)HDFS API- ClientProtocol(文件基本操作接口)(文件基本操作接口)為已經(jīng)存在的目錄或者文件,設(shè)置給定的操作權(quán)限 -public void setPermission(String src, FsPermission permi
16、ssion)設(shè)置文件或目錄屬主 -public void setOwner(String src, String username, String groupname) 客戶端放棄對(duì)指定塊的操作 -public void abandonBlock(Block b, String src, String holder)客戶端向一個(gè)當(dāng)前為寫操作打開的文件寫入數(shù)據(jù)塊 -public LocatedBlock addBlock(String src, String clientName)客戶端完成對(duì)指定文件的寫操作,并期望能夠?qū)懲?,在寫完以后關(guān)閉文件 -public boolean complete(
17、String src, String clientName)客戶端向Namenode報(bào)告corrupted塊的信息(塊在Datanode上的位置信息) -public void reportBadBlocks(LocatedBlock blocks) throws IOExceptionHDFS API- ClientProtocol(文件基本操作接口)(文件基本操作接口)在文件系統(tǒng)命令空間中重命名一個(gè)文件或目錄 -public boolean rename(String src, String dst)刪除文件或目錄src -public boolean delete(String src)
18、刪除文件或目錄src,根據(jù)recursive選項(xiàng)來執(zhí)行 -public boolean delete(String src, boolean recursive) throws IOException;創(chuàng)建目錄src,并賦予目錄src指定的nasked權(quán)限-public boolean mkdirs(String src, FsPermission masked) throws IOException;獲取指定目錄src中的文件列表-public FileStatus getListing(String src) throws IOException;HDFS API 文件讀取在客戶端DFSC
19、lient中,有一個(gè) DFSClient.DFSInputStream類。當(dāng)需要讀取一個(gè)文件的時(shí)候,會(huì)生成一個(gè)DFSInputStream的實(shí)例DFSInputStream的實(shí)例調(diào)用 ClientProtocol定義getBlockLocations接口,取得一個(gè) LocatedBlocks類的對(duì)象,這個(gè)對(duì)象包含一組LocatedBlock,那里面有所規(guī)定位置中包含的所有數(shù)據(jù)塊信息,以及數(shù)據(jù)塊對(duì)應(yīng)的所有數(shù)據(jù)服務(wù)器的位置信息讀取開始, DFSInputStream的Read方法如有讀取時(shí)發(fā)現(xiàn)錯(cuò)誤,客戶端向Namenode報(bào)告corrupted塊的信息public void reportBadBl
20、ocks(LocatedBlock blocks)HDFS API 文件存入DFSClient也有一個(gè) DFSClient.DFSOutputStream類,寫入開始,會(huì)創(chuàng)建此類的實(shí)例DFSOutputStream會(huì)從NameNode上拿一個(gè) LocatedBlock寫入開始,調(diào)用DFSOutputStream的Write方法HDFS API- ClientProtocol(系統(tǒng)管理相關(guān)接口)(系統(tǒng)管理相關(guān)接口)監(jiān)聽客戶端,Namenode監(jiān)聽到某個(gè)客戶端發(fā)送的心跳狀態(tài)public void renewLease(String clientName) 獲取文件系統(tǒng)的狀態(tài)統(tǒng)計(jì)數(shù)據(jù)-public
21、long getStats() 注:返回的數(shù)組:public int GET_STATS_CAPACITY_IDX = 0; public int GET_STATS_USED_IDX = 1; public int GET_STATS_REMAINING_IDX = 2; public int GET_STATS_UNDER_REPLICATED_IDX = 3; public int GET_STATS_CORRUPT_BLOCKS_IDX = 4; public int GET_STATS_MISSING_BLOCKS_IDX = 5;安全模式開關(guān)操作public boolean set
22、SafeMode(FSConstants.SafeModeAction action) HDFS API- ClientProtocol(系統(tǒng)管理相關(guān)接口)(系統(tǒng)管理相關(guān)接口)保存FsImage映像,同時(shí)將更新同步到EditLog中,要求具有超級(jí)權(quán)限,并且在安全模式下進(jìn)行。 -public void saveNamespace()持久化文件系統(tǒng)元數(shù)據(jù),將Namenode結(jié)點(diǎn)上的數(shù)據(jù)結(jié)構(gòu)寫入到指定的文件中,如果指定文件已經(jīng)存在,則追加到該文件中 -metaSave(String filename)HadoopHadoop集群搭建集群搭建一、實(shí)驗(yàn)環(huán)境一、實(shí)驗(yàn)環(huán)境1 1、三臺(tái)、三臺(tái)PCPC機(jī),機(jī),L
23、inuxLinux操作系統(tǒng)操作系統(tǒng) 各主機(jī)對(duì)應(yīng)的各主機(jī)對(duì)應(yīng)的ipip地址:地址: 1 ubuntu11 ubuntu1 2 ubuntu2 2 ubuntu2 3 ubuntu3 3 ubuntu32 2、HadoopHadoop安裝包安裝包(/core/releases.html/core/releases.html)3 3、安裝、安裝jdk 1.5jdk 1.5以上版本
24、以上版本1 1、在所有的機(jī)器上建立相同的用戶,例如:、在所有的機(jī)器上建立相同的用戶,例如:gridgrid。2 2、SSHSSH配置,實(shí)現(xiàn)在機(jī)器之間執(zhí)行指令的時(shí)候不需要配置,實(shí)現(xiàn)在機(jī)器之間執(zhí)行指令的時(shí)候不需要輸入密碼。輸入密碼。 在在ubuntu1ubuntu1(準(zhǔn)備設(shè)為(準(zhǔn)備設(shè)為namenodenamenode)上生成密鑰對(duì),執(zhí))上生成密鑰對(duì),執(zhí)行行$ssh-keygen -t rsa$ssh-keygen -t rsa,然后一路回車,就會(huì)按照默認(rèn)的選,然后一路回車,就會(huì)按照默認(rèn)的選項(xiàng)將生成的密鑰對(duì)保存在項(xiàng)將生成的密鑰對(duì)保存在.ssh/id_rsa.ssh/id_rsa文件中。執(zhí)行:文件中。
25、執(zhí)行: $cd /.ssh$cd /.ssh $cp id_rsa.pub authorized_keys $cp id_rsa.pub authorized_keys $scp authorized_keys ubuntu2:/home/grid/.ssh $scp authorized_keys ubuntu2:/home/grid/.ssh $scp authorized_keys ubuntu3:/home/grid/.ssh $scp authorized_keys ubuntu3:/home/grid/.ssh二、二、HadoopHadoop安裝安裝3 3、在、在ubuntu1ubuntu1上配置上配置HadoopHadoop。編輯編輯conf/hadoop-site.xmlconf/hadoop-site.xml解壓縮,執(zhí)行:解壓縮,執(zhí)行:$ tar $ tar zxvf ./hadoop-0.19.1.tar.gzzxvf ./hadoop-0.19.1.tar.gz編輯編輯conf/masterconf/master,修改為,修改為masterm
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 批發(fā)業(yè)務(wù)中的版權(quán)合作與版權(quán)輸出考核試卷
- 其他調(diào)味品發(fā)酵制品制造考核試卷
- 智能照明在博物館展品照明中的應(yīng)用考核試卷
- 企業(yè)知識(shí)管理與知識(shí)分享考核試卷
- 年金保險(xiǎn)投資渠道選擇考核試卷
- 有機(jī)肥料在育苗中的應(yīng)用考核試卷
- 冰球場(chǎng)冰面修整與保養(yǎng)考核試卷
- 智能無人機(jī)飛行控制系統(tǒng)考核試卷
- 小學(xué)生簡(jiǎn)單律動(dòng)課件圖片
- 廣州鋪位租賃合同范本
- 《自相矛盾》說課課件
- 企業(yè)內(nèi)部控制調(diào)查表
- 事故應(yīng)急池管理規(guī)定規(guī)定
- 機(jī)械基礎(chǔ)全冊(cè)教案
- 頸肩腰腿痛的注射治療課件整理-002
- 健身俱樂部經(jīng)營(yíng)和管理教學(xué)課件
- 《發(fā)展?jié)h語》-高級(jí)綜合Ⅰ-9高薪養(yǎng)廉與緣木求魚課件
- 微格教學(xué)講解-課件
- 電力公司備品備件管理制度
- 現(xiàn)金流量表編制案例
- 部編版二年級(jí)道德與法治下冊(cè)《學(xué)習(xí)有方法》教案及教學(xué)反思
評(píng)論
0/150
提交評(píng)論