2017-03-29 9 views
3

私はSpark 1.6.0を使用して、API DataFrame.read.parquet($path)によってKerberos対応HDFS上のデータにアクセスしていました。スパークヤーンクライアントモードでKerberosチケットを更新する方法は?

私のアプリケーションは、クライアントモードのspark on yarnとしてデプロイされています。 デフォルトでは、Kerberosチケットは24時間ごとに有効期限が切れます。最初の24時間はすべて正常に動作しますが、24時間後(またはそれ以上、27時間など)にファイルを読み込めません。

私はログインしてチケットを更新するいくつかの方法を試しましたが動作しません。

  1. ​​コマンドライン
  2. スタートでspark-defaults.conf
  3. 設定し--keytab--principalspark.yarn.keytabspark.yarn.principalを設定するコードでタイマーがUserGroupInformation.getLoginUser().checkTGTAndReloginFromKeytab() 2時間ごとに呼び出します。

エラーの詳細は以下のとおりです。

WARN [org.apache.hadoop.ipc.Client$Connection$1.run(Client.java:671)] - Couldn't setup connection for adam/[email protected] to cdh01/192.168.1.51:8032 
DEBUG [org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1632)] - PrivilegedActionException as:adam/[email protected] (auth:KERBEROS) cause:java.io.IOException: Couldn't setup connection for adam/[email protected] cdh01/192.168.1.51:8032 
ERROR [org.apache.spark.Logging$class.logError(Logging.scala:95)] - Failed to contact YARN for application application_1490607689611_0002. 
    java.io.IOException: Failed on local exception: java.io.IOException: Couldn't setup connection for adam/[email protected] to cdh01/192.168.1.51:8032; Host Details : local host is: "cdh05/192.168.1.41"; destination host is: "cdh01":8032; 
+0

Sparkアプリをどのように起動しますか?スパーク提出で?おじさん? –

+0

spark-submit-spool-submitを使用してSparkアプリを送信する--deploy-mode client --principal xxx --keytab xxx – Adam

+0

このリンクが役立つかもしれない:https://community.hortonworks.com/questions/35261/what-is -correct-strategy-for-spark-streaming-kerbe.html –

答えて

1

問題が解決しました。 Hadoopのバージョンが間違っているために発生しました。 Spark 1.6アセンブリjarでは、古いバージョンを参照しています。 Hadoop libのビルド・イン・ハドープ・ライブラリを使わずにもう一度ダウンロードし、サード・パーティーのHadop 2.8 libを参照してください。 それだけで動作します。

関連する問題