hdfs如何查找指定目录是否文件_HDFS修改副本数与存储扩容

baa15d7b374cbb2141ab2998d112f9f4.png

我们的HDFS集群中有11个DataNode,初始时每台机器仅上了一块2.4T大的SAS盘/dev/sda,数据分区1.8T。上线运行4个月,集群存储总使用量超过了70%,无法满足日益增长的存储需求,需要改进。


之前我们的HDFS一直采用默认的块副本数3。现在来看,有两个节点同时出现问题的概率非常小,可以降低为2,释放一些空间。


另外,加盘也是十分有必要的。HDFS自带冗余机制,所以数据盘都不用做RAID。每台机器上面还有3个空闲盘位,直接插满。

修改副本数
在CM的HDFS配置中找到dfs.replication项,修改为2,重启HDFS。
但这样只能保证新写入的块副本数变为2,原有块仍然是3副本,因此还需要执行命令hdfs dfs -setrep 2 -R -w /dw。其中/dw是指定的路径,-R参数则表示包含子目录。
通过执行hdfs fsck /dw命令,观察“Average block replication”一项,可以看出副本调整的过程是否已经完成。
存储扩容
每个节点各加一块1.2T的盘/dev/sdb,以及两块2.4T的盘/dev/sdc、/dev/sdd。然后将这些盘配置到HDFS中作为数据盘来使用。
由于每块盘的处理流程都相同,因此仅以/dev/sdb为例来描述。

  1. 创建ext4文件系统
    执行:mkfs -t ext4 /dev/sdb。如果没有创建文件系统,mount时会报错:Unknown filesystem type '(null)'。
    因为用途就是纯HDFS存储,无需分区,所以直接省略了fdisk的步骤。在Linux中,磁盘不分区也是可以用的。
  2. 创建数据目录,并更改其权限和所有者
    执行:mkdir -p /dfs_local/sdbchmod -R 777 /dfs_local/sdbchown -R hdfs:hadoop /dfs_local/sdb
    hdfs-site.xml中默认指定的权限是755,但可以通过dfs.datanode.data.dir.perm配置项来更改。
  3. 挂载
    简单地执行mount命令就可以挂载。但稳妥起见,应该配置成开机自动挂载。
    修改/etc/fstab文件,加入如下一行:/dev/sdb /dfs_local/sdb ext4 defaults 0 0
    普通数据盘既不需要备份也不需要fsck检查,因此dump和pass都设为0。
    保存后,执行mount -a命令,使其立即生效。使用df -h可以查看是否成功挂载。
  4. 加入HDFS
    进入CM界面,找到HDFS数据目录的配置项dfs.data.dir,加入上面设定的挂载路径,刷新配置即可,无需重启服务。

e37b97063e2b61a8504386e040269d31.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值