HDFS (안전하지 않은)의 모든 파일과 하이브의 모든 테이블을 나열하는 약간의 Hadoop 클라이언트 Java 응용 프로그램과 몇 가지 추가 정보를 작성했습니다. 그러나 런타임 중에 Hadoop Username을 변경해야합니다.런타임 중에 Hadoop 사용자 이름을 변경하면 작동하지 않습니다.
System.setProperty("HADOOP_USER_NAME", "testuser");
을 통해 이름을 설정하면 처음에는이 사용자 이름이 필요하지 않습니다. 하지만 사용자 이름을 예 : (위 그림과 같이 HDFS에 하둡 사용자 이름을 설정 한 후) System.setProperty("HADOOP_USER_NAME", "hdfs");
나는 예외를 얻을 :
org.apache.hadoop.security.AccessControlException: Permission denied: user=testuser, access=READ_EXECUTE, inode="/app-logs/ambari-qa":ambari-qa:hadoop:drwxrwx---
어떤 문제가 여기에있을 수 있을까? 원하는 경우 언제든지 HADOOP_USER_NAME 속성을 통해 사용자 이름을 변경할 수없는 이유는 무엇입니까?
편집
난 그냥 실행하는 동안 사용자를 변경하는 UserGroupInformation.setLoginUser(UserGroupInformation.createRemoteUser(username));
를 사용하거나 몇 가지 제한이있다 할 수 있습니까?