切换一个包含cloudera hadoop / hdfs / hbase数据的磁盘

Switch a disk containing cloudera hadoop / hdfs / hbase data

我们有一个基于单个服务器上的单个节点的 Cloudera 5 安装。在集群上添加 2 个额外节点之前,我们想使用新磁盘增加分区的大小。

我们安装了以下服务:

所有数据当前都安装在一个分区上。将收集的数据数量增加了,因此我们需要使用另一个磁盘来存储所有信息。

所有数据都在挂载到文件夹/dfs的分区下

工作分区是:

df -h

hadoop-dfs-分区 119G 9.8G 103G 9% /dfs

df -i

hadoop-dfs-分区 7872512 18098 7854414 1% /dfs

该文件夹的内容如下:

drwxr-xr-x 11 root root 4096 2014 年 5 月 8 日 dfs
drwx------。 2 root root 16384 2014 年 5 月 7 日丢失+找到
drwxr-xr-x 5 root root 4096 2014 年 5 月 8 日纱线

在 dfs 下有这些文件夹:

drwx------ 3 hdfs hadoop 4096 2 月 23 日 18:14 dn
drwx------ 3 hdfs hadoop 4096 2 月 23 日 18:14 dn1
drwx------ 3 hdfs hadoop 4096 2 月 23 日 18:14 dn2
drwx------ 3 hdfs hadoop 4096 2 月 23 日 18:14 nn
drwx------ 3 hdfs hadoop 4096 2 月 23 日 18:14 nn1
drwx------ 3 hdfs hadoop 4096 2 月 23 日 18:14 nn2
drwx------ 3 hdfs hadoop 4096 2 月 23 日 18:14 snn
drwx------ 3 hdfs hadoop 4096 2 月 23 日 18:14 snn1
drwx------ 3 hdfs hadoop 4096 2 月 23 日 18:14 snn2

yarn 下有这些文件夹:

drwxr-xr-x 9 yarn hadoop 4096 11 月 9 日 15:46 nm
drwxr-xr-x 9 yarn hadoop 4096 11 月 9 日 15:46 nm1
drwxr-xr-x 9 yarn hadoop 4096 11 月 9 日 15:46 nm2

我们怎样才能做到这一点?我发现只有使用 distcp 命令在集群之间迁移数据的方法。

没有找到任何移动原始数据的方法。

在执行

之前停止所有服务并关闭整个集群

cp -Rp /dfs/* /dfs-new/

command 是可行的选择吗?

(挂载新盘全新ext4分区所在文件夹下的/dfs-new)

有更好的方法吗?

提前致谢

我是这样解决的:

  1. 停止除 hdfs 之外的所有服务

  2. 从 hdfs 导出数据。在我的例子中,有趣的部分在 hbase:

    su - hdfs  
    hdfs dfs -ls / 
    

    命令显示以下数据:
    drwxr-xr-x-hbase hbase 0 2015-02-26 20:40 /hbase
    drwxr-xr-x - hdfs 超级组 0 2015-02-26 19:58 /tmp
    drwxr-xr-x - hdfs 超级组 0 2015-02-26 19:38 /user

    hdfs dfs -copyToLocal / /a_backup_folder/  
    

    将所有数据从 hdfs 导出到普通文件系统

    control-D  
    

    到return根

    停止 Cloudera 上的所有服务(包括 hdfs)

  3. 现在您可以卸载 "old" 和 "new" 分区。

  4. 挂载 "new" 分区代替 "old" 分区的路径(在我的例子中是 /dfs)

  5. 挂载"old"分区在我的新地方是/dfs-old(记得mkdir /dfs-old)这样可以检查旧结构

  6. 使此更改永久编辑 /etc/fstab。重复第 3 步检查一切是否正确,然后尝试 a

    mount -a 
    
  7. df -h 检查您是否将 /dfs 和 /dfs-old 映射到正确的分区(分别是 "new" 和 "old")

  8. 格式化名称节点进入

    服务 > hdfs > namenode > 操作格式 namenode
    在我的例子中做

    ls -l /dfs/dfs  
    

    我有:
    drwx------ 4 hdfs hadoop 4096 2 月 26 日 20:39 nn
    drwx------ 4 hdfs hadoop 4096 2 月 26 日 20:39 nn1
    drwx------ 4 hdfs hadoop 4096 Feb 26 20:39 nn2

  9. 在cloudera上启动hdfs服务

    您应该有新文件夹:

    ls -l /dfs/dfs  
    

    我有:

    drwx------ 3 hdfs hadoop 4096 2 月 26 日 20:39 dn
    drwx------ 3 hdfs hadoop 4096 2 月 26 日 20:39 dn1
    drwx------ 3 hdfs hadoop 4096 2 月 26 日 20:39 dn2
    drwx------ 4 hdfs hadoop 4096 2 月 26 日 20:39 nn
    drwx------ 4 hdfs hadoop 4096 2 月 26 日 20:39 nn1
    drwx------ 4 hdfs hadoop 4096 2 月 26 日 20:39 nn2
    drwx------ 3 hdfs hadoop 4096 2 月 26 日 20:39 snn
    drwx------ 3 hdfs hadoop 4096 2 月 26 日 20:39 snn1
    drwx------ 3 hdfs hadoop 4096 Feb 26 20:39 snn2

  10. 现在将数据复制回新分区

    hdfs dfs -copyFromLocal /a_backup_folder/user/* /user  
    hdfs dfs -copyFromLocal /a_backup_folder/tmp/* /tmp  
    hdfs dfs -copyFromLocal /a_backup_folder/hbase/* /hbase  
    
  11. hbase文件夹需要有适当的权限,hbase:hbase as user:group

    hdfs dfs -chown -R hbase:hbase /hbase  
    

    如果您忘记了这一步,您稍后会在 hbase 日志文件中收到权限被拒绝的错误

    检查结果
    hdfs dfs -ls /hbase
    

    你应该看到这样的东西:
    drwxr-xr-x-hbase hbase 0 2015-02-26 20:40/hbase/.tmp
    drwxr-xr-x-hbase hbase 0 2015-02-26 20:40 /hbase/WALs
    drwxr-xr-x-hbase hbase 0 2015-02-27 11:38 /hbase/archive
    drwxr-xr-x-hbase hbase 0 2015-02-25 15:18 /hbase/corrupt
    drwxr-xr-x-hbase hbase 0 2015-02-25 15:18 /hbase/data
    -rw-r--r-- 3 hbase hbase 42 2015-02-25 15:18 /hbase/hbase.id
    -rw-r--r-- 3 hbase hbase 7 2015-02-25 15:18 /hbase/hbase.version
    drwxr-xr-x-hbase hbase 0 2015-02-27 11:42 /hbase/oldWALs

(这里的重要部分是拥有正确的用户和文件和文件夹组)

现在启动所有服务并检查 hbase 是否正在使用

    hbase shell  
    list

您应该会看到迁移前的所有表。试试

    count 'a_table_name'