啟動(dòng):
格式化節(jié)點(diǎn):bin/hdfs namenode -format
全部啟動(dòng):sbin/start-dfs:datanode、namenode
sbin/start-yarn:nodemanager、resourcemanager
訪問(wèn):http://localhost:50070 查看管理
查看文件目錄:bin/hdfs.cmd dfs -ls /
創(chuàng)建文件夾:bin/hdfs dfs -mkdir -p /test
復(fù)制文件:bin/hdfs dfs -put etc/hadoop hdfs://localhost:9000/test
查看文件:bin/hdfs dfs -cat /test/hadoop/*.xml
刪除文件:bin/hdfs dfs -rm -r /test/*.xml
節(jié)點(diǎn)列表:bin/hdfs dfsadmin -report
節(jié)點(diǎn)恢復(fù):bin/hdfs namenode -recover
節(jié)點(diǎn)檢查:bin/hdfs fsck /test
snapshot文件夾:bin/hdfs lsSnapshottableDir
配置獲取: PS D:\hadoop-2.9.0> .\bin\hdfs getconf -namenodes localhost PS D:\hadoop-2.9.0> .\bin\hdfs getconf -secondaryNameNodes account.jetbrains.com PS D:\hadoop-2.9.0> .\bin\hdfs getconf -backupNodes account.jetbrains.com PS D:\hadoop-2.9.0> .\bin\hdfs getconf -includeFile Configuration dfs.hosts is missing. PS D:\hadoop-2.9.0> .\bin\hdfs getconf -nnRpcAddresses localhost:9000 PS D:\hadoop-2.9.0> .\bin\hdfs classpath D:\hadoop-2.9.0\etc\hadoop;D:\hadoop-2.9.0\share\hadoop\common\lib*;D:\hadoop-2.9.0\share\hadoop\common\ .0\share\hadoop\hdfs;D:\hadoop-2.9.0\share\hadoop\hdfs\lib*;D:\hadoop-2.9.0\share\hadoop\hdfs*;D:\hadoo...
hdfs 擁有主從結(jié)構(gòu),hdfs集群包含一個(gè)單一的NameNode,稱之為主服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)命名空間及客戶端對(duì)文件的訪問(wèn)權(quán)限。hdfs集群包含多個(gè)數(shù)據(jù)節(jié)點(diǎn)。hdfs暴露文件命名空間用以用戶以文件形式存儲(chǔ)數(shù)據(jù)。文件被分割為多個(gè)塊兒,存儲(chǔ)在一個(gè)或多個(gè)數(shù)據(jù)節(jié)點(diǎn)上。NameNode負(fù)責(zé)文件系統(tǒng)操作,包括打開,關(guān)閉,重命名文件和文件夾,決定數(shù)據(jù)塊到數(shù)據(jù)節(jié)點(diǎn)的映射。數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)系統(tǒng)客戶端的讀寫請(qǐng)求,及數(shù)據(jù)塊的創(chuàng)建,刪除和根據(jù)NameNode的指導(dǎo)進(jìn)行復(fù)制。
單個(gè)NameNode簡(jiǎn)化了hdfs架構(gòu),負(fù)責(zé)存儲(chǔ)hdfs元數(shù)據(jù),不存儲(chǔ)用戶數(shù)據(jù)。
hdfs支持傳統(tǒng)的層級(jí)文件結(jié)構(gòu),用戶或者系統(tǒng)客戶端可以創(chuàng)建文件夾及在其下存儲(chǔ)文件。支持文件數(shù)量級(jí)權(quán)限限制。不支持軟,硬連接,但不妨礙其它對(duì)此的實(shí)現(xiàn)。
NameNode負(fù)責(zé)維護(hù)文件系統(tǒng)命名空間,記錄所有變更。應(yīng)用可以配置文件的備份數(shù),即備份因子。
數(shù)據(jù)復(fù)制:默認(rèn)三份
hdfs用來(lái)在集群間,跨機(jī)器存儲(chǔ)文件。文件以一連串的數(shù)據(jù)塊形式存儲(chǔ),數(shù)據(jù)塊存在多個(gè)備份以提供容錯(cuò)能力,塊兒大小及備份數(shù)可以根據(jù)每一個(gè)文件進(jìn)行配置。
除了最后一個(gè)數(shù)據(jù)塊,其它數(shù)據(jù)塊大小均相同,
復(fù)制因子,可以在文件創(chuàng)建時(shí)配置,后續(xù)可以更改,hdfs中的文件是一次性寫入的,并且嚴(yán)格限制一個(gè)操作者。
NameNode決定數(shù)據(jù)塊的復(fù)制事宜。間隔的接收數(shù)據(jù)節(jié)點(diǎn)的心跳(數(shù)據(jù)幾點(diǎn)是否工作正常)及數(shù)據(jù)塊報(bào)告(數(shù)據(jù)節(jié)點(diǎn)所包含的所有數(shù)據(jù)塊)
數(shù)據(jù)塊備份的存放關(guān)系著hdfs的可靠性及性能。優(yōu)化備份存儲(chǔ)是hdfs區(qū)別于其它分布式文件系統(tǒng)的重要一點(diǎn)。rack aware機(jī)制是為了提高h(yuǎn)dfs數(shù)據(jù)可靠性,可用性,網(wǎng)絡(luò)帶寬使用。
大規(guī)模的hdfs實(shí)例通常運(yùn)行在跨不同機(jī)器不同平臺(tái)架構(gòu)的機(jī)器上,不同平臺(tái)的節(jié)點(diǎn)之間通信需要經(jīng)過(guò)交換機(jī),同平臺(tái)之間的帶寬通常大于異構(gòu)平臺(tái)之間的帶寬。
副本選擇:
為了減少總體的帶寬消耗和讀延遲,hdfs嘗試通過(guò)距離用戶最近的副本來(lái)提供讀服務(wù)。同架構(gòu)節(jié)點(diǎn)優(yōu)先提供服務(wù),本地節(jié)點(diǎn)有限提供服務(wù)。
安全模式:
NameNode啟動(dòng)時(shí),處于安全模式,此時(shí)數(shù)據(jù)節(jié)點(diǎn)不執(zhí)行數(shù)據(jù)塊復(fù)制,NameNode接收心跳及數(shù)據(jù)塊報(bào)告,每一個(gè)數(shù)據(jù)塊包含過(guò)個(gè)副本,當(dāng)數(shù)據(jù)塊副本數(shù)量匹配配置的復(fù)制因子,則NameNode認(rèn)定數(shù)據(jù)塊安全,當(dāng)特定比例數(shù)據(jù)塊被認(rèn)定安 全后,NameNode離開安全模式,并檢查還不滿足復(fù)制因子的數(shù)據(jù)塊,并進(jìn)行復(fù)制操作。
系統(tǒng)元數(shù)據(jù)的持久化:
hdfs命名空間存儲(chǔ)在NameNode。NameNode使用事務(wù)日志(Editlog)持續(xù)的記錄系統(tǒng)元數(shù)據(jù)發(fā)生的所有變更,每次變更增加一條記錄,Editlog存儲(chǔ)在本地系統(tǒng)文件。全部的系統(tǒng)命名空間元數(shù)據(jù),包括數(shù)據(jù)塊到文件的映射及系統(tǒng)屬性存儲(chǔ)在文本地系統(tǒng)件FsImage中。
NameNode在內(nèi)存中保存著一份系統(tǒng)命名空間及數(shù)據(jù)塊映射鏡像,當(dāng)NameNode啟動(dòng)時(shí),或者檢測(cè)點(diǎn)觸發(fā),NameNode讀取磁盤Fsimage及Editlog文件,將Editlog文件中的事務(wù)應(yīng)用于內(nèi)存中的Fsimage鏡像,并將應(yīng)用后的FsImage固化到磁盤生成新的FsImage文件。舊的Editlog即可被刪除,這個(gè)過(guò)程稱之為檢測(cè)點(diǎn),目的是通過(guò)系統(tǒng)元數(shù)據(jù)快照及固化FsImage來(lái)保持hdfs的一致性。FsImage的讀取效率很高,但是修改效率低,為了避免FsImage的修改操作,NameNode將變更記錄到Editlog,等到檢測(cè)點(diǎn)觸發(fā),Editlog變更被應(yīng)用固化到FsImage文件。
檢測(cè)點(diǎn)( checkpoint )配置: dfs.namenode.checkpoint.period s間隔, dfs.namenode.checkpoint.txns 變更數(shù)間隔
數(shù)據(jù)節(jié)點(diǎn)將數(shù)據(jù)塊存儲(chǔ)在本地系統(tǒng),數(shù)據(jù)節(jié)點(diǎn)無(wú)法識(shí)別hdfs文件,存儲(chǔ)可能不同文件的不同數(shù)據(jù)塊。數(shù)據(jù)節(jié)點(diǎn)避免將所有的文件數(shù)據(jù)塊存儲(chǔ)在同一文件目錄下(本地文件系統(tǒng)限制),采用啟發(fā)式算法來(lái)決定文件夾的創(chuàng)建及數(shù)據(jù)塊的存放。
數(shù)據(jù)節(jié)點(diǎn)啟動(dòng)時(shí),掃描本地文件系統(tǒng)產(chǎn)生一系列數(shù)據(jù)塊到本地文件映射(blockreport),發(fā)送到NameNode。
通信協(xié)議
hdfs通信協(xié)議基于TCP/IP,客戶端使用客戶端協(xié)議于NameNode建立連接,數(shù)據(jù)節(jié)點(diǎn)使用數(shù)據(jù)節(jié)點(diǎn)協(xié)議(寶庫(kù)奧客戶端協(xié)議及數(shù)據(jù)節(jié)點(diǎn)協(xié)議)同NameNode建立連接,NameNode不主動(dòng)發(fā)起連接,只回復(fù)客戶端及數(shù)據(jù)節(jié)點(diǎn)的rpc連接請(qǐng)求。
健壯性:NameNode,數(shù)據(jù)節(jié)點(diǎn),網(wǎng)絡(luò)分區(qū)
數(shù)據(jù)節(jié)點(diǎn)保持著和NameNode之前的心跳,網(wǎng)絡(luò)分區(qū)因素可能引起數(shù)據(jù)節(jié)點(diǎn)的失聯(lián)。NameNode通過(guò)檢測(cè)心跳信息識(shí)別失聯(lián)數(shù)據(jù)節(jié)點(diǎn),并標(biāo)識(shí)節(jié)點(diǎn)失效,不再轉(zhuǎn)發(fā)IO請(qǐng)求。失效節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)塊將不再為hdfs使用,將會(huì)引起特定數(shù)據(jù)節(jié)點(diǎn)的復(fù)制因此不再滿足,NameNode不間斷的檢測(cè)不滿足復(fù)制因子的數(shù)據(jù)塊,并在特定條件下(數(shù)據(jù)節(jié)點(diǎn)不可用,副本崩潰,硬盤損壞,文件復(fù)制因子變更)的時(shí)候啟動(dòng)復(fù)制。
數(shù)據(jù)節(jié)點(diǎn)失效判定超時(shí)配置:
數(shù)據(jù)一致性:
hdfs客戶端文件實(shí)現(xiàn)了hdfs文件校驗(yàn)機(jī)制,客戶端創(chuàng)建hdfs文件時(shí),同時(shí)計(jì)算每個(gè)數(shù)據(jù)塊校驗(yàn)和(CRC32算法),并將校驗(yàn)和存儲(chǔ)在同一個(gè)hdfs命名空間的一個(gè)獨(dú)立的隱藏文件中。當(dāng)客戶端接收到hdfs文件內(nèi)容時(shí),同時(shí)計(jì)算校驗(yàn)和和相關(guān)的校驗(yàn)和文件進(jìn)行匹配。當(dāng)某一個(gè)數(shù)據(jù)塊不匹配,則執(zhí)行從其它數(shù)據(jù)節(jié)點(diǎn)請(qǐng)求此數(shù)據(jù)塊備份。
FsImage Editlog磁盤失效會(huì)引起hdfs無(wú)法工作,因此hdfs支持配置FsImage Editlog備份,備份間異步更新,可能引起吞吐量降低。NameNode重啟時(shí),選擇最新的FsImage Editlog。
數(shù)據(jù)組織:
大數(shù)據(jù)文件,一次寫入,多次讀取,流式讀取,標(biāo)準(zhǔn)大小數(shù)據(jù)塊128m,一個(gè)文件會(huì)被分割為多個(gè)數(shù)據(jù)塊,并盡可能的分配到不同的數(shù)據(jù)節(jié)點(diǎn)上。
當(dāng)客戶端向hdfs寫入文件時(shí),NameNode使用相應(yīng)的目標(biāo)選擇算法獲取特定復(fù)制因子數(shù)量的數(shù)據(jù)節(jié)點(diǎn)??蛻舳耸紫葘?shù)據(jù)寫入第一個(gè)節(jié)點(diǎn),第一個(gè)節(jié)點(diǎn)接收數(shù)據(jù),寫入本地存儲(chǔ),并傳輸給后續(xù)的數(shù)據(jù)節(jié)點(diǎn),后續(xù)節(jié)點(diǎn)相應(yīng)的執(zhí)行。數(shù)據(jù)在數(shù)據(jù)節(jié)點(diǎn)間管道式流動(dòng)復(fù)制。
備份因此修改后,只有等到下一次心跳,信息才會(huì)傳送至數(shù)據(jù)節(jié)點(diǎn),然后數(shù)據(jù)節(jié)點(diǎn)執(zhí)行相應(yīng)的數(shù)據(jù)塊操作,存在操作時(shí)間差。
客戶端請(qǐng)求NameNode獲取文件元數(shù)據(jù)及修改信息,同數(shù)據(jù)節(jié)點(diǎn)執(zhí)行實(shí)際的數(shù)據(jù)IO請(qǐng)求。
Secondary NameNode:
FsImage:最新的checkpoint文件。
主節(jié)點(diǎn)只在啟動(dòng)時(shí)執(zhí)行FsImage及Editlog相關(guān)操作,二級(jí)節(jié)點(diǎn)運(yùn)行期間定時(shí)管理FsImage及Editlog,控制FsImge在一定的大小范圍。二級(jí)節(jié)點(diǎn)通常運(yùn)行在不同的節(jié)點(diǎn)上。二級(jí)節(jié)點(diǎn)上最新的checkpoint和主節(jié)點(diǎn)上的checkpoint存儲(chǔ)在相同的位置。以便可以讓主節(jié)點(diǎn)使用。
定時(shí)與主節(jié)點(diǎn)同步(定期合并),并將最新FsImage傳遞給NameNode,清空Editlog,NameNode失效后,需要手動(dòng)設(shè)置為主機(jī)。
checkpoint節(jié)點(diǎn):
checkpoint節(jié)點(diǎn)不間斷的創(chuàng)建命名空間的checkpoint文件。從活躍NameNode下載FsImage及Editlog,應(yīng)用Editlog到FsImge,并將最新的FsImage到主NameNode。checkpoint運(yùn)行在獨(dú)立的服務(wù)器上。
配置地址: dfs.namenode.backup.address dfs.namenode.backup.http-address
配置啟動(dòng): dfs.namenode.checkpoint.period 默認(rèn)1h,執(zhí)行checkpoint間隔; dfs.namenode.checkpoint.txns 間隔任務(wù)數(shù)
checkpoint節(jié)點(diǎn)存儲(chǔ)最新checkpoint文件位置和主節(jié)點(diǎn)相同。
備份節(jié)點(diǎn):
執(zhí)行checkpoint節(jié)點(diǎn)相同的功能,同時(shí)保持一份內(nèi)存鏡像,實(shí)時(shí)和主節(jié)點(diǎn)異步更新,日常流式從主節(jié)點(diǎn)接收系統(tǒng)變更,固化到硬盤,同時(shí)應(yīng)用到內(nèi)存中的鏡像。
備份節(jié)點(diǎn)不需要從主節(jié)點(diǎn)下載FsImage Editlog,因?yàn)閮?nèi)存中保存著最新的鏡像備份。
配置備份節(jié)點(diǎn)可以不配置checkpoint節(jié)點(diǎn)。
暫時(shí)只支持一個(gè)本分節(jié)點(diǎn),
bin/hdfs namenode -backup
配置:dfs.namenode.backup.address and dfs.namenode.backup.http-address
使用本分節(jié)點(diǎn)可以配置無(wú)持久化存儲(chǔ)hdfs存儲(chǔ)。
導(dǎo)入checkpoint:
啟動(dòng)主NameNode -importCheckpoint option.
NameNode上傳dfs.namenode.checkpoint.dir文件夾下checkpoint文件,保存到dfs.namenode.name.dir(確??眨?。。。
Spread HDFS data uniformly across the DataNodes in the cluster.
數(shù)據(jù)節(jié)點(diǎn)存儲(chǔ)熱切換:
Once the reconfiguration task has completed, the user can safely umount the removed data volume directories and physically remove the disks.
HDFS兩層架構(gòu):
命名空間(namespace):
文件夾、文件及數(shù)據(jù)塊的一致性;支持所有和命名空間相關(guān)的文件系統(tǒng)操作(創(chuàng)建、刪除、修改和文件及文件夾列表)
數(shù)據(jù)塊存儲(chǔ)服務(wù):
數(shù)據(jù)塊管理(NameNode)
維護(hù)數(shù)據(jù)節(jié)點(diǎn)關(guān)系(提供注冊(cè),心跳)
處理數(shù)據(jù)塊報(bào)告及維護(hù)數(shù)據(jù)塊存儲(chǔ)位置
支持?jǐn)?shù)據(jù)塊相關(guān)的操作,創(chuàng)建,刪除,修改及位置獲取
管理數(shù)據(jù)塊復(fù)制,復(fù)制不滿足復(fù)制因子( under replicated)的數(shù)據(jù)塊,刪除超過(guò)復(fù)制因子 (over replicated)的數(shù)據(jù)塊備份。
數(shù)據(jù)塊存儲(chǔ)(數(shù)據(jù)節(jié)點(diǎn)):
本地存儲(chǔ)數(shù)據(jù)塊,提供讀寫訪問(wèn)。
整個(gè)HDFS可存儲(chǔ)的文件數(shù)受限于NameNode的內(nèi)存大小
一個(gè)block在NameNode中對(duì)應(yīng)一條記錄,map task數(shù)量由splits決定,mapreduce處理大量小文件時(shí),會(huì)產(chǎn)生大量map task,線程管理開銷增加作業(yè)時(shí)間,建議處理大文件。
數(shù)據(jù)節(jié)點(diǎn):
保存具體的block數(shù)據(jù)
負(fù)責(zé)數(shù)據(jù)的讀寫
定時(shí)向NameNode報(bào)告數(shù)據(jù)塊信息,及更新信息
數(shù)據(jù)節(jié)點(diǎn)之前的通信,block復(fù)制,保證數(shù)據(jù)的冗余性。
讀?。?/p>
配置:
core-site.xml:配置公共屬性
hdfs-site.xml: 配置HDFS
yarn-site.xml: 配置YARN
mapred-site.xml: 配置MapReduce
更多建議: