1、需求:有两个集群,网络中节点是互通的,现在要用distcp进行文件迁移,但一个集群是非安全集群,一个是配置了kerberos认证的安全集群,怎么执行呢?
2、前提:两个集群都做了HA配置,所以要通过如下命令查看活动Namenode并获取其IP地址;
HA配置查看活动Namenode:hdfs haadmin -getServiceState nn1或nn2(namenode名);
3、试验:
目的平台执行hadoop distcp hdfs://IP:8020/pgw/ hdfs://namenode:8020/pgw/
源平台执行hadoop distcp hdfs://IP:8020/pgw/ hdfs://IP:8020/pgw/
都不行。
分析后,关系 Cross-realm authentication问题,配置core-site.xml 需降低安全配置;
<property><name>ipc.client.fallback-to-simple-auth-allowed</name>
<value>true</value>
</property>
4、解决:在目的平台执行
hadoop distcp -D ipc.client.fallback-to-simple-auth-allowed=true -D dfs.checksum.type=CRC32 webhdfs://namenode