Centos 6 に Hadoop 1.2.1 環境をセットアップしました。また、ローカル ファイル システムに ndfs をマウントする nfs-proxy も使用して、hdfs 内のファイルにローカルでアクセスできるようにしています。今日まで完璧に動作していましたが、ユーザー認証を LDAP と統合するように求められました。何らかの理由で、既存の UNIX ユーザーの uid を変更し、その新しい uid を LDAP に保存する必要があります。
変更後、hdfs はユーザーの新しい uid を取得できないようです。つまり、新しいファイルを hdfs に配置すると、古い uid を使用してファイルが hdfs に保存されます。これは、hdfs のローカル マウント ポイントから新しいファイルの uid を確認すると、古い uid が表示されるためわかります。また、ファイルは別のユーザーに属しているため、ローカル ファイル システム上のファイルにアクセスできません。
Hadoop をテスト的に再起動しましたが、効果がありません。何か提案はありますか?
答え1
LDAP ユーザーを使用していることを確認する必要があります。id
ファイルを書き込むときに、実際に LDAP ユーザーであり、ローカル ユーザーではないかどうかを確認してください。
ところで、あなたが別のサーバーから書き込もうとしているのだと理解しています。もしそうなら、このマシンも LDAP を使用していますか、それともローカル アカウントを使用していますか? このユーザーは、ファイルを書き込むときに独自の uid を使用するためです。
確認できる項目:
/etc/nsswitch.conf
マシンがファイルを使用する順序、またはアカウント情報を取得するために LDAP を使用する順序getent passwd
LDAPユーザーを知っているかどうかを確認する- 私の個人的な経験では、LDAP ユーザーとローカル ユーザーを同じ名前にすることは避けるべきです。これは、UID やホーム ディレクトリなどでさまざまな厄介な問題を引き起こします。したがって、LDAP で同じユーザー名のローカル ユーザーが存在する場合は、ローカル マシンから削除することを検討してください。サーバーを LDAP 認証に移行するときは、常にローカル ユーザーを削除します。
答え2
ローカルマシンにマウントしたものをアンマウントし、HDFS サービスを再起動します。HDFS
内のファイルにローカルでアクセスできるように、ndfs をローカルファイルシステムにマウントし始めます。