HDFS挂载云盘,免重启扩容

最近公司由于业务扩展需要增加云盘,看到一个大佬的方法很实用,故分享一波,如有侵权联系删除!

大佬链接:HDFS免重启挂载新磁盘_hadoop高可用免重启挂载新磁盘_选手一号位的博客-CSDN博客

具体操作

这里假设已有集群,需要加磁盘的节点为node2。运维也已经帮我们挂载好磁盘,新磁盘目录为/data2。
第一步:新增目录

在node2上添加新目录,数据目录和元数据目录

mkdir -p /data2/soft/hadoop/tmp/dfs/data

mkdir -p /data2/soft/hadoop/tmp/dfs/name
第二步:修改配置

修改节点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
第四步:平衡数据

HDFS数据本身并不总是均匀的放置在DataNode中,在添加新磁盘后,我们需要重新平衡下数据,HDFS为我们提供了一个工具,可以分析数据块放的位置和跨 DataNode 重新平衡数据:balancer

官方文档:hdfs balancer
 

hdfs balancer
	[-threshold <threshold>]:磁盘容量百分百,判断集群是否平衡的目标参数,每一个 datanode 存储使用率和集群总存储使用率的差值都应该小于这个阀值,越小越平衡,默认10,越大平衡越快。
	[-policy <policy>]:datanode(默认):如果每个数据节点都是平衡的,则集群是平衡的。blockpool:如果每个数据节点中的每个块池都是平衡的,则集群是平衡的。
	[-exclude [-f <hosts-file> | <comma-separated list of hosts>]]:将指定的数据节点排除在平衡器的平衡之外。
	[-include [-f <hosts-file> | <comma-separated list of hosts>]]:仅包括要由平衡器平衡的指定数据节点。
	[-idleiterations <idleiterations>]:rebalanecing server启动的线程数,默认5。

平衡前操作

在平衡时受带宽影响,每个数据节点每秒使用的最大字节数是有限的,所以我们先临时设置这个值,此值会覆盖hdfs-site.xml中dfs.datanode.balance.bandwidthPerSec的值,默认是1M,本操作命令不会持久,命令如下:

hdfs dfsadmin -setBalancerBandwidth 104857600

其他值:1024*1024=1M(1048576),52428800=50M,104857600=100M

开始平衡

本次执行平衡命令,磁盘平衡目标数为20
nohup hdfs balancer -threshold 20 > balancer.log &

其他平衡命令

平衡所有节点
nohup hdfs balancer > balancer.log &

平衡指定节点,磁盘平衡目标数为10
nohup hdfs balancer -include node7,node9,node10,node11 -threshold 10 > balancer.log &

平衡指定节点,磁盘平衡目标数,启动线程数为10
nohup hdfs balancer -include node7,node9,node10,node11 -threshold 10 -idleiterations 10 > balancer.log &

注(可选):一般在平衡时,可以先停止存储比较高的节点上的NodeManager,这样在该节点上就不会受本地NodeManager落数据到本地,使得本地存储迅速增加的影响。

yarn-daemon.sh stop nodemanager
yarn-daemon.sh start nodemanager
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值