[HDFS Manual] CH2 HDFS Users Guide

2 HDFS Users Guide

2 HDFS Users Guide. 1html

2.1目的... 1前端

2.2.概述... 1java

2.3.先決條件... 2node

2.4. Web Interface. 2linux

2.5. Shell Command. 2web

2.5.1 DFSAdmin 命令... 3shell

2.6 Secondary Namenode. 3apache

2.7 Checkpoint Node. 3json

2.8 Backup node. 4api

2.9 Import Checkpoint. 4

2.10 均衡器... 5

2.11 Rack Awareness. 5

2.12 Safemode. 5

2.13 fsck. 5

2.14 fetchdt. 5

2.15 Recovery Mode. 5

2.16 更新和回滾... 6

2.17 Datanode熱切換磁盤... 7

2.18 文件權限和安全性... 7

2.19 可擴展性... 7

2.20 相關閱讀... 7

 

2.1目的

2.2.概述

HDFSHadoop應用使用的主要的分佈式存儲。HDFS集羣使用namenode管理文件系統元數據,datanode保存實際數據。HDFS體系結構中有詳細的描述。用戶手冊主要解決HDFS和用戶的交互和HDFS集羣的管理。HDFS體系結構中描述了namenodedatanodeclient的相互之間的交互。Clientnamenode獲取元數據,修改元數據,在datanode中操做實際的數據。

如下是hdfs主要的特性:

·         Hadoop包含hdfshdfs是很是適用於商用的硬件上面,進行分佈式存儲和分佈式處理的。Hdfs有很好的容錯性,可擴展性,擴大也很簡單。Mapreduce也是極簡的適用於龐大的分佈式系統。

·         HDFS是高可配置的,默認配置適用於大多數安裝。只有在極大的集羣下須要調整配置。

·         Hadoop使用java開發,適用於絕大多數平臺。

·         Hadoop支持相似shell的命令行,與hdfs直接交互。

·         Namenodedatanodeweb服務,能夠很簡單的查看和檢查當前集羣狀態。

·         HDFS有用的特性:

o   文件權限和人認證

o   Rack awareness:在調度任務和分配存儲是,考慮node的物理位置

o   Safemode:一個管理模式用來進行對hdfs維護。

o   Fsck:一個用來診斷文件系統是否良好的工具,發現丟失的文件和塊。

o   Fetchdt:用來獲取DelegationToken 而且保存到本地。

o   Balancer:datanode數據分佈不均勻,使用這個工具來均衡。

o   Upgraderollback:軟件更新後,由於一些沒法預計的問題,能夠回滾HDFS的更新

o   Secondary Namenode:按期的執行checkpoint,保證hdfs事務日誌大小。

o   Checkpoint node:在命名空間上執行checkpoint,而且最小化namenode的修改日誌大小。

o   Backup nodecheckpoint node 的擴展。除了checkpoint以外會接受到一串修改,而且維護在內存中。和namenode 保持同步。一個namenode只能有一個backup node

2.3.先決條件

2.4. Web Interface

Namenodedatanode每一個都運行了一個內部的web server,爲了顯示cluster集羣的基本信息。使用默認配置,namenode 的前段網站是http://hosts:9870。列出了cluster中的datanodecluster的基本信息。Web interface能夠用來瀏覽文件系統(使用 browse the file system)

2.5. Shell Command

Hadoop 包含各類相似shell的命令,直接與HDFS和其餘的文件系統進行交互。可使用hdfs dfs –help查看支持的命令。hdfs dfs -help command-name能夠查看命令的詳細內容。命令支持不少和正常文件系統同樣的操做,好比複製文件,修改文件權限等等。也支持HDFS的一些操做好比複製的文件個數。具體能夠查看: File System Shell Guide.

2.5.1 DFSAdmin 命令

 hdfs dfsadmin用來支持HDFS管理操做。hdfs dfsadmin –help列出全部支持的命令,好比:

·         -report 報告HDFS的基本信息。一些信息均可以在namenode 的端頁面上能夠查看

·         -safemode 可讓用戶手動進入和退出safemode

·         -finalizeupgrade 清理最後一次cluster升級的備份。

·         -refreshnodes 更新namenode能夠鏈接的datanode。默認namenode讀取dfs.hosts,dfs.host.exclude定義的文件中讀取。Dfs.hosts包含了只容許註冊到namenodeDfs.host.exclude是不容許的datanode。另外若是dfs.namenode.hosts.provider.classname設置爲org.apache.hadoop.hdfs.server.blockmanagement.CombinedHostFileManager,全部包含和不包含的host都以json格式在dfs.hosts中。Datanode中的全部副本都放到了其餘datanode,那麼datanode會被停用。停用的node會自動被關閉。

·         -printTopology 打印cluster的拓撲,顯示了namenode 能夠查看到的一個b樹。

2.6 Secondary Namenode

Namenode的修改以日誌方式被保存,append的方式被加入到本地的文件系統文件中。當namenode啓動,會從fsimage讀取hdfs的狀態,而後應用editlog。而後把新的fsimage寫回到磁盤而且清空editlog。由於namenode只會在startup狀態纔會合併,editlog文件在繁忙的cluster中會變的很大。這樣會是namenode啓動話很長時間。

