HDFS修改副本数与存储扩容

我们的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/sdb
    chmod -R 777 /dfs_local/sdb
    chown -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,加入上面设定的挂载路径,刷新配置即可,无需重启服务。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容