近期在做HDP集群 数据迁移到CDH集群中。
使用了distcp指令做数据迁移.
##distcp 指令:源->目标 (指令在目标端运行)
指令:hadoop distcp 源 目标 ##1、运行指令的用户,得有目标仓库的写权限 ##2、源端:必须是绝对路径(hdfs路径到表名路径) ##3、目标端:只需要到库(需要到表,否则将多一层路径) ##4、目标端:表需要单独创建.可运行指令前,或者运行指令后创建. ##参数 -update 将数据文件之间拷贝到 目标绝对路径下,不创建表名(当然这里是说的hdfs目录哈).即:目标是什么目录,就直接考这个目录下.无其它操作. ##参数 -overwrite 将先创建表名,之后将数据文件拷贝到表名的路径下(这里表名即hdfs的一个路径名称)
##overwrite如下方式同步. ##目标端运行指令. hadoop distcp -overwrite hdfs://ip:8020/apps/hive/warehouse/dev.db/dim_date hdfs://nameservice1/user/hive/warehouse/test.db/ ##结果目录 hdfs://nameservice1/user/hive/warehouse/test.db/dim_date
##update如下方式同步. ##目标端运行指令. hadoop distcp -update hdfs://ip:8020/apps/hive/warehouse/dev.db/dim_date hdfs://nameservice1/user/hive/warehouse/test.db/ ##结果目录(直接将数据文件拷贝到仓库下了。如果是多个表数据,拷贝到一个表,可以使用此参数) hdfs://nameservice1/user/hive/warehouse/test.db/000000_0
灵活运用参数,对迁移还是有不少帮助的.