weekend110 2解壓我即可第二天_第1頁
weekend110 2解壓我即可第二天_第2頁
weekend110 2解壓我即可第二天_第3頁
weekend110 2解壓我即可第二天_第4頁
weekend110 2解壓我即可第二天_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

北京傳智播客教育北京傳智播客教育Hadoop深入淺出北京傳智播客教育課程安排分布式文件系統(tǒng)與HDFSHDFS體系結(jié)構(gòu)與基本概念HDFS的shell操作java接口及常用apiHADOOP的RPC機(jī)制HDFS源碼分析遠(yuǎn)程debug北京傳智播客教育思考:自己設(shè)計(jì)一分布式文件系統(tǒng)?NameNodeDataNodeDataNodeDataNodeDataNodeClienta.log:200M北京傳智播客教育DistributedFileSystem數(shù)據(jù)量越來越多,在一個(gè)操作系統(tǒng)管轄的范圍存不下了,那么就分配到更多的操作系統(tǒng)管理的磁盤中,但是不方便管理和維護(hù),因此迫切需要一種系統(tǒng)來管理多臺機(jī)器上的文件,這就是分布式文件管理系統(tǒng)。是一種允許文件通過網(wǎng)絡(luò)在多臺主機(jī)上分享的文件系統(tǒng),可讓多機(jī)器上的多用戶分享文件和存儲空間。通透性。讓實(shí)際上是通過網(wǎng)絡(luò)來訪問文件的動(dòng)作,由程序與用戶看來,就像是訪問本地的磁盤一般。容錯(cuò)。即使系統(tǒng)中有某些節(jié)點(diǎn)脫機(jī),整體來說系統(tǒng)仍然可以持續(xù)運(yùn)作而不會有數(shù)據(jù)損失。分布式文件管理系統(tǒng)很多,hdfs只是其中一種。適用于一次寫入多次查詢的情況,不支持并發(fā)寫情況,小文件不合適。北京傳智播客教育HDFS的Shell調(diào)用文件系統(tǒng)(FS)Shell命令應(yīng)使用bin/hadoopfs的形式。所有的FSshell命令使用URI路徑作為參數(shù)。URI格式是scheme://authority/path。HDFS的scheme是hdfs,對本地文件系統(tǒng),scheme是file。其中scheme和authority參數(shù)都是可選的,如果未加指定,就會使用配置中指定的默認(rèn)scheme。例如:/parent/child可以表示成hdfs://namenode:namenodePort/parent/child,或者更簡單的/parent/child(假設(shè)配置文件是namenode:namenodePort)大多數(shù)FSShell命令的行為和對應(yīng)的UnixShell命令類似。北京傳智播客教育HDFSfs命令-help[cmd] //顯示命令的幫助信息-ls(r)<path> //顯示當(dāng)前目錄下所有文件-du(s)<path> //顯示目錄中所有文件大小-count[-q]<path> //顯示目錄中文件數(shù)量-mv<src><dst> //移動(dòng)多個(gè)文件到目標(biāo)目錄-cp<src><dst> //復(fù)制多個(gè)文件到目標(biāo)目錄-rm(r) //刪除文件(夾)-put<localsrc><dst> //本地文件復(fù)制到hdfs-copyFromLocal //同put-moveFromLocal //從本地文件移動(dòng)到hdfs-get[-ignoreCrc]<src><localdst> //復(fù)制文件到本地,可以忽略crc校驗(yàn)-getmerge<src><localdst> //將源目錄中的所有文件排序合并到一個(gè)文件中-cat<src> //在終端顯示文件內(nèi)容-text<src> //在終端顯示文件內(nèi)容-copyToLocal[-ignoreCrc]<src><localdst> //復(fù)制到本地-moveToLocal<src><localdst>-mkdir<path> //創(chuàng)建文件夾-touchz<path> //創(chuàng)建一個(gè)空文件北京傳智播客教育HDFS的Shell命令練習(xí)#hadoopfs-ls/查看HDFS根目錄#hadoopfs-mkdir/test在根目錄創(chuàng)建一個(gè)目錄test#hadoopfs-mkdir/test1在根目錄創(chuàng)建一個(gè)目錄test1#hadoopfs-put./test.txt/test或#hadoopfs-copyFromLocal./test.txt/test#hadoopfs-get/test/test.txt.或#hadoopfs-getToLocal/test/test.txt.#hadoopfs-cp/test/test.txt/test1#hadoopfs-rm/test1/test.txt#hadoopfs-mv/test/test.txt/test1#hadoopfs-rmr/test1北京傳智播客教育HDFS架構(gòu)NameNodeDataNodeSecondaryNameNode北京傳智播客教育元數(shù)據(jù)存儲細(xì)節(jié)NameNode(FileName,replicas,block-ids,id2host...)/test/a.log,3,{blk_1,blk_2},[{blk_1:[h0,h1,h3]},{blk_2:[h0,h2,h4]}]blk_1blk_2blk_2blk_1blk_1blk_1blk_2NameNodeMetadatadatanodesh0h4h1h2h3北京傳智播客教育NameNode是整個(gè)文件系統(tǒng)的管理節(jié)點(diǎn)。它維護(hù)著整個(gè)文件系統(tǒng)的文件目錄樹,文件/目錄的元信息和每個(gè)文件對應(yīng)的數(shù)據(jù)塊列表。接收用戶的操作請求。文件包括:fsimage:元數(shù)據(jù)鏡像文件。存儲某一時(shí)段NameNode內(nèi)存元數(shù)據(jù)信息。edits:操作日志文件。fstime:保存最近一次checkpoint的時(shí)間以上這些文件是保存在linux的文件系統(tǒng)中。hdfs-site.xml的.dir屬性北京傳智播客教育NameNode的工作特點(diǎn)Namenode始終在內(nèi)存中保存metedata,用于處理“讀請求”到有“寫請求”到來時(shí),namenode會首先寫editlog到磁盤,即向edits文件中寫日志,成功返回后,才會修改內(nèi)存,并且向客戶端返回Hadoop會維護(hù)一個(gè)fsimage文件,也就是namenode中metedata的鏡像,但是fsimage不會隨時(shí)與namenode內(nèi)存中的metedata保持一致,而是每隔一段時(shí)間通過合并edits文件來更新內(nèi)容。Secondarynamenode就是用來合并fsimage和edits文件來更新NameNode的metedata的。北京傳智播客教育SecondaryNameNodeHA的一個(gè)解決方案。但不支持熱備。配置即可。執(zhí)行過程:從NameNode上下載元數(shù)據(jù)信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并將其推送到NameNode,替換舊的fsimage.默認(rèn)在安裝在NameNode節(jié)點(diǎn)上,但這樣...不安全!北京傳智播客教育secondarynamenode的工作流程secondary通知namenode切換edits文件secondary從namenode獲得fsimage和edits(通過http)secondary將fsimage載入內(nèi)存,然后開始合并editssecondary將新的fsimage發(fā)回給namenodenamenode用新的fsimage替換舊的fsimage北京傳智播客教育什么時(shí)候checkpiontfs.checkpoint.period指定兩次checkpoint的最大時(shí)間間隔,默認(rèn)3600秒。fs.checkpoint.size

