hdfs體系結(jié)構(gòu)-cdh5.7.1之hdfs各角色含義

(一)分布式文件系統(tǒng)概述

數(shù)據(jù)量越來越多鹰祸,在一個(gè)操作系統(tǒng)管轄的范圍存不下了甫窟,那么就分配到更多的操作系統(tǒng)管理的磁盤中,但是不方便管理和維護(hù)蛙婴,因此迫切需要一種系統(tǒng)來管理多臺(tái)機(jī)器上的文件粗井,這就是分布式文件管理系統(tǒng) 。是一種允許文件通過網(wǎng)絡(luò)在多臺(tái)主機(jī)上分享的文件系統(tǒng)街图,可讓多機(jī)器上的多用戶分享文件和存儲(chǔ)空間浇衬。通透性。讓實(shí)際上是通過網(wǎng)絡(luò)來訪問文件的動(dòng)作餐济,由程序與用戶看來耘擂,就像是訪問本地的磁盤一般。 容錯(cuò)絮姆。即使系統(tǒng)中有某些節(jié)點(diǎn)脫機(jī)醉冤,整體來說系統(tǒng)仍然可以持續(xù)運(yùn)作而不會(huì)有數(shù)據(jù)損失。分布式文件管理系統(tǒng)很多篙悯,hdfs只是其中一種蚁阳,不合適小文件。

HttpFS訪問方式

1:httpfs是一個(gè)hadoop hdfs的一個(gè)http接口鸽照,通過WebHDFS REST API 可以對(duì)hdfs進(jìn)行讀寫等訪問

2:與WebHDFS的區(qū)別是不需要客戶端可以訪問hadoop集群的每一個(gè)節(jié)點(diǎn)韵吨,通過httpfs可以訪問放置在防火墻后面的hadoop集群

3:httpfs是一個(gè)Web應(yīng)用,部署在內(nèi)嵌的tomcat中

NFS:

The NFS Gateway supports NFSv3 and allows HDFS to be mounted as part of the client’s local file system. Currently NFS Gateway supports and enables the following usage patterns: Users can browse the HDFS file system through their local file system? on NFSv3 client compatible operating systems.? Users can download files from the the HDFS file system on to their? local file system.? Users can upload files from their local file system directly to the? HDFS file system.? Users can stream data directly to HDFS through the mount point. File? append is supported but random write is not supported.? The NFS gateway? machine needs the same thing to run an HDFS client like Hadoop JAR files, HADOOP_CONF directory. The NFS gateway can be on the same host as DataNode, NameNode, or any HDFS client.

HDFSNFSGateway能夠把HDFS掛載到客戶機(jī)上作為本地文件系統(tǒng)來管理,支持NFSv3移宅。當(dāng)前版本的NFSGateway有如下可用特性。用戶在支持NFSv3的操作系統(tǒng)上可以通過本地文件系統(tǒng)瀏覽HDFS椿疗。使用NFSGateway用戶能夠直接下載和上傳HDFS文件到本地文件系統(tǒng)中漏峰。用戶可以通過掛載點(diǎn)直接傳輸數(shù)據(jù)流至HDFS,但只能增量添加不能隨機(jī)寫數(shù)據(jù)届榄。

NameNode之間共享數(shù)據(jù)(NFS 浅乔、QuorumJournalNode(用得多)):

兩個(gè)NameNode為了數(shù)據(jù)同步,會(huì)通過一組稱作JournalNodes的獨(dú)立進(jìn)程進(jìn)行相互通信。當(dāng)active狀態(tài)的NameNode的命名空間有任何修改時(shí)靖苇,會(huì)告知大部分的JournalNodes進(jìn)程席噩。standby狀態(tài)的NameNode有能力讀取JNs中的變更信息,并且一直監(jiān)控editlog的變化贤壁,把變化應(yīng)用于自己的命名空間悼枢。standby可以確保在集群出錯(cuò)時(shí),命名空間狀態(tài)已經(jīng)完全同步了脾拆。

