[HDFS Manual] CH6 HDFS Federation

HDFS Federation

HDFS Federation. 1node

1 Background. 1web

2.多個namenode/namespace. 1jsp

2.1 關鍵好處... 1性能

3 聯合配置... 1spa

3.1 配置... 1設計

3.2 格式化namenode. 1orm

3.3 更新老的release而且配置聯合... 1blog

3.4 增長新的namenode到已經存在的cluster. 1進程

4 管理集羣... 1rpc

4.1 啓動和關閉集羣... 1

4.2 均衡器... 1

4.3 中止運行... 1

4.4 Cluster Web Console. 1

 

1 Background

HDFS主要有2

·         Namespace

o   由目錄,文件和塊組成

o   支持全部namespace相關的文件系統操做,create,delete,modify和查看文件和目錄

·         Block 存儲服務

o   Block管理

§  提供datanode clusterc成員,經過註冊和按期心跳控制。

§  處理block report而且維護block位置。

§  Block的相關操做,好比建立,修改,刪除和獲取block位置。

§  管理副本位置,block複製,若是超出刪除block副本。

o   Storage 用來提供保存block,保存在本地文件系統,容許讀寫訪問。

以前的HDFS體系結構容許一個namespace。在這個配置,一個namenode管理namespaceHDFS聯合支持多個namenodenamespace

2.多個namenode/namespace

爲了水平擴展name service,聯合使用多個獨立的namenode/namespaceNamenode是聯合的,獨立的不須要互相協助。Datanode做爲通用存儲來保存全部的namenodeblock。每一個datanode會在全部的namenode中註冊。Datanode按期的發送心跳和block report。也處理來自namenode 的命令。

用戶使用ViewFS來建立我的的namespace viewViewFs客戶端的mount table同樣。

Block Pool

Block pool是屬於一個namespaceblock集合。Datanode保存了全部clusterblock poolblock。每一個block pool都是獨立的。不須要其餘namespace協助,容許一個namespace生成一個新的block id。一個Namenode錯誤不會阻止datanode爲其餘namenode服務。

Namespaceblock pool一塊兒稱爲NameSpace Volume。是一個管理單元。當namenode/namespace被刪除,相關的block pool也會被刪除。當集羣升級,每一個namespace volume也是做爲一個單元被更新的。

ClusterID

ClusterID用來標識cluster中全部的node。當namenode被格式化,標識符能夠提供也能夠自動生成。這個ID須要用來格式化其餘namenode

2.1 關鍵好處

·         Namespace擴展聯合增長了namespace的水平擴展。大的部署或者大量小文件的集羣能夠經過增長namenode得到好處。

·         性能文件系統吞吐不會被單個namenode限制。另外增長namenode會擴展文件系統的讀寫吞吐量。

·         隔離單個namenode不會對用戶進行隔離。好比,一個應用overload namenode會致使其餘應用性能降低。使用多個namenode,不一樣的應用分類,能夠隔離到不一樣的namenode上。

3 聯合配置

聯合配置是向後兼容的而且容許已經存在的單個namenode配置,不須要其餘修改。新的配置被設計用來全部的node均可以使用同樣的配置,不須要node不一樣的配置。

聯合增長了一個新的NameServiceIDNamnode和相關的secondary/backup/checkpointer node都屬於一個nameserviceid。爲了支持一個配置文件,namenodesecondary/backup/checkpointer node使用nameserviceid前綴。

3.1 配置

步驟1:增長dfs.nameservices參數來配置使用逗號分隔。被datanode使用來決定cluster中的namenode

步驟2:對於每一個namenodesecondary/backup/checkpointer node增長如下配置使用nameserviceid做爲前綴:

Daemon

Configuration Parameter

Namenode

dfs.namenode.rpc-address 
dfs.namenode.servicerpc-address 
dfs.namenode.http-address
dfs.namenode.https-address
dfs.namenode.keytab.file
dfs.namenode.name.dir
dfs.namenode.edits.dir
dfs.namenode.checkpoint.dir
dfs.namenode.checkpoint.edits.dir

