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.
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>
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.