美文网首页大数据
CDH集群间的数据迁移方案

CDH集群间的数据迁移方案

作者: 勤奋的超跑 | 来源:发表于2019-11-14 14:20 被阅读0次

           目前不同公司多多少少存在Hive数据库在不同集群间的数据迁移需求,我们只要在CDH新版本集群搭建完成之后,即可进行数据迁移工作,如下描述hive及HDFS数据的迁移。

    一、源集群hive表结构的备份

    写备份hive数据表ddl脚本如下,在源集群主节点服务器上执行。可自行放在/home/dw目录下:

    !/bin/sh

    for hive_database in "sjczq_db" "sjjsq_db"

    do

    sudo -u hive hive -e "use ${hive_database};

             show tables;" > ${hive_database}_tables.txt

    rm -f ${hive_database}_tablesDDL.txt

    cat ${hive_database}_tables.txt |while read eachline

    do

    sudo -u hive hive -e "use ${hive_database};

             show create table $eachline;" >>${hive_database}_tablesDDL.txt

             echo ';' >> ${hive_database}_tablesDDL.txt

    dones

    cone

    将导出相应的hive的DDL语句,修改一下对应的path和location为新集群的主节点名称。

    如下图所示:

    将调整后的DDL语句在新集群环境执行。

    由于hive数据库是逐个迁移的,请事先创建好hive数据库;

    二、新老集群hive&HDFS数据文件迁移

    distcp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具

    distcp最常用在集群之间的拷贝:

    sudo -u hive hadoop distcp hdfs://192.168.201.83:8020/user/hive/warehouse/sjczq_db.db/* hdfs://192.168.220.63:8020/user/hive/warehouse/sjczq_db.db

    注意: (1) distcp使用绝对路径进行操作;

                (2) 该命令需要在目标集群上执行;

                (3) 为了保持hive数据文件权限问题,请使用sudo -u hive用户执行;

                (4) -overwrite参数谨慎使用,可不指定操作类型,采用默认即可,若目标文件存在,存在跳过,否则进行同步复制;

    这条命令会把集群的/user/hive/warehouse/sjczq_db.db目录下的所有文件或目录名展开并存储到一个临时文件中,这些文件内容的拷贝工作被分配给多个map任务, 然后每个TaskTracker分别执行从83到63的拷贝操作。

    若命令中断,可再次执行,不影响之前迁移同步数据表。

    三、迁移后数据验证

    针对迁移同步后的数据表直接查询,查看数据量及数据字段值是否一致;

    1、全量表数据,直接同步即可,数据验证没有问题

    2、分区数据表,查询发现数据为空,但是HDFS文件数据已迁移同步

    此时需要使用msck repair table new_table;修复新表的分区元数据

    修复后分区表正常。

    至此hive数据库迁移完成。

    相关文章

      网友评论

        本文标题:CDH集群间的数据迁移方案

        本文链接:https://www.haomeiwen.com/subject/oydrictx.html