HDFS免重啟掛載新磁盤
在生產(chǎn)環(huán)境中,集群節(jié)點磁盤大小不同,其使用率也會不同,HDFS雖有均衡策略,但也會有數(shù)據(jù)不平衡的情況,有些節(jié)點磁盤就會被打滿,然后這個節(jié)點就不健康了(Unhealthy Nodes),Yarn的磁盤閾值檢查(yarn.nodemanager.disk-health-checker.min-healthy-disks),默認是90%,超過這個值就會不健康,集群有個節(jié)點不健康,就會導致任務運行緩慢,之后任務再擠壓,Yarn資源被集中占用,最終影響上層服務。
問題
磁盤空間不足,待擴容,可動態(tài)增刪磁盤
yarn資源不足,待優(yōu)化,可動態(tài)調(diào)整
本篇內(nèi)容只添加新磁盤,yarn資源優(yōu)化我們在另一篇文章再專門詳解。
官方說明
DataNode Hot Swap Drive
Datanode supports hot swappable drives. The user can add or replace HDFS data volumes without shutting down the DataNode. The following briefly describes the typical hot swapping drive procedure:
If there are new storage directories, the user should format them and mount them appropriately.
The user updates the DataNode configuration
dfs.datanode.data.dirto reflect the data volume directories that will be actively in use.The user runs
dfsadmin -reconfig datanode HOST:PORT startto start the reconfiguration process. The user can usedfsadmin -reconfig datanode HOST:PORT statusto query the running status of the reconfiguration task.Once the reconfiguration task has completed, the user can safely
umountthe removed data volume directories and physically remove the disks.
經(jīng)過谷歌翻譯如下:
DataNode 熱插拔驅(qū)動器
Datanode 支持熱插拔驅(qū)動器。用戶可以在不關閉 DataNode 的情況下添加或替換 HDFS 數(shù)據(jù)卷。下面簡要介紹典型的熱插拔驅(qū)動器過程:
如果有新的存儲目錄,用戶應該格式化它們并適當?shù)貟燧d它們。
用戶更新 DataNode 配置
dfs.datanode.data.dir以反映將被積極使用的數(shù)據(jù)卷目錄。用戶運行
dfsadmin -reconfig datanode HOST:PORT start來啟動重新配置過程。用戶可以使用dfsadmin -reconfig datanode HOST:PORT status查詢重配置任務的運行狀態(tài)。重新配置任務完成后,用戶可以安全地卸載已移除的數(shù)據(jù)卷目錄并物理移除磁盤。
我們先說添加新的磁盤,大意就是不需要重啟任何節(jié)點,在需要添加磁盤的節(jié)點上,添加好磁盤,這個需要運維操作,就是掛載一個新目錄,文檔中是說要配置DataNode的目錄,這里我們建議加上NameNode的目錄dfs.namenode.name.dir,然后再執(zhí)行一個使配置生效的命令,最后查看配置狀態(tài)。
具體操作
這里假設已有集群,需要加磁盤的節(jié)點為node2。運維也已經(jīng)幫我們掛載好磁盤,新磁盤目錄為/data2。
第一步:新增目錄
在node2上添加新目錄,數(shù)據(jù)目錄和元數(shù)據(jù)目錄
mkdir -p /data2/soft/hadoop/tmp/dfs/data
mkdir -p /data2/soft/hadoop/tmp/dfs/name
第二步:修改配置
修改節(jié)點node2的配置文件hdfs-site.xml,主要兩個屬性
修改前
<!--指定hdfs中namenode的存儲位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/soft/hadoop/tmp/dfs/name</value>
</property>
<!--指定hdfs中datanode的存儲位置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/soft/hadoop/tmp/dfs/data</value>
</property>修改后
<!--指定hdfs中namenode的存儲位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/soft/hadoop/tmp/dfs/name,/data2/soft/hadoop/tmp/dfs/name</value>
</property>
<!--指定hdfs中datanode的存儲位置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/soft/hadoop/tmp/dfs/data,/data2/soft/hadoop/tmp/dfs/data</value>
</property>第三步:使配置生效
重新配置DataNode的配置,使配置生效。
hdfs dfsadmin -reconfig datanode node2:50020 start
hdfs dfsadmin -reconfig datanode node2:50020 status
第四步:平衡數(shù)據(jù)
HDFS數(shù)據(jù)本身并不總是均勻的放置在DataNode中,在添加新磁盤后,我們需要重新平衡下數(shù)據(jù),HDFS為我們提供了一個工具,可以分析數(shù)據(jù)塊放的位置和跨 DataNode 重新平衡數(shù)據(jù):balancer
hdfs balancer [-threshold <threshold>]:磁盤容量百分百,判斷集群是否平衡的目標參數(shù),每一個 datanode 存儲使用率和集群總存儲使用率的差值都應該小于這個閥值,越小越平衡,默認10,越大平衡越快。 [-policy <policy>]:datanode(默認):如果每個數(shù)據(jù)節(jié)點都是平衡的,則集群是平衡的。blockpool:如果每個數(shù)據(jù)節(jié)點中的每個塊池都是平衡的,則集群是平衡的。 [-exclude [-f <hosts-file> | <comma-separated list of hosts>]]:將指定的數(shù)據(jù)節(jié)點排除在平衡器的平衡之外。 [-include [-f <hosts-file> | <comma-separated list of hosts>]]:僅包括要由平衡器平衡的指定數(shù)據(jù)節(jié)點。 [-idleiterations <idleiterations>]:rebalanecing server啟動的線程數(shù),默認5。
平衡前操作
在平衡時受帶寬影響,每個數(shù)據(jù)節(jié)點每秒使用的最大字節(jié)數(shù)是有限的,所以我們先臨時設置這個值,此值會覆蓋hdfs-site.xml中dfs.datanode.balance.bandwidthPerSec的值,默認是1M,本操作命令不會持久,命令如下:
hdfs dfsadmin -setBalancerBandwidth 104857600
其他值:1024*1024=1M(1048576),52428800=50M,104857600=100M
開始平衡
本次執(zhí)行平衡命令,磁盤平衡目標數(shù)為20 nohup hdfs balancer -threshold 20 > balancer.log &
其他平衡命令
平衡所有節(jié)點 nohup hdfs balancer > balancer.log &
平衡指定節(jié)點,磁盤平衡目標數(shù)為10 nohup hdfs balancer -include node7,node9,node10,node11 -threshold 10 > balancer.log &
平衡指定節(jié)點,磁盤平衡目標數(shù),啟動線程數(shù)為10 nohup hdfs balancer -include node7,node9,node10,node11 -threshold 10 -idleiterations 10 > balancer.log &
注(可選):一般在平衡時,可以先停止存儲比較高的節(jié)點上的NodeManager,這樣在該節(jié)點上就不會受本地NodeManager落數(shù)據(jù)到本地,使得本地存儲迅速增加的影響。
yarn-daemon.sh stop nodemanager yarn-daemon.sh start nodemanager
更多關于HDFS免重啟掛載新磁盤的文章請查看下面的相關鏈接
相關文章
vscode 多設備通過ssh登錄遠程服務器免密登錄的解決方案
使用VSCode連接遠程服務器時,頻繁輸入密碼確實是一件麻煩事,本文介紹了如何通過生成SSH密鑰對的方式,實現(xiàn)免密登錄,此方法不僅適用于VSCode,也適用于任何支持SSH密鑰認證的遠程連接場景,大大提升工作效率2024-11-11
HTTP常見的狀態(tài)碼HTTP Status Code
這篇文章主要介紹了HTTP常見的狀態(tài)碼HTTP Status Code2017-01-01
TCP性能調(diào)優(yōu)實現(xiàn)原理及過程解析
這篇文章主要介紹了TCP性能調(diào)優(yōu)實現(xiàn)原理及過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11
如何解決啟動hadoop集群沒有SecondaryNode和DataNode和NameNode問題
本文提供了Hadoop集群中缺少SecondaryNode、DataNode和NameNode時的解決方案,包括環(huán)境變量配置、文件刪除和格式化namenode等操作,希望對使用Hadoop的用戶有所幫助2024-10-10
便宜vps多是哪些技術(shù)架構(gòu)方式(VPS分割架構(gòu)是怎么超售的)
對于vps服務器租用,一些人們可能比較注重vps服務器價格,那么,了解和清楚哪一類vps服務器比較便宜是有必要的,這樣我們就有針對的去選用購買自己需要的便宜vps服務器2015-09-09
監(jiān)控服務調(diào)用微信API如何給自己發(fā)告警信息
本文是腳本之家的小編給大家介紹監(jiān)控服務調(diào)用微信API如何給自己發(fā)告警信息,當監(jiān)控的設備發(fā)生故障時可以通過微信告警。感興趣的朋友可以參考下2015-09-09