hadoop2.2.0(HA)中HDFS的高可靠指的是可以同時(shí)啟動(dòng)2個(gè)NameNode馒索。其中一個(gè)處于工作狀態(tài),另一個(gè)處于隨時(shí)待命狀態(tài)名船。這樣绰上,當(dāng)一個(gè)NameNode所在的服務(wù)器宕機(jī)時(shí),可以在數(shù)據(jù)不丟失的情況下渠驼,手工或者自動(dòng)切換到另一個(gè)NameNode提供服務(wù)蜈块。這些NameNode之間通過共享數(shù)據(jù),保證數(shù)據(jù)的狀態(tài)一致迷扇。多個(gè)NameNode之間共享數(shù)據(jù)百揭,可以通過Nnetwork File System或者QuorumJournalNode。前者是通過linux共享的文件系統(tǒng)谋梭,屬于操作系統(tǒng)的配置信峻;后者是hadoop自身的東西,屬于軟件的配置瓮床。使用QuorumJournalNode的配置方式盹舞,方式是手工切換。

集群?jiǎn)?dòng)時(shí)隘庄,可以同時(shí)啟動(dòng)2個(gè)NameNode踢步。這些NameNode只有一個(gè)是active的,另一個(gè)屬于standby狀態(tài)丑掺。active狀態(tài)意味著提供服務(wù)获印,standby狀態(tài)意味著處于休眠狀態(tài),只進(jìn)行數(shù)據(jù)同步街州,時(shí)刻準(zhǔn)備著提供服務(wù)兼丰,如圖2所示。

在一個(gè)典型的HA集群中唆缴,每個(gè)NameNode是一臺(tái)獨(dú)立的服務(wù)器鳍征。在任一時(shí)刻,只有一個(gè)NameNode處于active狀態(tài)面徽,另一個(gè)處于standby狀態(tài)艳丛。其中匣掸,active狀態(tài)的NameNode負(fù)責(zé)所有的客戶端操作,standby狀態(tài)的NameNode處于從屬地位氮双,維護(hù)著數(shù)據(jù)狀態(tài)碰酝,隨時(shí)準(zhǔn)備切換。

兩個(gè)NameNode為了數(shù)據(jù)同步戴差,會(huì)通過一組稱作JournalNodes的獨(dú)立進(jìn)程進(jìn)行相互通信送爸。當(dāng)active狀態(tài)的NameNode的命名空間有任何修改時(shí),會(huì)告知大部分的JournalNodes進(jìn)程造挽。standby狀態(tài)的NameNode有能力讀取JNs中的變更信息碱璃,并且一直監(jiān)控edit

log的變化,把變化應(yīng)用于自己的命名空間饭入。standby可以確保在集群出錯(cuò)時(shí)嵌器,命名空間狀態(tài)已經(jīng)完全同步了,如圖3所示谐丢。

為了確彼剑快速切換,standby狀態(tài)的NameNode有必要知道集群中所有數(shù)據(jù)塊的位置乾忱。為了做到這點(diǎn)讥珍,所有的datanodes必須配置兩個(gè)NameNode的地址,發(fā)送數(shù)據(jù)塊位置信息和心跳給他們兩個(gè)窄瘟。

對(duì)于HA集群而言衷佃,確保同一時(shí)刻只有一個(gè)NameNode處于active狀態(tài)是至關(guān)重要的。否則蹄葱,兩個(gè)NameNode的數(shù)據(jù)狀態(tài)就會(huì)產(chǎn)生分歧氏义,可能丟失數(shù)據(jù),或者產(chǎn)生錯(cuò)誤的結(jié)果图云。為了保證這點(diǎn)惯悠,JNs必須確保同一時(shí)刻只有一個(gè)NameNode可以向自己寫數(shù)據(jù)。

為了部署HA集群竣况,應(yīng)該準(zhǔn)備以下事情:

* NameNode服務(wù)器:運(yùn)行NameNode的服務(wù)器應(yīng)該有相同的硬件配置克婶。

*JournalNode服務(wù)器:運(yùn)行的JournalNode進(jìn)程非常輕量,可以部署在其他的服務(wù)器上丹泉。注意:必須允許至少3個(gè)節(jié)點(diǎn)情萤。當(dāng)然可以運(yùn)行更多,但是必須是奇數(shù)個(gè)摹恨,如3筋岛、5、7睬塌、9個(gè)等等。當(dāng)運(yùn)行N個(gè)節(jié)點(diǎn)時(shí),系統(tǒng)可以容忍至少(N-1)/2(N至少為3)個(gè)節(jié)點(diǎn)失敗而不影響正常運(yùn)行揩晴。

