52

私は Hadoop 分散ファイル システムを初めて使用します。自分のマシンに 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 を使用し、hduser を sudouser に追加した後:

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$ 
4

6 に答える 6

72

dfs パーミッションを無効にすることで一時的にこの問題を解決しました。以下のプロパティ コードを conf/hdfs-site.xml に追加します。

<property>
  <name>dfs.permissions</name>
  <value>false</value>
</property>
于 2012-07-22T19:02:32.057 に答える
56

私は同様の状況にありましたが、これは多少異なる私のアプローチです:

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

実際に行うことは、ローカルのアクセス許可に従ってローカル ファイルを読み取ることですが、ファイルを HDFS に配置するときは user のように認証されますhdfs。他の ID を使用してこれを行うことができます (実際の認証スキームの構成に注意してください。ただし、これは通常は当てはまりません)。

利点:

  1. アクセス許可は HDFS に保持されます。
  2. 必要ありませんsudo
  3. 実際に適切なローカル ユーザー「hdfs」はまったく必要ありません。
  4. 以前のポイントのため、何もコピーしたり、権限を変更したりする必要はありません。
于 2013-11-15T13:32:10.487 に答える
16

ここで 2 つの別々の問題が発生しています。


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 ディレクトリへのアクセス権がありません/input。ご覧のとおり、書き込みアクセスhduser:supergroup:rwxr-xr-xのみを持っていると言います。Hadoop は、特別なユーザーとしてhduser尊重しません。root


これを修正するには、ローカル データのアクセス許可を変更することをお勧めします。

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

次に、hduser としてputコマンドを再試行します。

于 2012-07-21T18:58:38.667 に答える
6

次の手順を使用してこの問題を解決しました

su hdfs
hadoop fs -put /usr/local/input-data/ /input
exit
于 2014-10-10T06:24:30.520 に答える