根據(jù)運(yùn)行的環(huán)境,操作系統(tǒng)可以分為桌面操作系統(tǒng),手機(jī)操作系統(tǒng),服務(wù)器操作系統(tǒng),嵌入式操作系統(tǒng)等。 ·1. HDFS是Hadoop分布式文件系統(tǒng)的組件: Hadoop分布式文件系統(tǒng),它存儲(chǔ)非常大的數(shù)據(jù)文件,并為整個(gè)Hadoop生態(tài)系統(tǒng)提供基本的存儲(chǔ)服務(wù). 首先,技術(shù)細(xì)節(jié) 1. 用于管理的節(jié)點(diǎn)稱為NameNode 2. 用于存儲(chǔ)的節(jié)點(diǎn)稱為DataNode 3. 元數(shù)據(jù): 用于存儲(chǔ)NameNode以查找DataNode信息 存儲(chǔ)的信息: a. 與文件相對(duì)應(yīng)的文件塊 b. 每個(gè)文件塊對(duì)應(yīng)的節(jié)點(diǎn)位置 c. 每個(gè)文件塊都對(duì)應(yīng)于其復(fù)制位置 d. 例如: /test/a.log,3,{b1,b2},[{b1: [h0,h1,h3]},{b2: [h0,h2,h4]}]],表示存儲(chǔ)的文件是存儲(chǔ)在/ test目錄中的.log,默認(rèn)副本數(shù)為3,剪切2塊 4. 將存儲(chǔ)的數(shù)據(jù)切成塊hdfs有哪些功能模塊,每個(gè)塊稱為一個(gè)塊,然后將每個(gè)塊存儲(chǔ)在某個(gè)DataNode上 5. 每個(gè)塊的默認(rèn)大小為128M(hadoop2.0); hadoop1.0的默認(rèn)大小為64M. 6.HDFS將備份文件塊,并且該備份稱為副本-復(fù)制 7. HDFS中的副本數(shù)默認(rèn)為三(文件塊在HDFS中具有三副本). 上傳文件后,HDFS將自動(dòng)備份該文件,分為兩份,總共三份. 8. 如果DataNode出現(xiàn)故障,NameNode會(huì)自動(dòng)復(fù)制此DataNode中存儲(chǔ)的副本并將其放置在其他節(jié)點(diǎn)上,以確保整個(gè)集群中的副本數(shù)量 9. NameNode中的元數(shù)據(jù)將保留在內(nèi)存中,以便快速讀取和寫(xiě)入. 每個(gè)元數(shù)據(jù)的大小約為150個(gè)字節(jié). 10. HDFS不適合存儲(chǔ)大量的小文件,因?yàn)榇罅康男∥募䦟⑸纱罅康脑獢?shù)據(jù),這將導(dǎo)致NameNode的大量?jī)?nèi)存被占用,從而減少讀寫(xiě)NameNode的效率. 11. 啟動(dòng)HDFS: start-dfs.sh ·我們使用圖片來(lái)組織每個(gè)模塊之間的關(guān)系(在后續(xù)文章中將進(jìn)行具體操作) 如果整個(gè)HDFS被視為存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù),則Namenode等效于該倉(cāng)庫(kù)的管理員. 進(jìn)入,退出和修改必須通過(guò)Namenode; 元數(shù)據(jù)等效于分類(lèi)帳. 當(dāng)用戶執(zhí)行查詢,修改等操作時(shí),首先找到Namenode的管理員,管理員將移交元數(shù)據(jù)的分類(lèi)帳. 分類(lèi)帳記錄文件的哪些部分被分成幾部分,這些部分放在哪個(gè)架子上以及該信息的替代位置. Datanode可以大致視為該倉(cāng)庫(kù)的特定存儲(chǔ)信息的架子 第二,阻止 1. 它本身代表一個(gè)數(shù)據(jù)塊 2. 塊是HDFS中數(shù)據(jù)存儲(chǔ)的基本單位 3. 默認(rèn)每個(gè)區(qū)塊為128M 4. 切割目的: a. 能夠存儲(chǔ)超大文件(將超大文件分割并分配到不同的DataNode上,以減輕服務(wù)器的壓力) b. 為了能夠進(jìn)行快速備份(分割后,每個(gè)小塊可以同時(shí)存儲(chǔ). 就像一噸貨物一樣,分離3個(gè)小車(chē)的效率將比僅使用1個(gè)小車(chē)的效率高)購(gòu)物車(chē)) 三,NameNode 1. NameNode負(fù)責(zé)管理DataNode和維護(hù)元數(shù)據(jù). ·2. 在Hadoop 1.0中,只有一個(gè)NameNode,并且存在單點(diǎn)問(wèn)題(如果一個(gè)NameNode出現(xiàn)故障,則整個(gè)HDFS都會(huì)癱瘓) 在2.0中,在完全分布式中,最多可以設(shè)置2個(gè)NameNode(超過(guò)2個(gè)NameNode會(huì)導(dǎo)致選舉和其他問(wèn)題hdfs有哪些功能模塊,這將降低HDFS的效率. 兩個(gè)正在工作,一個(gè)處于備用狀態(tài),避免了單點(diǎn)問(wèn)題) ·3. 元數(shù)據(jù)存儲(chǔ)在內(nèi)存和磁盤(pán)中 · ·4. 將元數(shù)據(jù)存儲(chǔ)在內(nèi)存中的目的是為了快速讀寫(xiě). ·5. 元數(shù)據(jù)存儲(chǔ)在磁盤(pán)中以進(jìn)行崩潰恢復(fù) ·6. 元數(shù)據(jù)的存儲(chǔ)位置由hadoop.tmp.dir屬性確定. 如果未配置,則默認(rèn)值為/ tmp,因此必須配置此屬性(因?yàn)閠mp目錄是一個(gè)臨時(shí)目錄,并且Linux中沒(méi)有足夠的內(nèi)存,所以刪除時(shí),請(qǐng)首先考慮tmp目錄中的文件) ·7. 元數(shù)據(jù)存儲(chǔ)在dfs / name /當(dāng)前目錄中 ·8. 記錄元數(shù)據(jù)的文件: ·a. 編輯: 用于記錄操作的文件 ·b. fsimage: 記錄元數(shù)據(jù)的文件. 此文件中的元數(shù)據(jù)不是實(shí)時(shí)的. ·10. 內(nèi)存中的元數(shù)據(jù)是實(shí)時(shí)的 ·11. 當(dāng)每個(gè)寫(xiě)操作訪問(wèn)NameNode時(shí). 此操作首先記錄在eidts文件中. 如果編輯文件已成功寫(xiě)入(在磁盤(pán)中),則操作將更新到內(nèi)存. 內(nèi)存更新成功后,成功消息將發(fā)送回客戶端(先寫(xiě)入磁盤(pán),然后再寫(xiě)入內(nèi)存以確保數(shù)據(jù)一致性) 12. fsimage中的元數(shù)據(jù)+內(nèi)存中edits = metadata中的操作將編輯中的操作更新為fsimage. 此時(shí),fsimage中的數(shù)據(jù)與內(nèi)存中的數(shù)據(jù)一致. ·13. 如果NameNode重新啟動(dòng),則元數(shù)據(jù)將從磁盤(pán)中恢復(fù) ·14. HDFS重新啟動(dòng)時(shí),HDFS將自動(dòng)將編輯操作更新為fsimage文件,以確保內(nèi)存中有最新的元數(shù)據(jù).
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!