在典型的HA架構(gòu)中勋陪,有兩個(gè)獨(dú)立的機(jī)器作為Namenode,任何時(shí)刻硫兰,只有一個(gè)Namenode處于Active狀態(tài)诅愚,另一個(gè)處于standby狀態(tài)(passive,備份);Active

Namenode用于接收Client端請(qǐng)求劫映,Standy節(jié)點(diǎn)作為slave保持集群的狀態(tài)數(shù)據(jù)以備快速failover违孝。

為了讓StandbyNode與ActiveNode保持同步,這兩個(gè)Node都與一組稱為JNS的互相獨(dú)立的進(jìn)程保持通信(JournalNodes)泳赋。當(dāng)ActiveNode上更新了namespace雌桑,它將記錄修改日志發(fā)送給JNS的多數(shù)派。Standby noes將會(huì)從JNS中讀取這些edits祖今,并持續(xù)關(guān)注它們對(duì)日志的變更校坑。StandbyNode將日志變更應(yīng)用在自己的namespace中,當(dāng)failover發(fā)生時(shí)千诬,Standby將會(huì)在提升自己為Active之前耍目,確保能夠從JNS中讀取所有的edits;即在failover發(fā)生之前徐绑,Standy持有的namespace應(yīng)該與Active保持完全同步邪驮。

為了支持快速failover,Standbynode持有集群中blocks的最新位置是非常必要的傲茄。為了達(dá)到這一目的毅访,Datanodes上需要同時(shí)配置這兩個(gè)Namenode的地址,同時(shí)和它們都建立心跳鏈接烫幕,并把block位置發(fā)送給它們俺抽。

任何時(shí)刻,只有一個(gè)Active Namenode是非常重要的较曼,否則將會(huì)導(dǎo)致集群操作的混亂磷斧,那么兩個(gè)Namenode將會(huì)分別有兩種不同的數(shù)據(jù)狀態(tài),可能會(huì)導(dǎo)致數(shù)據(jù)丟失捷犹,或者狀態(tài)異常弛饭,這種情況通常稱為“split-brain”(腦裂,三節(jié)點(diǎn)通訊阻斷萍歉,即集群中不同的Datanodes卻看到了兩個(gè)Active Namenodes)侣颂。對(duì)于JNS(JournalNodes)而言,任何時(shí)候只允許一個(gè)Namenode作為writer枪孩;在failover期間憔晒,原來的StandbyNode將會(huì)接管Active的所有職能藻肄,并負(fù)責(zé)向JNS寫入日志記錄,這就阻止了其他Namenode基于處于Active狀態(tài)的問題拒担。

自動(dòng)Failover

上述介紹了如何配置手動(dòng)failover嘹屯,在這種模式下瞬哼,系統(tǒng)不會(huì)自動(dòng)觸發(fā)failover级乍,即不會(huì)將Standby提升為Active浮庐,即使Active已經(jīng)失效洛二。接下來介紹如何實(shí)現(xiàn)自動(dòng)failover攀操。

一)组题、組件

Automatic Failover中姥宝,增加了2個(gè)新的組件:zookeeper集群善涨,ZKFailoverController進(jìn)程(簡(jiǎn)稱為ZKFC)掏婶。

Zookeeper是一個(gè)高可用的調(diào)度服務(wù)啃奴,可以保存一系列調(diào)度數(shù)據(jù),當(dāng)這些數(shù)據(jù)變更(notify)時(shí)可以通知Client气堕,以及監(jiān)控(montitor)Clients失效纺腊,自動(dòng)failover的實(shí)現(xiàn)將依賴于Zookeeper的幾個(gè)特性:

1、Failure delection:失效檢測(cè)茎芭,每個(gè)Namenode將會(huì)和zookeeper建立一個(gè)持久session揖膜,如果Namenode失效,那么次session將會(huì)過期失效梅桩,此后Zookeeper將會(huì)通知另一個(gè)Namenode壹粟,然后觸發(fā)Failover。

2宿百、Active Namenode election:zookeeper提供了簡(jiǎn)單的機(jī)制來實(shí)現(xiàn)AcitveNode選舉趁仙,如果當(dāng)前Active失效,Standby將會(huì)獲取一個(gè)特定的排他鎖(lock)垦页,那么獲取(持有)鎖的Node接下來將會(huì)成為Active雀费。

