[HDFS Manual] CH6 HDFS Federation

来源:https://www.cnblogs.com/Amaranthus/archive/2018/03/30/8676742.html
-Advertisement-
Play Games

HDFS Federation HDFS Federation. 1 1 Background. 1 2.多個namenode/namespace. 1 2.1 關鍵好處... 1 3 聯合配置... 1 3.1 配置... 1 3.2 格式化namenode. 1 3.3 更新老的release並 ...


HDFS Federation

HDFS Federation. 1

1 Background. 1

2.多個namenode/namespace. 1

2.1 關鍵好處... 1

3 聯合配置... 1

3.1 配置... 1

3.2 格式化namenode. 1

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

3.4 增加新的namenode到已經存在的cluster. 1

4 管理集群... 1

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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這幾天折騰了很久,整合了一套介面自動化的持續集成工具,先從最基礎的運行Jmeter說起。由於我是用Docker部署的持續集成環境,所以介面運行必須在伺服器上 一:在Linux伺服器先安裝jdk 1:先下載jdk-8u74-linux-x64.tar.gz,上傳到伺服器,這裡上傳文件用到了ubuntu ...
  • 前言:環境:centos6.5sed版本:GNU sed version 4.2.1本文的代碼都是在這個環境下驗證的。一、簡介sed(Stream Editor)意為流編輯器,是Unix常見的命令行程式。是Bell實驗室的 Lee E.McMahon 在1973年到1974年之間開發完成,目前可以在... ...
  • vim /etc/ssh/sshd_config 修改參數UsePAM 為yes UsePAM yes 重啟sshd服務 vim /etc/pam.d/login 在第二行添加 auth required pam_tally2.so deny=3 lock_time=600 even_deny_ro ...
  • 易升是微軟推出的win10升級工具。用戶可通過易升一鍵升級win10。 因為我的電腦已經是win10的系統,所以我也不需要升級。也不想升級,因為我從網上瞭解到升級後的系統反而沒有升級前的好用。 微軟的初衷是好的,但是這個win10易升太流氓了,直接不經過你的允許強制安裝和升級你的系統。而且升級系統總 ...
  • --用戶定義函數的分類: /* 1.標量函數 2.表值函數 2.1內聯表值函數 返回單個SELECT語句, 它沒有相關的返回變數和函數體 2.2多語句表值函數 是視圖和存儲過程的結合 可嵌套 */ 執行: 結果: 執行: 結果: 多語句表值函數 執行: 結果: ...
  • 最近從在學習MySQL資料庫,遇到一些問題,有些解決了,有些還未找到答案,本篇作為學習筆記,未解決的問題等後續有答案再補充,也請走過路過的大牛們指點一二; 問題一:Java程式查詢MySQL表數據,由於MySQL預設將查詢結果全部載入到記憶體中,數據量比較大時,會報OOM,以下是解決這個問題過程中在網 ...
  • MySQL 一種關係型資料庫 database 資料庫,簡稱DB databases 資料庫的複數,代表多個資料庫 net 網路/服務 start 啟動 stop 停止 root MySQL資料庫中的超級管理員 password 密碼 localhost 本地伺服器/本地主機 prompt 改變DO ...
  • 10053事件:Event 10053 is an internal event that externalises some of the decisions made by the optimizer in to a trace file. 對於10053更多的介紹,這裡不再重覆 註:使用100 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...