2011-09-08 6 views
8

を実行している、とのHadoopは、この特定のフォルダに書き込みをしようとしている理由はわからないとき:HadoopのDFS許可の問題私はこの次の権限エラーを取得しています仕事

hadoop jar /usr/lib/hadoop/hadoop-*-examples.jar pi 2 100000 
Number of Maps = 2 
Samples per Map = 100000 
Wrote input for Map #0 
Wrote input for Map #1 
Starting Job 
org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=myuser, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x 

への書き込みしようとしている理由を任意のアイデア私のhdfsのルート?

更新日: hdfsルート(/)を一時的に777のアクセス権に設定した後、「/ tmp」フォルダが作成されていることがわかりました。私は1つのオプションは、誰もが書き込み権限を持つ "/ tmp"フォルダを作成することだと考えていますが、代わりにセキュリティフォルダがユーザーフォルダ(つまり/ user/myuser/tmp)に書き込まれていると、 (!私は問題を追跡助けるためのHadoopメーリングリストでジェフに特別な感謝を)

<configuration> 
    <property> 
     <name>mapreduce.jobtracker.staging.root.dir</name> 
     <value>/user</value> 
    </property> 

    #... 

</configuration> 

も必要jobtrackerサービスの再起動

+0

に権限を与えるあなたは "とHadoopのスタートでしたmyuser "? –

+0

いいえ、私はClouderaを使用していますので、hadoopはおそらくrootとしてサービスとして実行されています –

+2

hadoop fs -chmodを使用して/に777へのアクセス権を設定してみてください。 –

答えて

15

私はこの次の設定で作業を取得することができました

「hdfs」という名前の新しいユーザーを作成することもできます。かなり単純な解決策ではなく、きれいではないでしょう。あなたはあなたはHadoopのルートディレクトリ(/)の代わりに、システムのルートディレクトリのパーミッションを設定するためのアクセス許可を設定する必要があるClouderaのHadoopのマネージャー(CDH3)

+0

ありがとう、非常に同じ問題に遭遇した。それは残念ですが、これはデフォルト値ではありません。 –

+0

hhhm、これを設定した場合、mapred.system.dir(/ hadoop/mapred/system)のアクセス許可がより寛容になる必要があります。 –

+0

/mapred/systemディレクトリをmapredユーザー(mapred)にロックダウンしました。 system.dir =/mapred/system)。 hdfs root(/)はhdfsユーザーだけにも設定されています。まだ問題がある場合は、どのエラーが表示されているのかを教えてください。 –

0

で色相を使用しているとき

はもちろん、これはあります。私も混乱しましたが、言及されたディレクトリはhadoopのファイルシステムであり、システムのものではないことに気付きました。

+0

"hadoop root directory"と言えば、HDFSのルートを意味しますか? HDFSルートのアクセス権を緩くしないようにして、ユーザがルートに書き込むことを防ぐことができました(特定のディレクトリ、つまり "home":/ user/)。 –

+0

そうです。上記の質問の設定は間違っているようです。 HDFS上の特定のディレクトリを指している必要があります。私の場合は、/ opt/hadoop/mapred/local/stagingを指していました。私はディレクトリへの書き込み権限を与え、それはうまく動作していた。 – divinedragon

+0

mapreduce.jobtracker.staging.root.dir =/userの設定が間違っていますか?私はこれについての私の設定でHDFSの場所を参照していることに注意してください。また、私はClouderaを使用している場合は、違いがあります。 –

1

1)以下のコマンド

sudo -u hdfs hadoop fs -mkdir /hadoop/mapred/ 

2を使用してHDFS内{} mapred.system.dir/mapredディレクトリを作成しますが)mapredユーザー

sudo -u hdfs hadoop fs -chown mapred:hadoop /hadoop/mapred/ 
関連する問題