ZKFailoverControllor(ZKFC)是一個(gè)zookeeper客戶端,它主要用來監(jiān)測(cè)和管理Namenodes的狀態(tài)痊焊,每個(gè)Namenode機(jī)器上都會(huì)運(yùn)行一個(gè)ZKFC程序盏袄,它的職責(zé)為:1、Health monitoring:ZKFC間歇性的使用health-check指令ping本地的Namenode薄啥,Namenode也會(huì)及時(shí)的反饋?zhàn)约旱膆ealth status辕羽。如果Namenode失效,或者unhealthy垄惧,或者無響應(yīng)刁愿,那么ZKFS將會(huì)標(biāo)記其為“unhealthy”。

2到逊、Zookeeper session manangement:當(dāng)本地Nanenode運(yùn)行良好時(shí)铣口,ZKFC將會(huì)持有一個(gè)zookeeper session滤钱,如果本地Namenode為Active,它同時(shí)也持有一個(gè)“排他鎖”(znode)脑题;這個(gè)lock在zookeeper中為“ephemeral” znode(臨時(shí)節(jié)點(diǎn))菩暗,如果session過期,那么次lock所對(duì)應(yīng)的znode也將被刪除旭蠕。

3、Zookeeper-based election:如果本地Namenode運(yùn)行良好旷坦,并且ZKFS沒有發(fā)現(xiàn)其他的的Namenode持有l(wèi)ock(比如Active失效后掏熬,釋放了lock),它將嘗試獲取鎖秒梅,如果獲取成功旗芬,即“贏得了選舉”,那么此后將會(huì)把本地Namenode標(biāo)記為Active捆蜀,然后觸發(fā)Failover:首先疮丛,調(diào)用fencing method,然后提升本地Namenode 為Active辆它。

在Automatic Failover中誊薄,需要把一個(gè)重要的配置項(xiàng)添加到hdfs-site.xml中。dfs.ha.automatic-failover.enabled設(shè)置為true锰茉,

1呢蔫、ZKFC和Namenodes守護(hù)進(jìn)程的啟動(dòng)順序是否重要?

No飒筑,對(duì)于指定的Namenode片吊,你可以在其之前或者之后啟動(dòng)ZKFC均可以,ZKFC只是調(diào)度Namenode的存活狀態(tài)协屡,如果不啟動(dòng)ZKFC俏脊,此Namenode將無法參與自動(dòng)failover過程。

2肤晓、是否需要額外的monitoring爷贫?

你需要在Namenode機(jī)器上,添加額外的monitor用來監(jiān)控ZKFC是否運(yùn)行材原。在某些情況下沸久,zookeeper集群的故障可能導(dǎo)致ZKFC意外中斷,你需要適時(shí)的重啟ZKFC余蟹。此外卷胯,還需要監(jiān)控Zookeeper集群的運(yùn)行狀況,如果Zookeeper集群失效威酒,那么HA集群將無法failover窑睁。

3挺峡、如果Zookeeper失效,將會(huì)怎么樣担钮?

如果zookeeper集群故障橱赠,那么Automatic Failover將不會(huì)觸發(fā),即使Namenode失效箫津,這也意味著ZKFC無法正常運(yùn)行狭姨。不過,如果Namenodes正常(即使有一個(gè)失效)苏遥,那么HDFS系統(tǒng)將不會(huì)受到影響饼拍。因?yàn)?b>HDFSClient并沒有基于zookeeper做任何事情,當(dāng)zookeeper集群仍需要盡快的恢復(fù)以避免當(dāng)前Active失效而造成的“split-brain”等問題田炭。

4师抄、是否可以在Namenodes之間指定優(yōu)先級(jí)?

NO教硫,這是不能支持的叨吮。首先啟動(dòng)的Namenode將作為Active,我們只能認(rèn)為控制Namenode啟動(dòng)的順序來做到“優(yōu)先級(jí)”瞬矩。

5茶鉴、在Automatic Failover中,手動(dòng)Failover怎么做景用?

和普通的Failover一樣蛤铜,我們總是可以通過"hdfshaadmin -DFSHAAdmin -failover"來實(shí)現(xiàn)手動(dòng)Failover。

