2017-12-20 16 views
0

텍스트 파일을 hdfs 위치로 복사하려고합니다.
나는 액세스 문제에 직면하고 있으므로 권한을 변경하려고 시도했습니다.
는하지만 오류가 아래 같은 외장을 변경할 수 없습니다 해요 : hdfs 디렉토리에 대한 읽기 권한을 변경할 수 없습니다.

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

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

[email protected]:~$ 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 

친절하게 내가 완전한 읽기에 대한 권한을 변경하는 방법을 도와 모든 사용자가 HDFS 폴더에 액세스하는 물품.

+0

@Chaitu 질문에서 bigdata와 yarn 태그를 제거하십시오. – roh

답변

2

hdfs dfs -ls 결과를 보면 HDFS 수퍼 유저 만 해당 경로에 대한 권한을 가지고 있음을 알 수 있습니다.

당신은

한 다음 해당 되에 대한 액세스를 얻을 수있을 것입니다 루트 사용자와 사용자 또는 소유자,이 hdfs dfs -chown -R hdfs:chaitu /path 같은으로 chaitu을 통해 chaitu 할 권한을 변경하는 것입니다 여기에 두 가지 솔루션을 가지고 소유자. 다른 더러운 방법은 루트에서 hdfs dfs -chmod -R 777 /path을주는 것입니다.이 777은 좋지 않습니다.

두 번째는 당신에게

더 이해를 위해이 link를 통해 이동하시기 바랍니다 임시 액세스를 제공하는 ACL을 사용하고 있습니다. ACLS

이것은 당신이 배울 수 있도록 기본적이고 중요한에

더, 위의 제안 것들을 시도하고 사람들은 내가 당신이 얻을 오류에 따라 더 도움이 작동하지 않는 경우 알려 주시기 바랍니다.

1

첫째로, 당신은 직접/사용자 폴더에 쓰기도에 777을 설정할 수 없습니다 그것은 당신이, 심지어 맵리 듀스 작업을 실행하려면 현재 사용자에 대한 사용자 디렉토리가 필요 당신 때문에거야

HDFS 수퍼 유저가되기 위해서는 먼저 sudo su - hdfs이 필요합니다.

그런 다음이가 HDFS 사용자의 사용자 계정

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

exit에 대한 HDFS 디렉토리를 생성하는 실행하고 chaithu는 이제 자신의 HDFS 디렉토리에 쓸 수 있습니다.

hadoop fs -put test.txt 

그 혼자서 파일을 현재 사용자의 폴더에 저장합니다. 당신은/tmp로 물품이 너무 많은 작업의 경우


또는 대신


게으른 옵션은 슈퍼 사용자에게 사용자 계정을 다시 작성하는 것입니다.

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

하둡은 고정 또는 기본적으로 사용자 계정 액세스를 적용하지 않는 이유는


그리고 마지막으로 (생산에서이 작업을 수행하지 IE), 당신은 언제나 HDFS에 완전히 꺼 권한을 설정할 수 있습니다 -대지.xml (다시, 개발 단계에서만 유용함)

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