Pivotal Knowledge Base

フォローする

セキュアなクラスタでHadoopデーモンの起動が 「Unable to obtain password from user」と表示され失敗する

環境

製品 バージョン
 Pivotal HD  
 Hadoop クラスタ  

事象

セキュアなHadoopクラスタで、Hadoopデーモン(namenode / datanodeなど)の起動がケルベロス認証の問題により失敗するといった状況に遭遇することがある。

各デーモンのログは、この問題を特定することの一助となる。 

エラーメッセージ:

"Unable to obtain password from user"

Namenodeのログから抜粋したものは以下である。

2014-03-27 17:57:57,904 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Exception in namenode join
java.io.IOException: Login failure for hdfs/dev6ha@SATURN.LOCAL from keytab /etc/security/phd/keytab/hdfs.service.keytab
        at org.apache.hadoop.security.UserGroupInformation.loginUserFromKeytab(UserGroupInformation.java:836)
..
Caused by: javax.security.auth.login.LoginException: Unable to obtain password from user
        at com.sun.security.auth.module.Krb5LoginModule.promptForPass(Krb5LoginModule.java:789)
..
2014-03-27 18:15:33,186 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1
2014-03-27 18:15:33,188 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hdm1.saturn.local/10.246.67.243

解決策

上記のログ抜粋を例として、 以下の観点が調査を始める上で役立つであろう。

Principal nameが何かを特定

: hdfs/dev6ha@SATURN.LOCAL

hdfs-site.xml内の Kerberos principal name は、Kerberos認証するために指定する。ノードの役割に応じて、dfs.namenode.kerberos.*.principal と dfs.datanode.kerberos.*.principal パラメータに正しくprincipal nameが設定されているか検証する。hdfs-site.xml内で変数「_HOST」を使用している場合は、hostname –f が完全修飾ホスト名を返し、ログファイルに示されている principal nameに一致しているか確認する。構成上の問題(例えばDNSがホストのIPアドレスを返すが、/etc/hosts には同ホストに異なるIPアドレスが指定されているなど)がある場合は、_HOST が正しく置き換わらず、本エラーが発生する。 

ヒント:この例では、DNSが返すIPアドレスは 10.246.67.243だが、/etc/hosts は10.246.67.218を指しており、NameNode High Availability構成であるために、_HOST がNameservice名(dev6ha)に置き換わってしまったと考えられる

使用されているKeytabファイルが何かを特定 

/etc/security/

/etc/security/

/etc/security/phd/keytab/hdfs.service.keytab

hdfs-site.xml内で定義されたkeytab ファイルが存在しない場合は、本エラーが表示される。そのため、keytabファイルのパスとファイル名を確認する。

Principal nameとkeytabを適用してkinitが実行できるか検証

[root@phd11-nn keytab] kinit -ket  /etc/security/phd/keytab/hdfs.service.keytab hdfs/dev6ha@SATURN.LOCAL

kinitが失敗した場合は、DNSまたは /etc/hosts と、keytabファイルのホスト名のIPアドレスマッピングが食い違っている可能性がある。このような状態でも同エラーが表示される。

Keytabファイルの内容の検証手順:

klist -ket /etc/security/phd/keytab/hdfs.server.keytab

Keytabファイルの再生成手順:

[root@KDC server] kadmin.local 
ktadd -norandkey -k /etc/security/keytab/hdfs-hostid.service.keytab  hdfs/host_fqdn@REALM  HTTP/host_fqdn@REALM

 

追加情報

ホスト名または IPアドレスの決定方法:

DNSと/etc/hosts のどちらを先に見ているか 、/etc/nsswitch.conf を確認する。以下のようにDNSの前に、/etc/hostsファイルを見るか、またはその逆で登録されている。

hosts:      files dns

注意: 本エラーが発生する他の理由を見つけた場合、本ナレッジベースを随時更新していく予定。

コメント

Powered by Zendesk