Hadoop 基礎(chǔ)入門

2018-10-10 18:58 更新

啟動:

格式化節(jié)點:bin/hdfs namenode -format

全部啟動:sbin/start-dfs:datanode、namenode

sbin/start-yarn:nodemanager、resourcemanager

訪問: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é)點列表:bin/hdfs dfsadmin -report

節(jié)點恢復(fù):bin/hdfs namenode -recover

節(jié)點檢查: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集群包含一個單一的NameNode,稱之為主服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)命名空間及客戶端對文件的訪問權(quán)限。hdfs集群包含多個數(shù)據(jù)節(jié)點。hdfs暴露文件命名空間用以用戶以文件形式存儲數(shù)據(jù)。文件被分割為多個塊兒,存儲在一個或多個數(shù)據(jù)節(jié)點上。NameNode負(fù)責(zé)文件系統(tǒng)操作,包括打開,關(guān)閉,重命名文件和文件夾,決定數(shù)據(jù)塊到數(shù)據(jù)節(jié)點的映射。數(shù)據(jù)節(jié)點負(fù)責(zé)系統(tǒng)客戶端的讀寫請求,及數(shù)據(jù)塊的創(chuàng)建,刪除和根據(jù)NameNode的指導(dǎo)進行復(fù)制。

單個NameNode簡化了hdfs架構(gòu),負(fù)責(zé)存儲hdfs元數(shù)據(jù),不存儲用戶數(shù)據(jù)。

hdfs支持傳統(tǒng)的層級文件結(jié)構(gòu),用戶或者系統(tǒng)客戶端可以創(chuàng)建文件夾及在其下存儲文件。支持文件數(shù)量級權(quán)限限制。不支持軟,硬連接,但不妨礙其它對此的實現(xiàn)。

NameNode負(fù)責(zé)維護文件系統(tǒng)命名空間,記錄所有變更。應(yīng)用可以配置文件的備份數(shù),即備份因子。

數(shù)據(jù)復(fù)制:默認(rèn)三份

hdfs用來在集群間,跨機器存儲文件。文件以一連串的數(shù)據(jù)塊形式存儲,數(shù)據(jù)塊存在多個備份以提供容錯能力,塊兒大小及備份數(shù)可以根據(jù)每一個文件進行配置。

除了最后一個數(shù)據(jù)塊,其它數(shù)據(jù)塊大小均相同,

復(fù)制因子,可以在文件創(chuàng)建時配置,后續(xù)可以更改,hdfs中的文件是一次性寫入的,并且嚴(yán)格限制一個操作者。

NameNode決定數(shù)據(jù)塊的復(fù)制事宜。間隔的接收數(shù)據(jù)節(jié)點的心跳(數(shù)據(jù)幾點是否工作正常)及數(shù)據(jù)塊報告(數(shù)據(jù)節(jié)點所包含的所有數(shù)據(jù)塊)

數(shù)據(jù)塊備份的存放關(guān)系著hdfs的可靠性及性能。優(yōu)化備份存儲是hdfs區(qū)別于其它分布式文件系統(tǒng)的重要一點。rack aware機制是為了提高h(yuǎn)dfs數(shù)據(jù)可靠性,可用性,網(wǎng)絡(luò)帶寬使用。

大規(guī)模的hdfs實例通常運行在跨不同機器不同平臺架構(gòu)的機器上,不同平臺的節(jié)點之間通信需要經(jīng)過交換機,同平臺之間的帶寬通常大于異構(gòu)平臺之間的帶寬。

副本選擇:

為了減少總體的帶寬消耗和讀延遲,hdfs嘗試通過距離用戶最近的副本來提供讀服務(wù)。同架構(gòu)節(jié)點優(yōu)先提供服務(wù),本地節(jié)點有限提供服務(wù)。

安全模式:

NameNode啟動時,處于安全模式,此時數(shù)據(jù)節(jié)點不執(zhí)行數(shù)據(jù)塊復(fù)制,NameNode接收心跳及數(shù)據(jù)塊報告,每一個數(shù)據(jù)塊包含過個副本,當(dāng)數(shù)據(jù)塊副本數(shù)量匹配配置的復(fù)制因子,則NameNode認(rèn)定數(shù)據(jù)塊安全,當(dāng)特定比例數(shù)據(jù)塊被認(rèn)定安 全后,NameNode離開安全模式,并檢查還不滿足復(fù)制因子的數(shù)據(jù)塊,并進行復(fù)制操作。

系統(tǒng)元數(shù)據(jù)的持久化:

hdfs命名空間存儲在NameNode。NameNode使用事務(wù)日志(Editlog)持續(xù)的記錄系統(tǒng)元數(shù)據(jù)發(fā)生的所有變更,每次變更增加一條記錄,Editlog存儲在本地系統(tǒng)文件。全部的系統(tǒng)命名空間元數(shù)據(jù),包括數(shù)據(jù)塊到文件的映射及系統(tǒng)屬性存儲在文本地系統(tǒng)件FsImage中。

NameNode在內(nèi)存中保存著一份系統(tǒng)命名空間及數(shù)據(jù)塊映射鏡像,當(dāng)NameNode啟動時,或者檢測點觸發(fā),NameNode讀取磁盤Fsimage及Editlog文件,將Editlog文件中的事務(wù)應(yīng)用于內(nèi)存中的Fsimage鏡像,并將應(yīng)用后的FsImage固化到磁盤生成新的FsImage文件。舊的Editlog即可被刪除,這個過程稱之為檢測點,目的是通過系統(tǒng)元數(shù)據(jù)快照及固化FsImage來保持hdfs的一致性。FsImage的讀取效率很高,但是修改效率低,為了避免FsImage的修改操作,NameNode將變更記錄到Editlog,等到檢測點觸發(fā),Editlog變更被應(yīng)用固化到FsImage文件。

檢測點( checkpoint )配置: dfs.namenode.checkpoint.period s間隔, dfs.namenode.checkpoint.txns 變更數(shù)間隔

數(shù)據(jù)節(jié)點將數(shù)據(jù)塊存儲在本地系統(tǒng),數(shù)據(jù)節(jié)點無法識別hdfs文件,存儲可能不同文件的不同數(shù)據(jù)塊。數(shù)據(jù)節(jié)點避免將所有的文件數(shù)據(jù)塊存儲在同一文件目錄下(本地文件系統(tǒng)限制),采用啟發(fā)式算法來決定文件夾的創(chuàng)建及數(shù)據(jù)塊的存放。

數(shù)據(jù)節(jié)點啟動時,掃描本地文件系統(tǒng)產(chǎn)生一系列數(shù)據(jù)塊到本地文件映射(blockreport),發(fā)送到NameNode。

通信協(xié)議

hdfs通信協(xié)議基于TCP/IP,客戶端使用客戶端協(xié)議于NameNode建立連接,數(shù)據(jù)節(jié)點使用數(shù)據(jù)節(jié)點協(xié)議(寶庫奧客戶端協(xié)議及數(shù)據(jù)節(jié)點協(xié)議)同NameNode建立連接,NameNode不主動發(fā)起連接,只回復(fù)客戶端及數(shù)據(jù)節(jié)點的rpc連接請求。

健壯性:NameNode,數(shù)據(jù)節(jié)點,網(wǎng)絡(luò)分區(qū)