規(guī)定edits文件的最大值,一旦超過這個(gè)值則強(qiáng)制checkpoint,不管是否到達(dá)最大時(shí)間間隔。默認(rèn)大小是64M。NameNodeSecondaryNameNode北京傳智播客教育Datanode提供真實(shí)文件數(shù)據(jù)的存儲服務(wù)。文件塊(block):最基本的存儲單位。對于文件內(nèi)容而言,一個(gè)文件的長度大小是size,那么從文件的0偏移開始,按照固定的大小,順序?qū)ξ募M(jìn)行劃分并編號,劃分好的每一個(gè)塊稱一個(gè)Block。HDFS默認(rèn)Block大小是128MB,以一個(gè)256MB文件,共有256/128=2個(gè)Block.dfs.block.size不同于普通文件系統(tǒng)的是,HDFS中,如果一個(gè)文件小于一個(gè)數(shù)據(jù)塊的大小,并不占用整個(gè)數(shù)據(jù)塊存儲空間Replication。多復(fù)本。默認(rèn)是三個(gè)。hdfs-site.xml的dfs.replication屬性北京傳智播客教育Shell命令練習(xí):驗(yàn)證塊大小方法:上傳大于128MB的文件,觀察塊大小驗(yàn)證:使用觀察北京傳智播客教育RemoteProcedureCallRPC——遠(yuǎn)程過程調(diào)用協(xié)議,它是一種通過網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。RPC協(xié)議假定某些傳輸協(xié)議的存在,如TCP或UDP,為通信程序之間攜帶信息數(shù)據(jù)。在OSI網(wǎng)絡(luò)通信模型中,RPC跨越了傳輸層和應(yīng)用層。RPC使得開發(fā)包括網(wǎng)絡(luò)分布式多程序在內(nèi)的應(yīng)用程序更加容易。RPC采用客戶機(jī)/服務(wù)器模式。請求程序就是一個(gè)客戶機(jī),而服務(wù)提供程序就是一個(gè)服務(wù)器。首先,客戶機(jī)調(diào)用進(jìn)程發(fā)送一個(gè)有進(jìn)程參數(shù)的調(diào)用信息到服務(wù)進(jìn)程,然后等待應(yīng)答信息。在服務(wù)器端,進(jìn)程保持睡眠狀態(tài)直到調(diào)用信息的到達(dá)為止。當(dāng)一個(gè)調(diào)用信息到達(dá),服務(wù)器獲得進(jìn)程參數(shù),計(jì)算結(jié)果,發(fā)送答復(fù)信息,然后等待下一個(gè)調(diào)用信息,最后,客戶端調(diào)用進(jìn)程接收答復(fù)信息,獲得進(jìn)程結(jié)果,然后調(diào)用執(zhí)行繼續(xù)進(jìn)行。hadoop的整個(gè)體系結(jié)構(gòu)就是構(gòu)建在RPC之上的(見org.apache.hadoop.ipc)。北京傳智播客教育HDFS讀過程初始化FileSystem,然后客戶端(client)用FileSystem的open()函數(shù)打開文件FileSystem用RPC調(diào)用元數(shù)據(jù)節(jié)點(diǎn),得到文件的數(shù)據(jù)塊信息,對于每一個(gè)數(shù)據(jù)塊,元數(shù)據(jù)節(jié)點(diǎn)返回保存數(shù)據(jù)塊的數(shù)據(jù)節(jié)點(diǎn)的地址。FileSystem返回FSDataInputStream給客戶端,用來讀取數(shù)據(jù),客戶端調(diào)用stream的read()函數(shù)開始讀取數(shù)據(jù)。DFSInputStream連接保存此文件第一個(gè)數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點(diǎn),data從數(shù)據(jù)節(jié)點(diǎn)讀到客戶端(client)當(dāng)此數(shù)據(jù)塊讀取完畢時(shí),DFSInputStream關(guān)閉和此數(shù)據(jù)節(jié)點(diǎn)的連接,然后連接此文件下一個(gè)數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點(diǎn)。當(dāng)客戶端讀取完畢數(shù)據(jù)的時(shí)候,調(diào)用FSDataInputStream的close函數(shù)。在讀取數(shù)據(jù)的過程中,如果客戶端在與數(shù)據(jù)節(jié)點(diǎn)通信出現(xiàn)錯(cuò)誤,則嘗試連接包含此數(shù)據(jù)塊的下一個(gè)數(shù)據(jù)節(jié)點(diǎn)。失敗的數(shù)據(jù)節(jié)點(diǎn)將被記錄,以后不再連接。北京傳智播客教育HDFS寫過程初始化FileSystem,客戶端調(diào)用create()來創(chuàng)建文件FileSystem用RPC調(diào)用元數(shù)據(jù)節(jié)點(diǎn),在文件系統(tǒng)的命名空間中創(chuàng)建一個(gè)新的文件,元數(shù)據(jù)節(jié)點(diǎn)首先確定文件原來不存在,并且客戶端有創(chuàng)建文件的權(quán)限,然后創(chuàng)建新文件。FileSystem返回DFSOutputStream,客戶端用于寫數(shù)據(jù),客戶端開始寫入數(shù)據(jù)。DFSOutputStream將數(shù)據(jù)分成塊,寫入dataqueue。dataqueue由DataStreamer讀取,并通知元數(shù)據(jù)節(jié)點(diǎn)分配數(shù)據(jù)節(jié)點(diǎn),用來存儲數(shù)據(jù)塊(每塊默認(rèn)復(fù)制3塊)。分配的數(shù)據(jù)節(jié)點(diǎn)放在一個(gè)pipeline里。DataStreamer將數(shù)據(jù)塊寫入pipeline中的第一個(gè)數(shù)據(jù)節(jié)點(diǎn)。第一個(gè)數(shù)據(jù)節(jié)點(diǎn)將數(shù)據(jù)塊發(fā)送給第二個(gè)數(shù)據(jù)節(jié)點(diǎn)。第二個(gè)數(shù)據(jù)節(jié)點(diǎn)將數(shù)據(jù)發(fā)送給第三個(gè)數(shù)據(jù)節(jié)點(diǎn)。DFSOutputStream為發(fā)出去的數(shù)據(jù)塊保存了ackqueue,等待pipeline中的數(shù)據(jù)節(jié)點(diǎn)告知數(shù)據(jù)已經(jīng)寫入成功。當(dāng)客戶端結(jié)束寫入數(shù)據(jù),則調(diào)用stream的close函數(shù)。此操作將所有的數(shù)據(jù)塊寫入pipeline中的數(shù)據(jù)節(jié)點(diǎn),并等待ackqueue返回成功。最后通知元數(shù)據(jù)節(jié)點(diǎn)寫入完畢。如果數(shù)據(jù)節(jié)點(diǎn)在寫入的過程中失敗,關(guān)閉pipeline,將ackqueue中的數(shù)據(jù)塊放入dataqueue的開始,當(dāng)

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論