在Automatic Failover中丛肢,需要把一個(gè)重要的配置項(xiàng)添加到hdfs-site.xml中围肥。

zkfailover:

1.基本原理

zk的基本特性:(1) 可靠存儲(chǔ)小量數(shù)據(jù)且提供強(qiáng)一致性 (2) ephemeral node, 在創(chuàng)建它的客戶端關(guān)閉后,可以自動(dòng)刪除 (3) 對(duì)于node狀態(tài)的變化蜂怎,可以提供異步的通知(watcher)

zk在zkfc中可以提供的功能:(1) Failure detector: 及時(shí)發(fā)現(xiàn)出故障的NN穆刻,并通知zkfc (2) Active node locator: 幫助客戶端定位哪個(gè)是Active的NN (3) Mutual exclusion of active state: 保證某一時(shí)刻只有一個(gè)Active的NN

2. 模塊

(1) ZKFailoverController(DFSZKFailoverController): 驅(qū)動(dòng)整個(gè)ZKFC的運(yùn)轉(zhuǎn),通過向HealthMonitor和ActiveStandbyElector注冊(cè)回調(diào)函數(shù)的方式杠步,subscribe HealthMonitor和ActiveStandbyElector的事件氢伟,并做相應(yīng)的處理

(2) HealthMonitor: 定期check NN的健康狀況,在NN健康狀況發(fā)生變化時(shí)幽歼,通過回調(diào)函數(shù)把變化通知給ZKFailoverController

(3) ActiveStandbyElector: 管理NN在zookeeper上的狀態(tài)朵锣,zookeeper上對(duì)應(yīng)node的結(jié)點(diǎn)發(fā)生變化時(shí),通過回調(diào)函數(shù)把變化通知給ZKFailoverController

(4) FailoverController: 提供做gracefulfailover的相關(guān)功能(dfs admin可以通過命令行工具手工發(fā)起failover)

3. 系統(tǒng)架構(gòu)

如上圖所示甸私,通常情況下Namenode和ZKFC同布署在同一臺(tái)物理機(jī)器上,HealthMonitor, FailoverController,ActiveStandbyElector在同一個(gè)JVM進(jìn)程中(即ZKFC),Namenode是一個(gè)單獨(dú)的JVM進(jìn)程诚些。如上圖所示,ZKFC在整個(gè)系統(tǒng)中有幾個(gè)重要的作用:

(1) Monitor and try to take active lock: 向zookeeper搶鎖,搶鎖成功的zkfc诬烹,指導(dǎo)對(duì)應(yīng)的NN成為active的NN; watch鎖對(duì)應(yīng)的znode砸烦,當(dāng)前active NN的狀態(tài)發(fā)生變化導(dǎo)致失鎖時(shí),及時(shí)搶鎖绞吁,努力成為active NN

(2) Monitor NN liveness and health: 定期檢查對(duì)應(yīng)NN的狀態(tài), 當(dāng)NN狀態(tài)發(fā)生變化時(shí)幢痘,及時(shí)通過ZKFC做相應(yīng)的處理

(3) Fences other NN when needed: 當(dāng)前NN要成為active NN時(shí),需要fence其它的NN家破,不能同時(shí)有多個(gè)active NN

4. 線程模型

ZKFC的線程模型總體上來講比較簡(jiǎn)單的颜说,它主要包括三類線程,一是主線程汰聋;一是HealthMonitor線程; 一是zookeeper客戶端的線程脑沿。它們的主要工作方式是:

(1) 主線程在啟動(dòng)所有的服務(wù)后就開始循環(huán)等待

(2) HealthMonitor是一個(gè)單獨(dú)的線程,它定期向NN發(fā)包马僻,檢查NN的健康狀況

(3) 當(dāng)NN的狀態(tài)發(fā)生變化時(shí),HealthMonitor線程會(huì)回調(diào)ZKFailoverController注冊(cè)進(jìn)來的回調(diào)函數(shù)注服,通知ZKFailoverController NN的狀態(tài)發(fā)生了變化

(4) ZKFailoverController收到通知后韭邓,會(huì)調(diào)用ActiveStandbyElector的API,來管理在zookeeper上的結(jié)點(diǎn)的狀態(tài)

