0

Hadoop を学んでいて、疑似分散操作を試してみたい

を使用して Hadoop デーモンを起動しようとするとstart-all.sh、foo-user のような非 root ユーザーを使用するか、root を使用する必要があります。

root を使用しても問題ありませんが、少し気になります。

root 以外のユーザー foo-user を使用すると、ファイルへのアクセス許可がないことを訴える

/var/run/hadoop/hadoop-foo-user-namenode.pid: permission denied
/var/run/hadoop/hadoop-foo-user-tasktracker-foohost.pid: permission denied

ディレクトリにこれら2つのファイルを作成しようとしていました/var/run/hadoop

しようvim /var/run/hadoop/testfileとしましたが、保存できませんでした。したがって、foo-user には書き込み権限がないことがわかります/var/run/hadoop

の許可を確認しました/var/run/hadoop

drwxrwxr-x root hadoop 4096 Feb 8 23:42 hadoop

foo-user はグループ hadoop に属しているため、への書き込み権限が必要/var/run/hadoopです。実際、...jobtracker.pid のような他のいくつかの id ファイルがそこに作成されます。

では、ルートを使用する必要がありますか、start-all.shそれとも許可に何か問題がありますか (私は本当に混乱しています)?

4

2 に答える 2

1

ルートとして Hadoop を起動することはお勧めしません。以下は Yahoo の Hadoop チュートリアルからの引用です。

Hadoop インスタンスを所有するユーザーは、これらの各ディレクトリへの読み取りおよび書き込みアクセス権を持っている必要があります。すべてのユーザーがこれらのディレクトリにアクセスできる必要はありません。必要に応じて chmod でパーミッションを設定します。大規模な環境では、Hadoop タスクを所有して実行するという明確な目的のために、各ノードに「hadoop」という名前のユーザーを作成することをお勧めします。1 人の個人のマシンの場合、Hadoop を自分のユーザー名で実行することはまったく問題ありません。root として Hadoop を実行することはお勧めしません。

foo-userは Linux ファイルシステムのグループに含まれていますが、HDFS のグループ メンバーでもあるhadoopことを確認する必要がありfoo-userます (デフォルトでは、グループは と呼ばれますsupergroup)。実行すると、グループが何であるかがわかりますhadoop fs -ls path_to_your_data

于 2013-02-10T17:54:47.067 に答える
0

グループとユーザーは Hadoop である必要があります。ここにあります:

drwxrwxr-x root hadoop 4096 Feb 8 23:42 hadoop

ルートをhadoopに変更し(現在、Linuxマシンにアクセスできないため、正確なコマンドを言うことはできません)、hadoopユーザーがファイルとディレクトリを作成できることを確認してください/var/run/hadoop. root 以外のユーザーで実行することを強くお勧めします。

于 2013-02-09T12:36:59.317 に答える