복붙노트

[HADOOP] Apache Pig 사용 권한 문제

HADOOP

Apache Pig 사용 권한 문제

Apache Pig를 Hadoop 클러스터에서 실행하려고 시도하고 있으며 사용 권한 문제가 발생했습니다. 돼지 자체가 시작되어 돼지 껍데기에서 클러스터에 연결됩니다. HDFS 디렉토리를 통과 할 수 있습니다. 그러나 실제로 데이터를로드하고 Pig 명령을 실행하려고하면 사용 권한 관련 오류가 발생합니다.

grunt> A = load 'all_annotated.txt' USING PigStorage() AS (id:long, text:chararray, lang:chararray);
grunt> DUMP A;
2011-08-24 18:11:40,961 [main] ERROR org.apache.pig.tools.grunt.Grunt - You don't have permission to perform the operation. Error from the server: org.apache.hadoop.security.AccessControlException: Permission denied: user=steven, access=WRITE, inode="":hadoop:supergroup:r-xr-xr-x
2011-08-24 18:11:40,977 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1066: Unable to open iterator for alias A
Details at logfile: /Users/steven/Desktop/Hacking/hadoop/pig/pig-0.9.0/pig_1314230681326.log
grunt> 

이 경우, all_annotated.txt는 내가 만든 HDFS 홈 디렉토리에있는 파일이며 가장 확실한 권한이 있습니다. 같은 파일을로드하려고해도 같은 문제가 발생합니다. 그러나 나는 그 자체로 문제가 있다고 생각하지 않습니다. 오류 자체가 돼지가 어딘가에서 글을 쓰려고한다는 것을 나타냅니다. 주변을 검색해 보니, 특정 Pig Latin 문 (순서 등)이 hdfsd-site의 hadoop.tmp.dir 속성에 의해 제어되는 HDFS 파일 시스템의 임시 디렉토리에 대한 쓰기 액세스 권한이 필요하다는 제안이 몇 가지 메일 링리스트 게시물에서 발견되었습니다 .xml. 나는로드가 그 범주에 속한다고 생각하지 않지만 단지 HDO 홈 디렉토리 내의 디렉토리를 가리 키도록 hadoop.tmp.dir을 변경 했으므로 문제가 지속됩니다.

그래서, 거기에있는 사람 중에 무슨 일이 벌어 질지에 대한 아이디어가 있습니까?

해결법

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

    1.아마 당신의 pig.temp.dir 설정. hdfs의 기본값은 / tmp입니다. 돼지는 거기서 임시 결과를 쓸 것입니다. / tmp에 대한 권한이 없으면 돼지는 불평 할 것입니다. -Dpig.temp.dir을 사용하여이를 무시하십시오.

    아마 당신의 pig.temp.dir 설정. hdfs의 기본값은 / tmp입니다. 돼지는 거기서 임시 결과를 쓸 것입니다. / tmp에 대한 권한이 없으면 돼지는 불평 할 것입니다. -Dpig.temp.dir을 사용하여이를 무시하십시오.

  2. ==============================

    2.문제는 hadoop.tmp.dir이 HDFS가 아닌 로컬 파일 시스템의 디렉토리라는 것입니다. 해당 속성을 쓰기 권한이있는 로컬 디렉토리로 설정해보십시오. Hadoop의 일반 MapReduce를 사용하여 동일한 오류가 발생했습니다.

    문제는 hadoop.tmp.dir이 HDFS가 아닌 로컬 파일 시스템의 디렉토리라는 것입니다. 해당 속성을 쓰기 권한이있는 로컬 디렉토리로 설정해보십시오. Hadoop의 일반 MapReduce를 사용하여 동일한 오류가 발생했습니다.

  3. from https://stackoverflow.com/questions/7194069/apache-pig-permissions-issue by cc-by-sa and MIT license