Hadoop集群工具distcp使用笔记

1. 环境描述

两个集群:rock 和 stone

rock无kerberos权限认证,stone有要求认证。

1. 从rock复制到stone,采用hdfs

Hadoop distcp -i hdfs://rock-nn:8020/user/cxz/input hdfs://stone-nn:8020/user/cxz/
运行在rock端,即源端
问题:报版本不对的问题(的确该如此)
猜测:版本要是一致,也能正常运行

2. 从rock复制到stone,采用hftp
hadoop distcp -i hftp://rock-nn:50070/user/cxz/input hdfs://stone-nn:8020/user/cxz/
运行于stone端,即目的端;
问题:no problem, it's ok!

3. 从stone复制到rock,采用hftp
hadoop distcp -i hftp://stone-nn:50070/user/cxz/input hdfs://rock-nn:8020/user/cxz/
运行于rock端,即目的端
问题:kerberos权限认证失败

在第2步中遇到一个问题:

org.apache.hadoop.security.AccessControlException: Permission denied: user=[user], access=WRITE, inode="mapred":root:supergroup:rwxr-xr-x

解决方案:将如下配置加入到mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.jobtracker.staging.root.dir</name>
        <value>/user</value>
    </property>
</configuration>

重启mapreduce:stop-mapred.sh && start-mapred.sh

相关阅读:

相关推荐