具体操作:使用distcp命令跨hdfs迁移数据(在hadoop版本不一致时,distcp命令也不一样)
使用详情参看官网:http://hadoop.apache.org/docs/r1.0.4/cn/distcp.html
distcp有多中数据复制模式:hdfs,http,hftp
(目标端hadoop需要赋予外来用户对文件夹写入的权限,hadoop fs -chmod 755 XXXX)
<1>.同版本hadoop下数据迁移使用hdfs模式:
hadoop distcp hdfs://192.168.132.12:9000/elasticsearch hdfs://hadoop11:9000/elasticsearch1(保证写入权限)
其中192.168.132.12是源集群的namenode地址, 9000是源集群的rpc端口(hdfs-site.xml中可查看,2.7.1默认是9000)。
hadoop distcp hdfs://192.168.132.11:9000/elasticsearch hdfs://hadoop12:9000/elasticsearch1(保证写入权限)
<2>.不同版本hadoop下数据迁移:
2.x -->2.x: 使用hftp模式
hadoop distcp hftp://192.168.132.12:50070/tool hdfs://hadoop11:9000/tool (保证写入权限)
命令类似hdfs模式,目标集群的开头要用hftp, 而且端口要变为http端口(hdfs-site.xml中可查看,如果未配置,则需要配置,2.7.1默认是50070)
hftp是一个只读文件系统,所以distcp必须运行在目标端集群上。 源的格式是 hftp://<dfs.http.address>/<path>
2.x -->3.x: 3.x弃用hftp,支持hdfs传数据
hadoop distcp hdfs://192.168.132.12:9000/elasticsearch hdfs://192.168.132.10:9000/elasticsearch(保证写入权限)