问题描述: 最近公司来了一批 200G 左右的数据, 因为以前的测试机器都是随便搭的, 内存不够, 所以要扩充 HDFS 的存储空间
操作环境: hyper-v,centos6.7 , 内核版本 4.4.113-1.el6.elrepo.x86_64
此文档实在伪分布式操作系统上操作的, 实际的集群扩容类似
一, 新增硬盘
1.保证你的虚拟机处于关机状态
2.右键 -> 选择设置
3.选择 IDE 控制器 --> 硬盘驱动器 --> 添加
4.点击新建
5.选择 VHDX(H) 下一步
6.选择动态扩展
7, 根据现场情况选择名称和位置
8, 根据现场情况设置新增硬盘的大小 --> 下一步 ----> 完成
二, 对新增硬盘分区, 挂载
1. 连接到虚拟机输入命令 fdisk l 找到自己新增的硬盘
2. 进入磁盘, 对磁盘进行分区输入命令 fdisk + 磁盘名称
3. 输入 n 新建分区 ----à 输入 p 创建主分区 -----à 输入 1 设置扇区默认从 1 开始 ----à 根据现场情况输入扇区的结束位置 (我这里把整个硬盘做一个分区直接回车)---à 输入 w 回车, 保存 (如果要把整个硬盘挂载到某个目录可以不分区)
4. 输入 fdisk l 查看硬盘是否分区成功 (Disk identifier: 标识不为 0x00000000 即为分区成功)
5. 格式化分区输入命令 mkfs.ext4 + 分区名称 (例如要格式化 / dev/sdb1 的命令为: mkfs.ext4 /dev/sdb1 )
6. 挂载分区输入命令 mount + 分区名称 + 挂载目录 (例如要把 / dev/sdb1 挂载到 /mnt/cdrom 目录下的命令为: mount /dev/sdb1 /mnt/cdrom)
7 检查分区是否挂载成功, 输入 df h 如挂载成功如下图所示
三.扩容 datanode 存储目录
1. 连接到 datanode 所在的服务器, 找到 datanode 的存储目录
(可从 cloudera manager 上 HDFS 下的 datanode 节点的配置中找到 datanode 的存储目录, 这里的是 / dfs/dn)
2. 关掉集群服务
3. 在新挂载磁盘的目录中新建跳板目录 mkdir /new
4. 将新建的分区挂载到新建的目录上 mount /dev/sdb1 /new
5. 将 hdfs 中存储数据的目录复制到新建的跳板中 cp -R /dfs/dn/* /new
6. 解除挂载 umount /new
- 7. rm -rf /dfs/dn/*
- #### 可选, 主要为了腾出空间给原来的硬盘
8. 将新磁盘挂载到 HDFS 中数据的存储目录 mount /dev/sdb1 /dfs/dn(此时你会的发现之前的 / dfs/dn 目录文件已经全部转移过来了)
9. 删除跳板目录, rm -rf /new (等待 / dfs/dn 目录数据恢复之后再删除)
10. 将目录从新授权给 HDFS 角色, chown -R hdfs:hdfs /dfs/dn/ (一定要记得授权, 否则 datanode 会读取文件失败)
11. 设置开机自动挂载 (vim /etc/fstab)
在 / etc/fstab 文件的后面添加 / dev/sdb1 /dfs/dn ext4 defaults 0 0
12. 检查开机挂载是否配置成功
13. 重启服务打开 / etc/fstab 文件
查看最后一行是否为仍是 / dev/sdb1 /dfs/dn ext4 defaults 0 0 若是则说明开机自动挂载设置成功
14. 分别在各个 datanode 节点实现上述操作即可完成 HDFS 的扩容
制作人: 云成鹏 (如发现文档中有任何错误或遗漏之处请及时提醒, 以便纠正修改, 谢谢)
来源: http://www.jianshu.com/p/bc88e2fef1ab