2017-11-21 2 views
1

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));를 사용하거나 몇 가지 제한이있다 할 수 있습니까?

답변

0

JDBC 연결을 사용하여 HDFS 또는 하이브에 연결하기 때문에. 기존 연결을 닫을 때까지 동일한 애플리케이션에서 HDFS/Hive 서비스로 연결을 한 번 더 만들 수 없습니다.

관련 문제