hadoop跨集群之间迁移hive数据

本文详细介绍了如何在不同Hadoop集群间迁移Hive数据,包括使用Distcp工具处理HDFS数据迁移,元数据库的迁移与更新,解决权限问题,以及处理字符编码和文件大小限制。此外,还提到了跨集群迁移时的安全配置、版本兼容性以及处理冲突和错误的方法。
摘要由CSDN通过智能技术生成

进行hive库迁移过程中碰到的问题

1、hdfs数据迁移过程中,使用hadoop distcp /apps/hive/warehouse/userinfo hdfs://10.11.32.76:8020/apps/hive/warehouse/

将老库的hive的数据复制到新库中,在测试环境报权限错误,需要添加如下配置

 <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>

2、元数据库迁移过程中,都是从mysql到mysql,做法就是导出老库的元数据

mysqldump -uroot -proot --database hive > ./mysql_hive_data.sql (我的环境操作)

然后进入新库的mysql,使用source命令将备份库导入

在导入过程中,由于两个mysql的编码格式不一致,导致数据无法全部导入

经过检查发现,老库使用的是utf8mb4格式,新库使用的utf8格式,导入过程会包字符列最大值超界676byte。解决方法:将备份库中varchar()超过255的全部替换成255,然后将编码格式utf8mb4替换成utf8。完成元数据的迁移。

3、修改元数据中DBS中对应数据库在hdfs上的存储路径。测试新的hive时,发现表信息都已经能查询到,但是数据还是没有,

怀疑需要重新启动hive元数据服务。

将cdh(新库)的hive的元数据服务关闭后,却无法启动起来。排查两天没有解决,决定重装hive

 

下面是收集的材料:

 

https://github.com/NetEase/hive-tools  网易开源工具

 

 

Hive跨集群迁移数据工作是会出现的事情, 其中涉及到数据迁移, metastore迁移, hive版本升级等。

1. 迁移hdfs数据至新集群
hadoop distcp -skipcrccheck -update hdfs://xxx.xxx.xxx.xxx:8020/user/risk hdfs://xxx.xxx.xxx.xxx:8020/user/
-skipcrccheck 因本次迁移涉及低版本迁移高版本, 如果Hadoop版本则不需要
-update 增量更新, 通过名称和大小比较,源与目标不同则更新

hadoop distcp /apps/hive/warehouse/userinfo hdfs://10.11.32.76:8020/apps/hive/warehouse/(我的环境操作)

hadoop distcp -update /apps/hive/warehouse/ hdfs://10.11.32.76:8020/apps/hive/warehouse/ (差异复制)

xxx.xxx.xxx.xxx这个位置最好使用IP地址,尽量不要使用主机名或集群名称,否则需要配置hosts文件解析

2. 源集群metastore数据备份导出(mysql导出)
mysqldump -u root -p’密码’--skip-lock-tables -h xxx.xxx.xxx.xxx hive > mysql_hive.sql
mysqldump -uroot -p --database hive > mysql_hive_data.sql (我的环境操作)

3. 新的集群导入metastore数据(mysql导入)

mysql -u root -proot --default-character-set=utf8 hvie < mysql_hive.sql
mysql -uroot -p < mysql_data.sql(我的环境操作)

4. 升级hive内容库(如果hive版本需要升级操作,同版本不需要操作)
mysql -uroot -proot risk -hxxx.xxx.xxx.xxx < mysqlupgrade-0.13.0-to-0.14.0.mysql.sql
mysql -uroot -proot risk -hxxx.xxx.xxx.xxx < mysqlupgrade-0.14.0-to-1.1.0.mysql.sql
版本要依据版本序列升序升级,不可跨越版本,如当前是hive0.12打算升级到0.14,需要先升级到0.13再升级到0.14

5. 修改 metastore 内容库的集群信息(重要)

因为夸集群,hdfs访问的名字可能变化了,所以需要修改下hive库中的表DBS和SDS内容,除非你的集群名字或者HA的名字跟之前的一致这个就不用修改了

登录mysql数据库,查看:

mysql> use hive;

mysql> select * from DBS;
+-------+-----------------------+--------------------------------------+---------+------------+------------+
| DB_ID | DESC                  | DB_LOCATION_URI                      | NAME    | OWNER_NAME | OWNER_TYPE |
+-------+-----------------------+--------------------------------------+---------+------------+------------+
|     1 | Default Hive database | hdfs://HACluster/apps/hive/warehouse | default | public     | ROLE       |
+-------+-----------------------+--------------------------------------+---------+------------+------------+
1 row in set (0.00 sec)

mysql> select * from SDS;
+-------+-------+------------------------------------------+---------------+---------------------------+-----------------------------------------------+-------------+------------------------------------------------------------+----------+
| SD_ID | CD_ID | INPUT_FORMAT                             | IS_COMPRESSED | IS_STOREDASSUBDIRECTORIES | LOCATION                                      | NUM_BUCKETS | OUTPUT_FORMAT                     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值