(5) ActiveStandbyElector會(huì)調(diào)用zookeeper客戶端API監(jiān)控zookeeper上結(jié)點(diǎn)的狀態(tài)溶弟,發(fā)生變化時(shí)女淑,回調(diào)ZKFailoverController的回調(diào)函數(shù),通知ZKFailoverController辜御,做出相應(yīng)的變化

5. 類關(guān)系圖

ZKFC的主類是org.apache.hadoop.hdfs.tools.DFSZKFailoverController鸭你。

formatZK 創(chuàng)建特定目錄,作為后續(xù)寫節(jié)點(diǎn)狀態(tài)的父路徑擒权。如果該目錄已經(jīng)存在袱巨,清理原有目錄為空目錄。

HealthMonitor 在一個(gè)獨(dú)立線程中碳抄,通過RPC方式愉老,周期性的調(diào)用HAServiceProtocol接口的monitorHealth方法,獲取NN的狀態(tài)剖效。并把狀態(tài)報(bào)告給ActiveStandbyElector嫉入。

ActiveStandbyElector ActiveStandbyElector負(fù)責(zé)判斷哪個(gè)NN可以成為Active。它通過ZK璧尸,看哪個(gè)能夠成功的創(chuàng)建一個(gè)特定的ephemeral?lock?file?(znode)咒林,哪個(gè)就是Active,其它的成為Standby爷光。在一個(gè)節(jié)點(diǎn)被通知變成Active后垫竞,它必須確保自己能夠提供一致性的服務(wù)(數(shù)據(jù)一致性),否則它需要主動(dòng)退出選舉蛀序。

如果一個(gè)Active因HealthMonitor監(jiān)控到狀態(tài)異常件甥,這里會(huì)作出判斷捌议,先通過Fenceing功能關(guān)閉它(確保關(guān)閉或者不能提供服務(wù)),然后在ZK上刪除它對(duì)應(yīng)ZNode引有。發(fā)送上述事件后瓣颅,在另外一臺(tái)機(jī)器上的ZKFC中的ActiveStandbyElector會(huì)收到事件,并重新進(jìn)行選舉(嘗試創(chuàng)建特定ZNode)譬正,它將獲得成功并更改NN中狀態(tài)宫补,從而實(shí)現(xiàn)Active節(jié)點(diǎn)的變更。

HDFS體系結(jié)構(gòu)

Client客戶端+Namenode+DataNode

1.Namenode

是整個(gè)文件系統(tǒng)的管理節(jié)點(diǎn)曾我。它維護(hù)著1.整個(gè)文件系統(tǒng)的文件目錄樹粉怕,2.文件/目錄的元信息和每個(gè)文件對(duì)應(yīng)的數(shù)據(jù)塊列表。3.接收用戶的操作請(qǐng)求抒巢。文件包括:(hdfs-site.xml的dfs.namenode.name.dir屬性)

fsimage:元數(shù)據(jù)鏡像文件贫贝。存儲(chǔ)某一時(shí)段NameNode內(nèi)存元數(shù)據(jù)信息。edits:操作日志文件蛉谜。fstime:保存最近一次checkpoint的時(shí)間 以上這些文件是保存在linux的文件系統(tǒng)中稚晚。

NameNode維護(hù)著2張表:1.文件系統(tǒng)的目錄結(jié)構(gòu),以及元數(shù)據(jù)信息型诚;2.文件與數(shù)據(jù)塊(block)列表的對(duì)應(yīng)關(guān)系

元數(shù)據(jù)存放在fsimage中客燕,在運(yùn)行的時(shí)候加載到內(nèi)存中的(讀寫比較快)。操作日志寫到edits中狰贯。(類似于LSM樹中的log)

(剛開始的寫文件會(huì)寫入到內(nèi)存中和edits中也搓,edits會(huì)記錄文件系統(tǒng)的每一步操作,當(dāng)達(dá)到一定的容量會(huì)將其內(nèi)容寫入fsimage中)

dfs.namenode.name.dir -- /lvm/dfs/nn

/lvm/dfs/nn/current

保存有fsimage和edit文件? 確定namenode在本地文件系統(tǒng)上的DFS名稱節(jié)點(diǎn)應(yīng)存儲(chǔ)名稱表(fsimage)涵紊。

fsimage的內(nèi)容會(huì)被存儲(chǔ)到以逗號(hào)分隔的列表的目錄中傍妒,然后在所有的目錄中復(fù)制名稱表目錄,用于冗余摸柄。

