zoukankan      html  css  js  c++  java
  • 相同版本的CDH集群间迁移hdfs以及hbase

    前言

      由于项目数据安全的需要,这段时间看了下hadoop的distcp的命令使用,不断的纠结的问度娘,度娘告诉我的结果也让我很纠结,都是抄来抄去,

    还好在牺牲大量的时间的基础上还终于搞出来了,顺便写这个随笔,记录下。

    环境

      目前我们是两套同版本的CDH集群,集群内的节点通信使用的私网,提供浮动ip对外通信,也就是说,两个集群间的私网是不互通的,只能通过浮动ip

    进行通信。

    操作

    使用hadoop提供的distcp命令进行数据迁移 (数据源集群source和目标集群target版本相同)

    迁移hdfs的文件

    1)、将source的hosts配置复制到target的hosts中  , 注意使用source的节点的浮动ip

    2)、由于集群的节点是以私网的方式通信,如果是这种情况,必须开启namenode和datanode都绑定到了0.0.0.0 ,不然会报连接拒绝的异常

    2)、在target的namenode中进入hdfs用户 (为的是避免写hdfs出现 权限问题 ) 

    3)、在tartget的namenode中使用命令 hadoop distcp -overwrite -i webhdfs://sourceNN:50070/solr webhdfs://targetNN:50070/ 

      (说明: 中间的参数 不明白 ,可以问度娘或自己看官方文档,

     sourceNN source集群的NameNode, 由于不能使用私网通信,所以只能选择 webhdfs, 端口是cdh默认的端口50070)

    迁移hbase   推荐使用方案二 简单 效率高

    方案1

    4)、直接使用HBASE提供的exort和import工具,这些工具包含在HBASE的jar包中。他们使用MAPREDUCE进行导入导出操作,可以将部分或全部表写入到HDFS文件中。
    hadoop jar hbase-0.94.10.jar export -Dhbase.client.scanner.caching=100 weather_data /weather_data
    export命令后面,用户必须从左到右指定参数,不能省略这中间任何一个参数。

    5)、使用distcp命令将导出的文件复制到目标集群以后再使用导入命令进行导入。

    6)、HBASE数据导入
    hadoop jar hbase-0.94.10.jar import weather_data /weather_data


    方案2:

    7)、在tartget的namenode中执行 hadoop distcp webhdfs://sourceNN:50070/hbase/data/default hdfs://targetNN:50070/hbase/data/       迁移hbase中命名空间是default的所有的表

    8)、迁移完成之后,启动hbase集群服务,并执行如下的两个命令,恢复元数据,否则hbase集群不会识别新迁移过来的表:
    hbase hbck -fix
    hbase hbck -repairHoles
    注意 : 可能会有权限问题, 通过提升权限或换用户解决)


    总结

    1)、出现异常,根据异常问度娘,有条件最好问谷歌, 多看官方文档,检查是否参数使用正确。


    2)、假如distcp一个目录时出现 file not exist 异常,有可能是目录过大导致的,可以试着减少distcp的文件目录数量,假如还报异常,那还是检查下是不是参数有问题。

    3)、认真分析自己使用distcp碰到的问题, 不可盲从百度出的结果。

  • 相关阅读:
    LeetCode 230. Kth Smallest Element in a BST
    LeetCode 114. Flatten Binary Tree to Linked List
    LeetCode 222. Count Complete Tree Nodes
    LeetCode 129. Sum Root to Leaf Numbers
    LeetCode 113. Path Sum II
    LeetCode 257. Binary Tree Paths
    Java Convert String & Int
    Java Annotations
    LeetCode 236. Lowest Common Ancestor of a Binary Tree
    LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
  • 原文地址:https://www.cnblogs.com/jechedo/p/5675862.html
Copyright © 2011-2022 走看看