HDFS源文件迁移

在工作中难免会遇到需要迁移大数据库,这时候就涉及到迁移hive等HDFS文件

解决方案:

采用hadoop distcp 来整体迁移

#!/bin/sh

database=$1

table_names=`hive -e "use $database;show tables;" `

#获取hive的表结构语句

for table in $table_names

do

hive -e "use $database;show create table $table; "  >> desc_table.txt

echo -e ";\c" >> desc_table.txt

done

#迁移HDFS源数据

for table in $table_names

do

hadoop distcp "hdfs://master:9000/usr/hive/warehouse/$database.db/$table" "hdfs://new_master:8020/usr/hive/warehouse/$database.db/$table"

done

在完成源数据导出后,修改之前导出的表结构sql语句,修改hive 的外部表的location路径(新的HDFS路径),执行后,即可在新的集群上访问hive表了。

完毕!!!!

推荐阅读更多精彩内容