數(shù)據(jù)節(jié)點保持著和NameNode之前的心跳,網(wǎng)絡(luò)分區(qū)因素可能引起數(shù)據(jù)節(jié)點的失聯(lián)。NameNode通過檢測心跳信息識別失聯(lián)數(shù)據(jù)節(jié)點,并標(biāo)識節(jié)點失效,不再轉(zhuǎn)發(fā)IO請求。失效節(jié)點存儲的數(shù)據(jù)塊將不再為hdfs使用,將會引起特定數(shù)據(jù)節(jié)點的復(fù)制因此不再滿足,NameNode不間斷的檢測不滿足復(fù)制因子的數(shù)據(jù)塊,并在特定條件下(數(shù)據(jù)節(jié)點不可用,副本崩潰,硬盤損壞,文件復(fù)制因子變更)的時候啟動復(fù)制。

數(shù)據(jù)節(jié)點失效判定超時配置:

數(shù)據(jù)一致性:

hdfs客戶端文件實現(xiàn)了hdfs文件校驗機制,客戶端創(chuàng)建hdfs文件時,同時計算每個數(shù)據(jù)塊校驗和(CRC32算法),并將校驗和存儲在同一個hdfs命名空間的一個獨立的隱藏文件中。當(dāng)客戶端接收到hdfs文件內(nèi)容時,同時計算校驗和和相關(guān)的校驗和文件進行匹配。當(dāng)某一個數(shù)據(jù)塊不匹配,則執(zhí)行從其它數(shù)據(jù)節(jié)點請求此數(shù)據(jù)塊備份。

FsImage Editlog磁盤失效會引起hdfs無法工作,因此hdfs支持配置FsImage Editlog備份,備份間異步更新,可能引起吞吐量降低。NameNode重啟時,選擇最新的FsImage Editlog。

數(shù)據(jù)組織:

大數(shù)據(jù)文件,一次寫入,多次讀取,流式讀取,標(biāo)準(zhǔn)大小數(shù)據(jù)塊128m,一個文件會被分割為多個數(shù)據(jù)塊,并盡可能的分配到不同的數(shù)據(jù)節(jié)點上。

當(dāng)客戶端向hdfs寫入文件時,NameNode使用相應(yīng)的目標(biāo)選擇算法獲取特定復(fù)制因子數(shù)量的數(shù)據(jù)節(jié)點??蛻舳耸紫葘?shù)據(jù)寫入第一個節(jié)點,第一個節(jié)點接收數(shù)據(jù),寫入本地存儲,并傳輸給后續(xù)的數(shù)據(jù)節(jié)點,后續(xù)節(jié)點相應(yīng)的執(zhí)行。數(shù)據(jù)在數(shù)據(jù)節(jié)點間管道式流動復(fù)制。

備份因此修改后,只有等到下一次心跳,信息才會傳送至數(shù)據(jù)節(jié)點,然后數(shù)據(jù)節(jié)點執(zhí)行相應(yīng)的數(shù)據(jù)塊操作,存在操作時間差。

客戶端請求NameNode獲取文件元數(shù)據(jù)及修改信息,同數(shù)據(jù)節(jié)點執(zhí)行實際的數(shù)據(jù)IO請求。

Secondary NameNode:

FsImage:最新的checkpoint文件。

主節(jié)點只在啟動時執(zhí)行FsImage及Editlog相關(guān)操作,二級節(jié)點運行期間定時管理FsImage及Editlog,控制FsImge在一定的大小范圍。二級節(jié)點通常運行在不同的節(jié)點上。二級節(jié)點上最新的checkpoint和主節(jié)點上的checkpoint存儲在相同的位置。以便可以讓主節(jié)點使用。

定時與主節(jié)點同步(定期合并),并將最新FsImage傳遞給NameNode,清空Editlog,NameNode失效后,需要手動設(shè)置為主機。

checkpoint節(jié)點:

checkpoint節(jié)點不間斷的創(chuàng)建命名空間的checkpoint文件。從活躍NameNode下載FsImage及Editlog,應(yīng)用Editlog到FsImge,并將最新的FsImage到主NameNode。checkpoint運行在獨立的服務(wù)器上。

配置地址: dfs.namenode.backup.address dfs.namenode.backup.http-address

