복붙노트

[HADOOP] hdfs에서 권한이 거부되었습니다.

HADOOP

hdfs에서 권한이 거부되었습니다.

나는 hadoop 분산 파일 시스템에 익숙하지 않은, 내 machine.but에 hadoop 단일 노드의 전체 설치를 완료했습니다.하지만 그 후에 hdfs에 데이터를 업로드하려고 할 때 Permission Denied라는 오류 메시지가 나타납니다.

명령이있는 터미널의 메시지 :

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$ 

sudo를 사용하고 sudo 사용자에게 사용자를 추가 한 후 :

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$ 

해결법

  1. ==============================

    1.dfs 권한을 비활성화하여 임시로이 문제를 해결했습니다. 아래 속성 코드를 추가하여 conf / hdfs-site.xml에

    dfs 권한을 비활성화하여 임시로이 문제를 해결했습니다. 아래 속성 코드를 추가하여 conf / hdfs-site.xml에

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

    2.나는 비슷한 상황이었고 여기서 다소 다른 접근 방식이있다.

    나는 비슷한 상황이었고 여기서 다소 다른 접근 방식이있다.

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

    실제로하는 일은 로컬 권한에 따라 로컬 파일을 읽는 것이지만 HDFS에 파일을 배치하면 사용자 hdfs처럼 인증됩니다. 다른 ID (실제 인증 스키마 구성에주의하십시오. 그러나 이는 대개의 경우가 아닙니다)로이 작업을 수행 할 수 있습니다.

    장점 :

  3. ==============================

    3.여기서 두 가지 문제가 발생했습니다.

    여기서 두 가지 문제가 발생했습니다.

    hduser@ubuntu:/usr/local/hadoop$ hadoop fs -put /usr/local/input-data/ /input put: /usr/local/input-data (Permission denied)
    

    여기서 사용자 hduser는 로컬 디렉토리 / usr / local / input-data에 액세스 할 수 없습니다. 즉, 로컬 권한이 너무 제한적입니다. 변경해야합니다.

    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
    

    여기서 사용자 root (sudo를 사용하고 있기 때문에)는 HDFS 디렉토리 / 입력에 접근 할 수 없습니다. 보시다시피 : hduser : supergroup : rwxr-xr-x는 hduser 만 쓰기 권한이 있다고 말합니다. Hadoop은 특별한 사용자로서 루트를 존중하지 않습니다.

    이 문제를 해결하려면 로컬 데이터에 대한 사용 권한을 변경하는 것이 좋습니다.

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

    그런 다음 put 명령을 hduser로 다시 시도하십시오.

  4. ==============================

    4.루트에서 hduser로 쉘을 시작하고 명령을 실행하십시오.

    루트에서 hduser로 쉘을 시작하고 명령을 실행하십시오.

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

    [최신 정보] 또한 hdfs 사용자는 수퍼 유저이며 모든 r / w 권한을가집니다.

  5. ==============================

    5.다음 단계를 사용하여이 문제를 해결했습니다.

    다음 단계를 사용하여이 문제를 해결했습니다.

    su hdfs
    hadoop fs -put /usr/local/input-data/ /input
    exit
    
  6. from https://stackoverflow.com/questions/11593374/permission-denied-at-hdfs by cc-by-sa and MIT license