1、首先修改 hdfs-site.xml 文件中的如下配置,不同路径用英文逗号相隔
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///${hadoop.tmp.dir}/dfs/data1,file:///${hadoop.tmp.dir}/dfs/data2</value>
</property>
2、修改datanode写入策略,该配置默认是轮训,我们要改为以剩余空间考虑写入某块磁盘
<property>
<name>dfs.datanode.fsdataset.volume.choosing.policy</name>
<value>org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy</value>
</property>
当然我们配置的写入路径并不是一定的,会有两个配置决定具体的策略
dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold
该配置默认10G,具体配置值以字节为单位,表示当集群所有的存储数据磁盘中最大与最小两块盘的剩余容量在10G以内就是用轮训策略
dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction
该配置默认0.75f,表示有多少比例的数据副本存放在其他剩余空间多的磁盘中
3、将配置文件分发所有结点,分发的时候注意,只有配置了新磁盘的结点才需要分发,没有新增磁盘的不要分发,不然会报一个磁盘检查错误
配置结束正常启动集群就好了,注意正常启动!!不需要格式化namenode,启动完之后去查看新磁盘挂载的目录,会发现已经有了东西