Secondary Namenode

dfs.namenode.secondary.http-address
dfs.secondary.namenode.keytab.file

BackupNode

dfs.namenode.backup.address
dfs.secondary.namenode.keytab.file

配置例子:

3.2 格式化namenode

步驟1:格式化namenode使用如下命令:
[hdfs]$ $HADOOP_HOME/bin/hdfs namenode -format [-clusterId <cluster_id>]
選擇一個文藝的clusterid不能和環境中的其餘cluster衝突。若是cluster_id不提供會自動生成一個惟一的cluster_id

步驟2:格式化其餘namenode
[hdfs]$ $HADOOP_HOME/bin/hdfs namenode -format -clusterId <cluster_id>
注意這裏的clusterid要和上面的clusterid同樣。若是不一樣,另外的namenode不是聯合集羣的一部分。

3.3 更新老的release而且配置聯合

老的release只支持一個namenode。更新cluster到新的release而且提供一個clusterid
[hdfs]$ $HADOOP_HOME/bin/hdfs --daemon start namenode -upgrade -clusterId <cluster_ID>

若是沒有提供會自動生成。

3.4 增長新的namenode到已經存在的cluster

步驟以下:

·         增長dfs.nameservices配置

·         使用nameserviceid前綴來更新配置。

·         增長一個新的namenode

·         把配置文件發到全部的node

·         啓動新的namenodesecondary/backup

·         刷新datanode獲取新的namenode
[hdfs]$ $HADOOP_HOME/bin/hdfs dfsadmin -refreshNamenodes <datanode_host_name>:<datanode_rpc_port>

4 管理集羣

4.1 啓動和關閉集羣

啓動集羣命令:
[hdfs]$ $HADOOP_HOME/sbin/start-dfs.sh

關閉集羣命令:
[hdfs]$ $HADOOP_HOME/sbin/stop-dfs.sh

這個命令能夠集羣中的任何節點運行。命令使用配置決定集羣的namenode,而後在這些node啓動namenode進程。Workfile 中的node 啓動Datanode。能夠參考這個腳本設計本身的腳原本啓動和關閉集羣。

4.2 均衡器

均衡器由於要運行在多個namenode被改變。均衡器可使用如下方法啓動:
[hdfs]$ $HADOOP_HOME/bin/hdfs --daemon start balancer [-policy <policy>]

Policy參數有2個:

·         Datanode 這個是默認的策略,均衡datanode級別的存儲。和之前差很少。

·         Blockpool會均衡blockpool級別,也會均衡datanode級別。

注意均衡器只會均衡data不會均衡namespace

4.3 中止運行

中止運行和以前的相似,node須要被停運的,會增長到exclude文件中。當一個datanode中的全部namenode都停運,那麼datanode被認爲停運了。

步驟1:複製exclude文件到全部的namenode,並執行一下命令:
[hdfs]$ $HADOOP_HOME/sbin/distribute-exclude.sh <exclude_file>

步驟2:刷新全部的namenode,獲取新的exclude文件的內容:
[hdfs]$ $HADOOP_HOME/sbin/refresh-namenodes.sh

上面的命令使用HDFS配置來決定clusternamenode而且刷新exclude文件。

4.4 Cluster Web Console

namenode狀態web page類似,當使用聯合可使用cluster web Console能夠經過http://<any_nn_host:port>/dfsclusterhealth.jsp監控聯合cluster。任何cluster中的namenode均可以在這個web中訪問。

這個Cluster Web Console提供如下信息:

·         Cluster summary顯示了文件個數,block個數,總配置的存儲容量和可用的,已經使用的存儲。

·         列出namenodesummaryb包括文件個數,block,丟失的blocklivedead datanode。這個能夠經過namenodeweb UI訪問。

·         中止運行的datanode

相關文章
相關標籤/搜索