Hive及HBase数据迁移

时间:2023-03-10 02:37:09
Hive及HBase数据迁移

一、 Hive数据迁移

  场景:两个Hadoop平台集群之间Hive表迁移。

  基本思路:Hive表元数据和文件数据export到HDFS文件,通过Distcp将HDFS迁移到另一个集群的HDFS文件,再通过import在新Hive中建表;

  1.Hive数据导出

    此步骤在原平台执行将Hive表元数据和文件数据export到平台HDFS文件

    1) 获得hive表的元数据信息

      ret=$(hive -e 'show tables;' | grep -v _es | grep -v _hb | grep -v importinfo)

      ret中存放hive所有表的表名。

    2) 导出hive表元数据和hive管理hdfs数据

      hive -e "export table $tem to '/tmp/hive-export/$tem';"

      执行此命令后可以看到hdfs输出目录下有元数据和文件数据

      查看hadoop fs -cat /tmp/hive-export/[table_name]/_metadata元文件

     Hive及HBase数据迁移

  2. Hive数据迁移

    用distcp从原平台将/tmp/hive-export/下数据迁移到新平台。

      hadoop distcp hdfs://10.0.11.205:8020/tmp/hive-export hdfs://10.0.11.91:8020/tmp

    执行成功后新平台tmp目录下会多出拷贝的数据文件。

  3.新集群数据导入

    1) 获得hive表名

      Hive表名为/tmp/hive-export/下的路径名

      使用hadoop fs -ls获得所有的表名

    2) 执行导入命令

      hive -e "import table [table_name] from '/tmp/hive-export/[table_name]’;"

      可以看到hive上新生成了表,自此跨平台Hive表迁移完成。

二、 Hbase数据迁移

  1.Hbase数据导出

    在原平台上使用org.apache.hadoop.hbase.mapreduce.Export命令导出hbase数据到原平台的HDFS上

      hbase org.apache.hadoop.hbase.mapreduce.Export [table_name] [hdfs_directory]

  2.Hbase数据迁移

    此步骤将导出的数据文件拷贝到新集群

      hadoop distcp hdfs://10.0.11.205:8020[hdfs_directory] hdfs://10.0.11.91:8020/tmp

  3.Hbase数据导入

    hbase org.apache.hadoop.hbase.mapreduce.Import [table_name] [hdfs_directory]

    注:1)使用全路径,不能使用相对路径

      2)在执行import之前,需要将hbase表在新集群建好。