Secondary namenode按期合併fsimageeditlog,而且限制editlog大小。一般運行在另一個設備上,由於須要的內存和primary namenode同樣。

Secondary namenode上執行的checkpoint有個2參數控制:

·         Dfs.namenode.checkpoint.period 默認爲1個小時,指定2checkpoint的時間間隔。

·         Dfs.namenode.checkpoint.txns 默認爲100萬,沒100萬事務進行一次checkpoint

Secondary namenode在目錄中保存了最後一次checkpoint,目錄結構和primary namenode同樣。Checkpointimage會準備等待primary namenode 來讀取。

Secondary namenode 相關命令 secondarynamenode

2.7 Checkpoint Node

Namenode使用2種文件來保存元數據,fsimage,最後一次checkpoint的元數據,editlog,從最後一次checkpoint到如今的元數據修改日誌。當namenode啓動,會使用fsimageeditlog合併,提供最新的文件系統狀態。Namenode而後使用新的hdfs狀態覆蓋fsimage,並啓動新的editlog

Checkpoint node按期的建立命名空間的檢查點。會從活動的namenode下載fsimageeditlog,在本地合併,而且把新的image從新上傳到namenodeCheckpoint一般運行在不一樣的服務器上,由於內存的需求和namenode同樣。Checkpoint node根據配置文件使用hdfs namenode –checkpoint啓動。

Checkpoint node 或者backup node能夠經過配置dfs.namenode.backup.address dfs.namenode.backup.http-address設置。

checkpoint有個2參數控制:

·         Dfs.namenode.checkpoint.period 默認爲1個小時,指定2checkpoint的時間間隔。

·         Dfs.namenode.checkpoint.txns 默認爲100萬,沒100萬事務進行一次checkpoint

Checkpoint node在目錄中保存了最後一次checkpoint,目錄結構和namenode同樣。Checkpointimage會準備等待namenode 來讀取。

2.8 Backup node

Backup node提供和checkpoint node同樣的功能,也維護了一分內存的,最新的文件系統命名空間,這個是和活動namenode 保持同步狀態的。接收namenode的修改的流,而後放到本地磁盤上,backup node也只應用這些修改到本身在內存的命名空間中,所以建立了一個namespace的備份。

Backup node不須要去下載fsimageeditlog,來建立checkpoint,由於已經在內存中有了最新的狀態。Backup node checkpoint更加高效,只須要把命名空間保存到本地fsimage而且重置edit

Namenode只支持一個backup node。若是使用了backup node就沒法使用checkpoint node。使用多個backup node在之後會支持。

Backup nodecheckpoint node啓動方式同樣。使用hdfs namenode –backup啓動。

本地的backup node或者checkpoint nodeweb interface經過dfs.namenode.backup.addressdfs.namenode.backup.http-address參數配置。

使用backup node提供了選項,可讓namenode在沒有持續化存儲下運行,委託了全部的持續化到backup nodeNamenode-importcheckpoint啓動,只配置 dfs.namenode.edits.dir

對於完整的討論checkpoint node backup node 能夠看 HADOOP-4539命令的使用能夠看:namenode.

2.9 Import Checkpoint

最後一次checkpoint能夠導入到namenode上若是全部其餘的imageeditlog沒有丟失:

·         建立一個空的目錄,dfs.namenode.name.dir指向這個目錄

·         指向checkpoint數據所在目錄,dfs.namenode.checkpoint.dir

·         使用-importcheckpoint啓動namenode

Namenode會從checkpoint目錄讀取數據,而後存放到namenode目錄中。若是dfs.namenode.name.dir有文件那麼就會報錯。Namenode會檢查dfs.namenode.checkpoint.dir的一致性,可是不會修改它。

2.10 均衡器

HDFS數據並非統一的在datanode中。一個緣由就是cluster加入了一個新的datanode。當放置新的blocknamenode會在選擇datanode,考慮不少:

·         在寫入的node上保留一份

·         跨機架須要一份

·         相同機架的不通服務器上面須要一份

·         HDFS數據統一的分配到datanode

由於不少考慮因素,所以數據不能統一的分配到全部datanodeHdfs提供了一個工具來管理分析block的位置,而且從新平衡datanode。一個簡單的均衡器管理在HADOOP-1652命令使用查看 balancer.

2.11 Rack Awareness

HDFS集羣能夠識別rack的拓撲。爲了最優化數據容量和使用這個配置很重要。能夠查看文檔:rack awareness 

2.12 Safemode

當啓動namenode的時候從去加載fsimageeditlog文件。而後等待datanode 報告他們的block信息。若是副本不夠就開始複製副本,這個時候namenode都在safemode下。Safemodehdfs集羣是隻讀的。若是datanode報告絕大多數block可用,那麼就會推出safemode。若是須要,HDFS能夠手動進入hdfs dfsadmin –safemodeNamenode的前端網站能夠看出safemode是否打開。

2.13 fsck

