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

