Permissão negada em hdfs
Sou novo no sistema de ficheiros distribuídos do hadoop, fiz a instalação completa do nó único do hadoop na minha máquina.mas depois disso, quando eu vou enviar dados para hdfs, ele dá uma mensagem de erro Permission Denied
.
Mensagem do terminal com o comando:
hduser@ubuntu:/usr/local/hadoop$ hadoop fs -put /usr/local/input-data/ /input
put: /usr/local/input-data (Permission denied)
hduser@ubuntu:/usr/local/hadoop$
Depois de usar o sudo e adicionar o hduser ao sudouser:
hduser@ubuntu:/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
hduser@ubuntu:/usr/local/hadoop$
5 answers
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
HADOOP_USER_NAME=hdfs hdfs dfs -put /root/MyHadoop/file1.txt /
O que realmente faz é ler o ficheiro local de acordo com as suas permissões locais, mas ao colocar o ficheiro em HDFS, é autenticado como o Utilizador hdfs
. Você pode fazer isso com outro ID (cuidado com a configuração de esquemas auth reais, mas isso geralmente não é um caso).
Vantagens:
- As permissões são mantidas em HDFS. Não precisas. Não precisas de facto, o utilizador local apropriado "hdfs".
- Você não precisa copiar nada ou alterar as permissões por causa de pontos anteriores.
hduser@ubuntu:/usr/local/hadoop$ hadoop fs -put /usr/local/input-data/ /input put: /usr/local/input-data (Permission denied)
Aqui, o utilizador hduser
não tem acesso à pasta local /usr/local/input-data
. Ou seja, as suas permissões locais são demasiado restritivas. Devias mudá-lo.
hduser@ubuntu:/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
Aqui, o utilizador root
(dado que está a usar o sudo) não tem acesso à pasta HDFS /input
. Como você pode ver: hduser:supergroup:rwxr-xr-x
diz apenas hduser
tem acesso de escrita. Hadoop realmente não respeita root
como um utilizador especial.
To corrija isto, sugiro que mude as permissões nos dados locais:
sudo chmod -R og+rx /usr/local/input-data/
Então, tente o comando put
de novo como hduser .
Iniciar uma linha de comandos como hduser (a partir do root) e executar o seu comando
sudo -u hduser bash
hadoop fs -put /usr/local/input-data/ /input
[actualização]
Note também que o hdfs
utilizador é o super-utilizador e tem todos os privilégios de r / W.
Resolvi este problema usando os seguintes passos
su hdfs
hadoop fs -put /usr/local/input-data/ /input
exit