HDFS Federation(HDFS 聯邦)(Hadoop2.3)
最早接觸Federation這個詞還是第一家公司用的DB2聯邦資料庫。
第一代Hadoop HDFS:
結構上由一個namenode和眾多datanode組成。
功能上劃分為namespace和block storage service 兩部分。
所謂的HDFS Federation就是有多個namenode(或者說namespace)。
如圖:
這裡有block pool的概念,每一個namespace都有一個pool,datanodes會儲存叢集中所有的pool,block pool之間的管理是獨立的,一個namespace生成一個block id時不需要跟其它namespace協調,一個namenode的失敗也不會影響到datanode對其它namenodes的服務。
一個namespace和它的blockpool作為一個管理單元,刪除後,對應於datanodes中的pool也會被刪除。叢集升級時,這個管理單元也獨立升級。
這裡引入clusterID來標示叢集所有節點。當一個namenode format之後,這個id生成,叢集中其它namenode的format也用這個id。
多namenode的好處:
1、namespace可擴充套件性。原來只有hdfs儲存可以水平擴充套件,現在namenode也可以做到了,減輕單namenode的記憶體和服務壓力。
2、效能方面。多個namenode可以提高讀寫時的吞吐量。
3、隔離性。隔離不同型別的程式,一定程度上控制資源的分配。
聯邦的配置:
聯邦的配置是向後相容的,允許在不改變任何配置的情況下讓當前執行的單節點環境轉換成聯邦環境。新的配置方案確保了在叢集環境中的所有節點的配置檔案都是相同的。
這裡引入了NameServiceID概念,作為namenodes們的字尾。
第一步:配置屬性dfs.nameservices,用於datanodes們識別namenodes。
第二步:為每個namenode加入這個字尾。
例子:
<configuration> <property> <name>dfs.nameservices</name> <value>ns1,ns2</value> </property> <property> <name>dfs.namenode.rpc-address.ns1</name> <value>nn-host1:rpc-port</value> </property> <property> <name>dfs.namenode.http-address.ns1</name> <value>nn-host1:http-port</value> </property> <property> <name>dfs.namenode.secondaryhttp-address.ns1</name> <value>snn-host1:http-port</value> </property> <property> <name>dfs.namenode.rpc-address.ns2</name> <value>nn-host2:rpc-port</value> </property> <property> <name>dfs.namenode.http-address.ns2</name> <value>nn-host2:http-port</value> </property> <property> <name>dfs.namenode.secondaryhttp-address.ns2</name> <value>snn-host2:http-port</value> </property> .... Other common configuration ... </configuration>
管理叢集:
啟動和停止用start-dfs.sh和stop-dfs.sh
跟第一代hadoop不同的是:這裡允許叢集中任何一臺有效節點執行這兩個命令,根據配置啟動namenode和datanode,而第一代hadoop則是以執行啟動指令碼的節點為單一namenode。
均衡器:
由於多namenode了,均衡器也做了改變,執行命令:
"$HADOOP_PREFIX"/bin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script "$bin"/hdfs start balancer [-policy <policy>]
策略可以是node,之前也有的,增加了block pool,既在datanode級別又在block pool級別均衡。
下線節點:
跟之前版本的類似,把需要下線的節點新增到每臺namenode的exclude檔案中。
第一步:
"$HADOOP_PREFIX"/bin/distributed-exclude.sh <exclude_file>
第二步:
"$HADOOP_PREFIX"/bin/refresh-namenodes.sh
叢集控制檯:
http://<any_nn_host:port>/dfsclusterhealth.jsp
相關文章
- 模組聯邦-vite-plugin-federationVitePlugin
- Router-Based HDFS Federation 在滴滴大資料的應用大資料
- 去中心化元件共享方案 —— Webpack Module Federation(模組聯邦)中心化元件Web
- HDFS 05 - HDFS 常用的 Java API 操作JavaAPI
- hdfs命令
- HDFS原理
- HDFS 09 - HDFS NameNode 的高可用機制
- Hadoop Shell命令 |HDFS Shell命令| HDFS 命令Hadoop
- HDFS shell命令
- Hadoop–HDFSHadoop
- HDFS常用操作
- HDFS Shell操作
- HDFS Architecture
- HDFS原始碼解析系列一——HDFS通訊協議原始碼協議
- HDFS 命令:用於管理HDFS的Hadoop Shell命令大全Hadoop
- HDFS 07 - HDFS 效能調優之 合併小檔案
- HDFS 塊和 Input Splits 的區別與聯絡
- hdfs學習(二)
- hdfs學習(三)
- HDFS入門概述
- 4、hdfs api使用API
- HDFS2.0原理
- Hdfs儲存策略
- HDFS資料平衡
- Hadoop HDFS(二)Hadoop
- Hadoop HDFS(一)Hadoop
- HDFS read and write
- hadoop命令——hdfsHadoop
- HDFS的架構架構
- HDFS 05 - HDFS 的後設資料管理(FSImage、EditLog、Checkpoint)
- Mysql增量寫入Hdfs(二) --Storm+hdfs的流式處理MySqlORM
- HDFS原始碼解析:教你用HDFS客戶端寫資料原始碼客戶端
- HDFS 常用命令
- HDFS寫過程分析
- HDFS架構及原理架構
- hdfs dfsadmin -fetchImage
- HDFS短路讀詳解
- HDFS balance策略詳解