Não foi possível alterar as permissões de escrita para a pasta hdfs

estou a tentar copiar o ficheiro de texto para a localização do hdfs.
Estou a enfrentar problemas de acesso, por isso tentei mudar as permissões.
Mas não consigo mudar a mesma face abaixo do erro:

chaithu@localhost:~$ hadoop fs -put test.txt /user
put: Permission denied: user=chaithu, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

chaithu@localhost:~$ hadoop fs -chmod 777 /user
chmod: changing permissions of '/user': Permission denied. user=chaithu is not the owner of inode=user

chaithu@localhost:~$ hadoop fs -ls /
Found 2 items
drwxrwxrwt   - hdfs supergroup          0 2017-12-20 00:23 /tmp
drwxr-xr-x   - hdfs supergroup          0 2017-12-20 10:24 /user

Por favor, ajude-me Como posso alterar os direitos de leitura completa e escrita para todos os utilizadores acederem à pasta HDFS.

Author: Phantômaxx, 2017-12-20

2 answers

Em Primeiro Lugar, não deve escrever directamente na pasta /Utilizador nem definir o 777 nela

Você vai precisar de um diretório de usuário para o seu usuário atual até mesmo executar uma tarefa mapreduce, então você precisa sudo su - hdfs primeiro para se tornar um super-usuário HDFS.

Depois execute isto para criar directórios HDFS para a sua conta de utilizador

 hdfs dfs -mkdir -p /user/chaithu
 hdfs dfs -chown -R chaithu /user/chaithu
 hdfs dfs -chmod -R 770 /user/chaithu

Depois exit do utilizador hdfs, e chaithu pode agora escrever para o seu próprio directório HDFS.

hadoop fs -put test.txt
Só isso vai colocar o ficheiro no actual. a pasta do utilizador.

Ou, se isso é muito trabalho para escrever para /tmp em vez disso


Uma opção preguiçosa é reescrever a sua conta de utilizador para o super utilizador.

export HADOOP_USER_NAME=hdfs 
hadoop fs -put test.txt /user

E é por isso que o hadoop não é seguro nem faz valer o acesso à conta do utilizador por omissão (ou seja, nunca o faça na produção)


E finalmente, você pode sempre simplesmente desligar as permissões completamente no hdfs-site.xml (mais uma vez, apenas útil nas fases de desenvolvimento)

 <property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>
 4
Author: OneCricketeer, 2017-12-20 05:55:40

Se observar o seu resultado hdfs dfs -ls, verá que apenas o super-utilizador HDFS tem as permissões para essa localização.

Você tem duas soluções aqui

Um é mudar as permissões para chaitu através do usuário root e fazer chaitu como usuário ou proprietário, algo como este hdfs dfs -chown -R hdfs:chaitu /path então você será capaz de obter acesso a esse ser um proprietário. Outra maneira suja é dar hdfs dfs -chmod -R 777 /path da raiz, a partir do posto de segurança este 777 não é bom.

O segundo está a usar ACLS que dá-lhe o acesso temporário

Por favor, passe por este link para mais compreensão.

Mais em ACLS

Isto é tão básico e importante para você aprender, tente os sugeridos acima e deixe-me saber se aqueles não funcionam eu posso ajudar mais com base no erro que você recebe.

 3
Author: roh, 2017-12-20 05:44:48