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 | SERDE_ID |
+-------+-------+------------------------------------------+---------------+---------------------------+-----------------------------------------------+-------------+------------------------------------------------------------+----------+
| 6 | 9 | org.apache.hadoop.mapred.TextInputFormat | | | hdfs://HACluster/apps/hive/warehouse/userinfo | -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat | 6 |
+-------+-------+------------------------------------------+---------------+---------------------------+-----------------------------------------------+-------------+------------------------------------------------------------+----------+
1 row in set (0.00 sec)
修改操作:
update DBS set DB_LOCATION_URI = replace(DB_LOCATION_URI,'hdfs://源1','hdfs://目標') ;
update SDS set LOCATION = replace(LOCATION ,'hdfs://ns2','hdfs://adhoc') ;
如果操作,我這里需要將hdfs://HACluster修改為hdfs://HACluster_New,我為了操作簡單,新集群HA起了同樣的名字hdfs://HACluster
6. 拷貝hive安裝包, 拷貝core-site.xml 與 hdfs-site.xml至 conf中, 后續則正常啟動即可。(一般不用操作)
參考:
hive 跨集群遷移
http://blog.csdn.net/w412692660/article/details/50551409
不同hadoop集群之間遷移hive數據
http://blog.csdn.net/ggz631047367/article/details/50754005
HIVE 數據遷移,利用hive提供的export/import工具實現批量同步
http://blog.csdn.net/u9999/article/details/34119441
hadoop 集群 跨 版本數據遷移 hadoop1遷移到hadoop2上
http://blog.itpub.net/30089851/viewspace-2062010
---------------------
作者:levy_cui
來源:CSDN
原文:https://blog.csdn.net/levy_cui/article/details/70156682
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!