7

HadoopクラスターでApachePigを起動して実行しようとしていますが、アクセス許可の問題が発生しています。Pig自体が起動し、クラスターに正常に接続しています。Pigシェル内からls、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ホームディレクトリ内のファイルであり、最も確実に次の権限を持っています。どのファイルを作成しようとしても、同じ問題が発生しますload。ただし、エラー自体はPigがどこかに書き込もうとしていることを示しているため、これが問題になるとは思いません。order調べてみると、特定のPig Latinステートメント(など)がhadoop.tmp.dir、hdfsd-site.xmlのプロパティによって場所が制御されているHDFSファイルシステム上の一時ディレクトリへの書き込みアクセスが必要であることを示唆するメーリングリストの投稿がいくつか見つかりました。そのカテゴリに分類されるとは思い ませんloadが、念のためhadoop.tmp.dir、HDFSホームディレクトリ内のディレクトリを指すように変更しましたが、問題は解決しませんでした。

それで、そこにいる誰かが何が起こっているのかについて何か考えを持っていますか?

4

2 に答える 2

13

おそらく pig.temp.dir 設定。hdfs のデフォルトは /tmp です。Pig はそこに一時的な結果を書き込みます。/tmp へのアクセス許可がない場合、Pig は文句を言います。-Dpig.temp.dir でオーバーライドしてみてください。

于 2011-08-26T06:51:23.790 に答える
0

hadoop.tmp.dir問題は、HDFSではなく、ローカルファイルシステム上のディレクトリである可能性があります。そのプロパティを、書き込みアクセス権があることがわかっているローカルディレクトリに設定してみてください。Hadoopで通常のMapReduceを使用して同じエラーが発生しました。

于 2011-08-25T16:53:11.717 に答える