查看NameNode內(nèi)容

啟動(dòng)服務(wù)器bin/hdfs oiv -i 某個(gè)fsimage文件 --offline image viewer? -i(input) -o(output)

查看內(nèi)容bin/hdfs dfs -ls -R webhdfs://127.0.0.1:5978/

導(dǎo)出結(jié)果bin/hdfs oiv -p XML -i tmp/dfs/name/current/fsimage_0000000000000000055 -o fsimage.xml

查看edtis內(nèi)容bin/hdfs oev -i tmp/dfs/name/current/edits_0000000000000000057-0000000000000000186 -o edits.xml

2.Datanode

提供真實(shí)文件數(shù)據(jù)的存儲(chǔ)服務(wù)拍顷。

文件塊(block):最基本的存儲(chǔ)單位。對(duì)于文件內(nèi)容而言塘幅,一個(gè)文件的長(zhǎng)度大小是size昔案,那么從文件的0偏移開始,按照固定的大小电媳,順序?qū)ξ募M(jìn)行劃分并編號(hào)踏揣,劃分好的每一個(gè)塊稱一個(gè)Block。HDFS默認(rèn)Block大小是128MB(dfs.blocksize,dfs.block.size)匾乓,以一個(gè)256MB文件捞稿,共有256/128=2個(gè)Block. 不同于普通文件系統(tǒng)的是,HDFS中,如果一個(gè)文件小于一個(gè)數(shù)據(jù)塊的大小娱局,并不占用整個(gè)數(shù)據(jù)塊存儲(chǔ)空間彰亥。(這樣設(shè)置可以減輕namenode壓力,因?yàn)閚amonode維護(hù)者文件與數(shù)據(jù)塊列表的對(duì)應(yīng)大小) Replication衰齐。多復(fù)本任斋。默認(rèn)是三個(gè)。(hdfs-site.xml的dfs.replication屬性).注意區(qū)別:一個(gè)文件可以產(chǎn)生多個(gè)塊耻涛,多個(gè)文件是不可能成為一個(gè)塊信息的废酷,處于減輕namenode的壓力,最好的方式就是一個(gè)文件一個(gè)塊.

文件塊存放路徑查看與具體信息解釋

(a)查找datanode存放數(shù)據(jù)的位置抹缕,配置信息在hdfs-site.xml中

cd /lvm/data8/dfs/dn/current/BP-625280320-192.168.191.130-1483628038952/current/finalized/subdir0/subdir0

DataNode:使用block形式存儲(chǔ)澈蟆。在hadoop2中,默認(rèn)的大小是128MB卓研。使用副本形式保存數(shù)據(jù)的安全趴俘,默認(rèn)的數(shù)量是3個(gè)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奏赘,一起剝皮案震驚了整個(gè)濱河市寥闪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌志珍,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件垛叨,死亡現(xiàn)場(chǎng)離奇詭異伦糯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)嗽元,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門敛纲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人剂癌,你說我怎么就攤上這事淤翔。” “怎么了佩谷?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵旁壮,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我谐檀,道長(zhǎng)抡谐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任桐猬,我火速辦了婚禮麦撵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己免胃,他們只是感情好音五,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著羔沙,像睡著了一般躺涝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撬碟,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天诞挨,我揣著相機(jī)與錄音,去河邊找鬼呢蛤。 笑死惶傻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的其障。 我是一名探鬼主播银室,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼励翼!你這毒婦竟也來了蜈敢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤汽抚,失蹤者是張志新(化名)和其女友劉穎抓狭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體造烁,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡否过,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惭蟋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苗桂。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖告组,靈堂內(nèi)的尸體忽然破棺而出煤伟,到底是詐尸還是另有隱情,我是刑警寧澤木缝,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布便锨,位于F島的核電站,受9級(jí)特大地震影響我碟,放射性物質(zhì)發(fā)生泄漏鸿秆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一怎囚、第九天 我趴在偏房一處隱蔽的房頂上張望卿叽。 院中可真熱鬧桥胞,春花似錦、人聲如沸考婴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沥阱。三九已至缎罢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間考杉,已是汗流浹背策精。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留崇棠,地道東北人咽袜。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像枕稀,于是被迫代替她去往敵國(guó)和親询刹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容