HDFS支持fsck命令檢查各類不一致性。Fsck被設計用來報告各類文件問題。好比,塊丟失。不想傳統的fsck工具,這個命令並不會修復發現的錯誤。Namenode會自動修復絕大多數的錯誤。Fsck不是hadoopshell命令,使用hdfs fsck啓動。具體能夠查看:fsck.

2.14 fetchdt

HDFS支持fetchdt命令來獲取Delegation Token並保存在本地系統中。這個token在後面用於訪問服務器。工具使用RPC或者HTTPS獲取tokenhdfs fetchdt 是否是hadoop shell命令。可使用hdfs fetchdt DTfile。若是獲取了token以後運行hdfs命令就不須要Kerberos tickets。經過參數HADOOP_TOKEN_FILE_LOCATION指向token文件。Fetchdt命令具體使用: fetchdt 

2.15 Recovery Mode

一般若是配置了多個元數據存儲位置。若是一個存儲位置損壞,能夠從另一個位置上讀取。

可是若是隻有一個存儲位置,那麼怎麼辦?這裏有個namenode啓動的特別模式recovery mode,能夠恢復絕大多數數據。

經過namenode –recover進入recovery mode

進入recovery modenamenode會交互式提示你如何進行恢復。

若是不想要提示,能夠加-force參數。會強制恢復模式老是選擇第一個選項。一般都是合理的。

由於恢復模式會致使數據丟失,最要先備份editlogfsimage

2.16 更新和回滾

Hadoop在集羣上的升級,和其餘軟件升級同樣,都有可能會出現新的bug或者不兼容的修改影響現有的應用程序。HDFS容許管理員回退到以前的hadoop版本,而且回退cluster狀態。HDFS升級能夠看 Hadoop Upgrade 。在升級前,管理員須要刪除已經有的backup使用hadoop dfsadmin –finalizeUpgrade命令。升級過程:

·         在升級前,確認是否有backup node

·         關閉集羣,而且安裝新的hadoop

·         使用-upgrade命令,start-dfs.sh –upgrade

·         不少狀況下,cluster工做是沒問題的,一旦新的hdfs被認爲沒問題,完成升級。

·         若是須要回退到老的版本:

o   關閉集羣而且安裝以前的hadoop

o   運行rollback命令hdfs namenode –rollback

o   –rollback啓動cluster start-dfs.sh –rollback

當更新到新的HDFS,須要刪除爲新版本保留的路徑。若是namenode在更新的時候碰到一個保留的路徑。就會輸出錯誤:

/.reserved is a reserved path and .snapshot is a reserved path component in this version of HDFS. Please rollback and delete or rename this path, or upgrade with the -renameReserved [key-value pairs] option to automatically rename these paths during upgrade.

使用-upgrade -renameReserved [optional key-value pairs]若是出現衝突那麼會自動重命名好比,.snapshot 變爲.my-snapshot 而且.reserved 變爲 .my-reserved-upgrade -renameReserved .snapshot=.my-snapshot,.reserved=.my-reserved.

若是-renameReserved後面沒有kv對,namenode會自動加一個後綴.<LAYOUT-VERSION>.UPGRADE_RENAMED, e.g. .snapshot.-51.UPGRADE_RENAMED

推薦在升級以前先運行hdfs dfsadmin –saveNamespace。若是edit log指向的文件被自動重命名那麼就會有數據一致性問題。

2.17 Datanode熱切換磁盤

Datanode支持熱切換。用戶能夠增長或者替換HDFS數據卷,可是不須要關閉datanode。熱切換過程:

·         若是有新的存儲目錄,用戶能夠格式化,而且mount

·         用戶更新修改datanode配置dfs.datanote.data.dir

·         運行dfsadmin -reconfig datanode HOST:PORT start從新配置。而後能夠經過命令dfsadmin -reconfig datanode HOST:PORT status查看從新配置的運行狀態。

·         一旦從新配置任務完成,用戶能夠安全的umount老的數據卷。

2.18 文件權限和安全性

文件權限設計和其餘的linux平臺的文件系統相似。如今只用於限制簡單的文件權限。啓動namenode 的用戶是HDFS的超級用戶。將來的版本HDFS會支持網絡驗證協議,相似Kerberos而且加密數據傳輸。

2.19 可擴展性

Hadoop當前一個集羣可能有上千個nodeHDFS每一個cluster有一個namenode。當前namenode 的內存使用時主要的可擴展性限制。對於很是龐大的集羣來講,增長平均文件的大小,能夠增長cluster 的大小,可是又不會消耗太多內存。默認配置不使用於很是大的集羣。

2.20 相關閱讀

  • Hadoop Site: The home page for the Apache Hadoop site.
  • Hadoop Wiki: The home page (FrontPage) for the Hadoop Wiki. Unlike the released documentation, which is part of Hadoop source tree, Hadoop Wiki is regularly edited by Hadoop Community.
  • FAQ: The FAQ Wiki page.
  • Hadoop JavaDoc API.
  • Hadoop User Mailing List: user[at]hadoop.apache.org.
  • Explore hdfs-default.xml. It includes brief description of most of the configuration variables available.
  • HDFS Commands Guide: HDFS commands usage.
相關文章
相關標籤/搜索