1. 今天在Ambari web界面中注意到警告:
  2. 我去,使用了92%,这还得了?还让不让人学习了?
  3. 最开始我认为是以前朋友将namenode节点也设置为了datanode节点的原因,导致namenode“压力”大。但是细一看,不对啊,也不可能才52.7GB总容量啊,开玩笑呢。
  4. 于是乎怀疑Ambari。。。就去“亲生的”50070一看:
  5. 纳闷了,怎么这么少?然后查看了各个机器的硬盘信息发现两个容量小的节点的HDFS容量值和根挂载点的容量相同
  6. 然后看了看hdfs-site的dfs.datanode.data.dir配置,确实是挂载在/下的。
  7. 考虑修改上述配置项

如果因为设计问题,需要对dfs.data.dir重新指定,则在指定好后,一定要对集群进行重新格式,并且要保证格式化成功,才能保证后续服务的正常启动。这样一来,就会把原有的数据格式化掉

不知道是否说的正确【应该是不正确,hadoop不至于这么傻吧】,为了减少折腾,我还是不修改好了,试下给root扩容吧。


2019/5/20补充:更简单的办法是设置多个dfs.data.dir 8.

总体过程:

把/home内容备份,然后将/home文件系统所在的逻辑卷删除,扩大/root文件系统,新建/home ,恢复/home内容

1.查看分区信息

df -h

使用vgdisplay可以查看未使用的空间

2.备份home分区文件

tar cvf /tmp/home.tar /home

3.终止使用/home文件系统的进程,卸载/home

fuser -km /home/ umount /home

4.删除/home所在的lv【后来我才知道,可以使用lvreduce -L释放指定大小的空间。但是提示可能会损坏数据】

lvremove /dev/mapper/VolGroup-lv_home

查看hdfs服务是否加载 查看hdfs容量_横向扩容

5.扩展/root所在的lv,增加2048G

lvextend -L +2048G /dev/mapper/VolGroup-lv_root

查看hdfs服务是否加载 查看hdfs容量_hadoop_02

6.扩展/root文件系统

xfs_growfs /dev/mapper/VolGroup-lv_root

报错:

查看hdfs服务是否加载 查看hdfs容量_hadoop_03

看来我这里不是XFS文件系统

查看hdfs服务是否加载 查看hdfs容量_查看hdfs服务是否加载_04

df可以使用参数T查看文件系统类型:

查看hdfs服务是否加载 查看hdfs容量_查看hdfs服务是否加载_05

centos7之前的版本默认文件系统是EXT4【可扩可缩】,之后是XFS【目前只能扩容】

对于EXT4以及3,2。应该使用resize2fs:

resize2fs /dev/mapper/VolGroup-lv_root【如果改变的容量大,需要些时间】

真的太慢了,要不是我机智的刷新50070端口,我就会认为远程网络不通杀进程了

查看hdfs服务是否加载 查看hdfs容量_hadoop_06

查看hdfs服务是否加载 查看hdfs容量_HDFS容量_07

查看hdfs服务是否加载 查看hdfs容量_hdfs-site.xml_08

7.查看未用空间

vgdisplay

查看hdfs服务是否加载 查看hdfs容量_hdfs-site.xml_09

8.重新创建home lv

lvcreate -L 1617G -n /dev/mapper/VolGroup-lv_home

8. 创建文件系统并挂载

mkfs.ext4 /dev/mapper/VolGroup-lv_home

查看hdfs服务是否加载 查看hdfs容量_hadoop_10

mount /dev/mapper/VolGroup-lv_home /home

df -h检查一波

查看hdfs服务是否加载 查看hdfs容量_hadoop_11

9.home文件恢复

tar -xvf /tmp/home.tar -C /home/

cd /home/home/

mv * …/

最终结果:

  1. 容量
  2. 集群状态:【淡定,毕竟之前有卸载/home】
  3. 重启服务,多谢老天保佑,全部成功! 目前集群运行正常

如果想移除一个datanode节点:

1.)/etc/hadoop/)下新建excludes文件,并写入待删除DataNode的ip或域名 2.)修改hdfs-site中的dfs.hosts.exclude属性,value值填写1.)中的exclude文件的绝对路径 3.)在NameNode上刷新所有DataNode 移除ataNode之后:系统会重新均衡block,你也可以执行脚本手动均衡:sbin/start-balancer.sh

参考

  1. Linux公社
  2. cnblogs