Подтвердить что ты не робот

Разрешение отклонено в hdfs

Я новичок в распределенной файловой системе hasoop, я сделал полную установку hadoop single node на моем компьютере. Но после этого, когда я собираюсь загрузить данные в hdfs, выдается сообщение об ошибке Permission Denied.

Сообщение с терминала с командой:

[email protected]:/usr/local/hadoop$ hadoop fs -put /usr/local/input-data/ /input
put: /usr/local/input-data (Permission denied)

[email protected]:/usr/local/hadoop$ 

После использования sudo и добавления huduser в sudouser:

[email protected]:/usr/local/hadoop$ sudo bin/hadoop fs -put /usr/local/input-data/ /inwe
put: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="":hduser:supergroup:rwxr-xr-x

[email protected]:/usr/local/hadoop$ 
4b9b3361

Ответ 1

Я решил эту проблему временно, отключив разрешение dfs. Добавляя ниже код свойства в conf/hdfs-site.xml

<property>
  <name>dfs.permissions</name>
  <value>false</value>
</property>

Ответ 2

У меня была схожая ситуация, и вот мой подход, который несколько отличается:

 HADOOP_USER_NAME=hdfs hdfs dfs -put /root/MyHadoop/file1.txt /

Что вы на самом деле делаете, так это чтение локального файла в соответствии с вашими локальными разрешениями, но при размещении файла на HDFS вы аутентифицированы как пользователь hdfs. Вы можете сделать это с помощью другого идентификатора (остерегайтесь конфигурации реальных конфигураций, но это обычно не так).

Преимущества:

  • Разрешения сохраняются на HDFS.
  • Вам не нужно sudo.
  • Вам вообще не нужны собственно hdf файлы локального пользователя.
  • Вам не нужно ничего копировать или изменять разрешения из-за предыдущих пунктов.

Ответ 3

Здесь вы испытываете две отдельные проблемы:


[email protected]:/usr/local/hadoop$ hadoop fs -put /usr/local/input-data/ /input put: /usr/local/input-data (Permission denied)

Здесь пользователь hduser не имеет доступа к локальному каталогу /usr/local/input-data. То есть ваши локальные разрешения слишком ограничительны. Вы должны изменить его.


[email protected]:/usr/local/hadoop$ sudo bin/hadoop fs -put /usr/local/input-data/ /inwe put: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="":hduser:supergroup:rwxr-xr-x

Здесь пользователь root (поскольку вы используете sudo) не имеет доступа к каталогу HDFS /input. Как вы можете видеть: hduser:supergroup:rwxr-xr-x говорит, что только hduser имеет доступ на запись. Hadoop на самом деле не уважает root как специального пользователя.


Чтобы исправить это, я предлагаю вам изменить разрешения для локальных данных:

sudo chmod -R og+rx /usr/local/input-data/

Затем попробуйте выполнить команду put как hduser.

Ответ 4

Запустите оболочку как hduser (от root) и запустите команду

sudo -u hduser bash
hadoop fs -put /usr/local/input-data/ /input

[обновление] Также обратите внимание, что пользователь hdfs является суперпользователем и имеет все привилегии r/w.

Ответ 5

Я решил эту проблему, выполнив следующие шаги

su hdfs
hadoop fs -put /usr/local/input-data/ /input
exit