2015-07-31 2 views
2

Я пытаюсь написать файл в HDFS кластер из моего окна машины, но получаю следующее сообщение об ошибкеHadoop давая AccessControlException

org.apache.hadoop.ipc.RemoteException (org.apache.hadoop.security.AccessControlException) : Разрешение отказано: пользователь = ..., доступ = WRITE, инод = "/ пользователь/Hadoop/Hadoop_File.txt": HDFS: HDFS: -rw-р - r--

В моей конфигурация hadoop

hadoop.security.auth_to_local is set to DEFAULT 
hadoop.security.authentication is set to SIMPLE 

если я упоминаю имя пользователя как "HDFS", делая

System.setProperty("HADOOP_USER_NAME", "hdfs"); 

все работает отлично.

но если политика это просто означает отсутствие аутентификации должно позволить любому пользователю создать файл Помогите мне понять, почему это происходит

ответ

1

я получил ответ :) вы должны настроить dfs.permissions.enable = ложь, это правда в моем случае, когда он будет выключен, он не жалуется ни на кого из пользователей

0

Простая аутентификация в Hadoop означает, что вам не нужно, чтобы доказать, кто ты , например, с паролем или токеном, но вам все равно нужно сказать, кто вы. Какой бы пользователь вы ни утверждали, Hadoop поверит вам и примет имя пользователя для операции, которую вы запрашиваете.

На HDFS все еще есть разрешения (вы можете видеть, что с hdfs:hdfs:-rw-r--r-- в своем сообщении выше), поэтому вам нужно заявить, что являетесь пользователем, у которого есть необходимые разрешения для вашей операции, что вы делали с System.setProperty("HADOOP_USER_NAME", "hdfs");

Короткая версия, идентичность не совпадает с аутентификацией :)

+0

Спасибо за понимание mattinbits, но недавно i git answer :) вам нужно настроить dfs.permissions.enable = false, это верно в моем случае, когда он выключен, он не жалуется никому из пользователей. –

+0

Если вы считаете, что это лучшее решение вашего вопроса, пожалуйста, поместите его как ответ на свой вопрос, чтобы помочь другим в будущем. – mattinbits

Смежные вопросы