两个集群之间做数据同步,而且两个集群之间的版本不一致,这个时候使用的是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