我們的HDFS集群中有11個(gè)DataNode蒙兰,初始時(shí)每臺(tái)機(jī)器僅上了一塊2.4T大的SAS盤/dev/sda镜沽,數(shù)據(jù)分區(qū)1.8T炊昆。上線運(yùn)行4個(gè)月桨吊,集群存儲(chǔ)總使用量超過了70%,無(wú)法滿足日益增長(zhǎng)的存儲(chǔ)需求凤巨,需要改進(jìn)视乐。
之前我們的HDFS一直采用默認(rèn)的塊副本數(shù)3。現(xiàn)在來看磅甩,有兩個(gè)節(jié)點(diǎn)同時(shí)出現(xiàn)問題的概率非常小,可以降低為2姥卢,釋放一些空間卷要。
另外,加盤也是十分有必要的独榴。HDFS自帶冗余機(jī)制僧叉,所以數(shù)據(jù)盤都不用做RAID。每臺(tái)機(jī)器上面還有3個(gè)空閑盤位棺榔,直接插滿瓶堕。
修改副本數(shù)
在CM的HDFS配置中找到dfs.replication項(xiàng),修改為2症歇,重啟HDFS郎笆。
但這樣只能保證新寫入的塊副本數(shù)變?yōu)?,原有塊仍然是3副本忘晤,因此還需要執(zhí)行命令hdfs dfs -setrep 2 -R -w /dw
宛蚓。其中/dw是指定的路徑,-R參數(shù)則表示包含子目錄设塔。
通過執(zhí)行hdfs fsck /dw
命令凄吏,觀察“Average block replication”一項(xiàng),可以看出副本調(diào)整的過程是否已經(jīng)完成闰蛔。
存儲(chǔ)擴(kuò)容
每個(gè)節(jié)點(diǎn)各加一塊1.2T的盤/dev/sdb痕钢,以及兩塊2.4T的盤/dev/sdc、/dev/sdd序六。然后將這些盤配置到HDFS中作為數(shù)據(jù)盤來使用任连。
由于每塊盤的處理流程都相同,因此僅以/dev/sdb為例來描述例诀。
- 創(chuàng)建ext4文件系統(tǒng)
執(zhí)行:mkfs -t ext4 /dev/sdb
课梳。如果沒有創(chuàng)建文件系統(tǒng)距辆,mount時(shí)會(huì)報(bào)錯(cuò):Unknown filesystem type '(null)'。
因?yàn)橛猛揪褪羌僅DFS存儲(chǔ)暮刃,無(wú)需分區(qū)跨算,所以直接省略了fdisk的步驟。在Linux中椭懊,磁盤不分區(qū)也是可以用的诸蚕。 - 創(chuàng)建數(shù)據(jù)目錄,并更改其權(quán)限和所有者
執(zhí)行:
mkdir -p /dfs_local/sdb
chmod -R 777 /dfs_local/sdb
chown -R hdfs:hadoop /dfs_local/sdb
hdfs-site.xml中默認(rèn)指定的權(quán)限是755氧猬,但可以通過dfs.datanode.data.dir.perm配置項(xiàng)來更改背犯。 - 掛載
簡(jiǎn)單地執(zhí)行mount命令就可以掛載。但穩(wěn)妥起見盅抚,應(yīng)該配置成開機(jī)自動(dòng)掛載漠魏。
修改/etc/fstab文件,加入如下一行:
/dev/sdb /dfs_local/sdb ext4 defaults 0 0
普通數(shù)據(jù)盤既不需要備份也不需要fsck檢查妄均,因此dump和pass都設(shè)為0柱锹。
保存后,執(zhí)行mount -a
命令丰包,使其立即生效禁熏。使用df -h
可以查看是否成功掛載。 - 加入HDFS
進(jìn)入CM界面邑彪,找到HDFS數(shù)據(jù)目錄的配置項(xiàng)dfs.data.dir瞧毙,加入上面設(shè)定的掛載路徑,刷新配置即可寄症,無(wú)需重啟服務(wù)宙彪。