之前部门迁移hadoop,涉及到hive表的重建,以及hdfs上文件的迁移,还有oozie任务的修改。
hive重建表比较简单,首先show create table tablename;然后把建表语句拷贝下来即可,这里要注意的是,最好把stored as XXX语句也加上。一开始我没加,还出了错,因为两个hadoop集群的hive建表时的默认的存储格式不一致。
hdfs的数据迁移,有几种方式可以选择:
1、如果数据在关系型数据库中也存在一份,可以直接使用sqoop命令导入新集群。
2、如果表不是很多,可以先从hdfs上把数据get到本地,随后再load到新集群的hive表中,或直接put进相应的hdfs路径。
3、使用hadoop distcp命令,这个命令是用于大规模集群内部和集群之间拷贝的工具。 它使用Map/Reduce实现文
件分发,错误处理和恢复,以及报告生成。 它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部
分文件的拷贝。 由于使用了Map/Reduce方法,这个工具在语义和执行上都会有特殊的地方。
下面是一个使用的例子:
hadoop distcp -Dmapred.job.queue.name=xxx -m 90 -update -skipcrccheck hftp://XXXX:50070/user/hive/warehouse/xxx.db/xxx/ user/hive/warehouse/xxx.db/xxx