2016-10-14 11 views
0

現在、私はHadoopクラスタのセキュリティを強化するプロジェクトに取り組んでいます。最終的には、KerberosとSentryを認証と承認に使用します。そして、ユーザー名とグループのマッピングはAD/LDAP(?)から来ると思います。Hadoopは、linuxシェルのユーザー名とグループのマッピングから、ユーザー名とグループのマッピングをどこから取得しますか?

しかし、今私は勉強しています。私は質問があり、私はそれを把握していません

ユーザー名/グループマッピング情報はどこから来たのですか?

私が知る限り、Hadoopのユーザー名とグループ名はなく、ローカルクライアントマシンまたはKerberos領域のどこからでも、ユーザー名とグループ名はクライアントから取得されます。しかし、それは私のために少し漠然としています、そして、実装の詳細をここで得ることができますか?

この情報は、HDFSクライアントがあるマシンか、またはLinuxシェルのユーザー名とグループの名前ノードからですか。それとも、データノードに関係するコンテキストにも依存しますか?データノードと名前ノードが異なるボックスまたはローカルボックス内のユーザーグループマッピングを持つ場合はどうでしょうか?

答えて

1

Hadoopは、その情報をHADOOP_USER_NAMEという名前のグローバル変数から取得します。

あなたが別のuser_nameを渡したい場合は、次のように書くことができます。

HADOOP_USER_NAME=yourname hadoop dfs -put ... 

ので、コマンドは、クライアントと名前ノード、HADOOP_USER_NAME=VALUE

+0

私はこれが正しいと思います。しかし、これがHadoopがユーザー名を取得する唯一の方法ですか? – cdhit

1

を起動しているすべてのHadoopサービスをしていますLinuxボックスのグループメンバーシップとユーザー名を確認するには、デフォルトでidコマンドを使用します。 (ただし、Windowsクライアントの詳細についてはわかりませんが、最近ではJNIを介して行われていますので、その側にも解決策が必要です)

これは結果がローカルボックスのユーザグループマッピング。バックエンドを問わずKerberosを使用している場合、またはsssdなどを使用してバックエンドを集中管理している場合は、nsswitch.confにボックスを設定してidコマンドの背後にあるボックスを使用できます。

サイドノート:マッピングの実行に使用する戦略を定義するhadoop.security.group.mappingというプロパティがあります。 LDAPバックエンドを持っていてもLDAPGroupMappingを使用することはお勧めしません.JNIBasedGroupMappingWithFallbackは信頼性が高く、うまく機能しています。

関連する問題