跨集群 distcp命令

两个集群之间做数据同步,而且两个集群之间的版本不一致,这个时候使用的是hftp协议或者webhdfs协议!

如果试图在两个运行着不同HDFS版本的集群上使用distcp命令来复制数据并使用hdfs协议,复制作业会失败,因为两个系统版本的RPC是不兼容的。要想弥补这种情况,

1、使用htfp协议

>>可以使用基于只读HTTP协议的HTFP文件系统并从源文件系统中读取数据。

>>这个作业必须运行在目标集群上,进而实现HDFS RPC版本的兼容。使用HFTP协议重复前面的例子:

需要在目标机器上执行这个命令,distcp src des;这里使用的协议是hftp命令

hadoop distcp src des

hadoop distcp  hftp://cdh11:50070/data01/allen/temp/ /data01/allen

特别要注意这里端口号的指定,hftp默认的端口号是50070,这是由dfs.http.address属性指定的。

2、使用wehhdfs协议

使用新出的webhdfs协议(替代hftp)后,对源集群和目标集群均可以使用HTTP协议进行通信,且不会造成任何不兼容的问题。

hadoop distcp src des

hadoop distcp webhftp://hadoopcluster1:50070/foo webhdfs://hadoopcluster2:50070/bar

posted @ 2015-10-20 16:26  随遇而安jason  阅读(1427)  评论(0编辑  收藏  举报