配置啟動: dfs.namenode.checkpoint.period 默認(rèn)1h,執(zhí)行checkpoint間隔; dfs.namenode.checkpoint.txns 間隔任務(wù)數(shù)

checkpoint節(jié)點存儲最新checkpoint文件位置和主節(jié)點相同。

備份節(jié)點:

執(zhí)行checkpoint節(jié)點相同的功能,同時保持一份內(nèi)存鏡像,實時和主節(jié)點異步更新,日常流式從主節(jié)點接收系統(tǒng)變更,固化到硬盤,同時應(yīng)用到內(nèi)存中的鏡像。

備份節(jié)點不需要從主節(jié)點下載FsImage Editlog,因為內(nèi)存中保存著最新的鏡像備份。

配置備份節(jié)點可以不配置checkpoint節(jié)點。

暫時只支持一個本分節(jié)點,

bin/hdfs namenode -backup

配置:dfs.namenode.backup.address and dfs.namenode.backup.http-address

使用本分節(jié)點可以配置無持久化存儲hdfs存儲。

導(dǎo)入checkpoint:

  • dfs.namenode.name.dir 配置空文件夾;
  • dfs.namenode.checkpoint.dir配置chckepoint文件位置;
  • 啟動主NameNode -importCheckpoint option.

    NameNode上傳dfs.namenode.checkpoint.dir文件夾下checkpoint文件,保存到dfs.namenode.name.dir(確??眨?,。。。

  • olicy to keep one of the replicas of a block on the same node as the node that is writing the block.
  • Need to spread different replicas of a block across the racks so that cluster can survive loss of whole rack.
  • One of the replicas is usually placed on the same rack as the node writing to the file so that cross-rack network I/O is reduced.
  • Spread HDFS data uniformly across the DataNodes in the cluster.

    數(shù)據(jù)節(jié)點存儲熱切換:

  • If there are new storage directories, the user should format them and mount them appropriately.
  • The user updates the DataNode configuration dfs.datanode.data.dir to reflect the data volume directories that will be actively in use.
  • The user runs dfsadmin -reconfig datanode HOST:PORT start to start the reconfiguration process. The user can use dfsadmin -reconfig datanode HOST:PORT status to query the running status of the reconfiguration task.
  • 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ù)塊存儲服務(wù):

    數(shù)據(jù)塊管理(NameNode)

    維護數(shù)據(jù)節(jié)點關(guān)系(提供注冊,心跳)

    處理數(shù)據(jù)塊報告及維護數(shù)據(jù)塊存儲位置

    支持?jǐn)?shù)據(jù)塊相關(guān)的操作,創(chuàng)建,刪除,修改及位置獲取

    管理數(shù)據(jù)塊復(fù)制,復(fù)制不滿足復(fù)制因子( under replicated)的數(shù)據(jù)塊,刪除超過復(fù)制因子 (over replicated)的數(shù)據(jù)塊備份。

    數(shù)據(jù)塊存儲(數(shù)據(jù)節(jié)點):

    本地存儲數(shù)據(jù)塊,提供讀寫訪問。

整個HDFS可存儲的文件數(shù)受限于NameNode的內(nèi)存大小

一個block在NameNode中對應(yīng)一條記錄,map task數(shù)量由splits決定,mapreduce處理大量小文件時,會產(chǎn)生大量map task,線程管理開銷增加作業(yè)時間,建議處理大文件。

數(shù)據(jù)節(jié)點:

保存具體的block數(shù)據(jù)

負(fù)責(zé)數(shù)據(jù)的讀寫

定時向NameNode報告數(shù)據(jù)塊信息,及更新信息

數(shù)據(jù)節(jié)點之前的通信,block復(fù)制,保證數(shù)據(jù)的冗余性。

讀?。?/p>

配置:

core-site.xml:配置公共屬性

hdfs-site.xml: 配置HDFS

yarn-site.xml: 配置YARN

mapred-site.xml: 配置MapReduce

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號