私はスタンドアロンのSparkからHive(hadoopクラスタにkerberos認証がある)に接続しようとしています。Hiveに接続するときにSparkでKinit
私はハイブに接続できるスパークプログラムでkinitを行う方法を教えてもらえますか?
UPDATE:私のスパークは、あなたが火花シェル初期化する前にkinitコマンドを実行したり(火花提出)スパークアプリを提出しなければならないのHadoop
私はスタンドアロンのSparkからHive(hadoopクラスタにkerberos認証がある)に接続しようとしています。Hiveに接続するときにSparkでKinit
私はハイブに接続できるスパークプログラムでkinitを行う方法を教えてもらえますか?
UPDATE:私のスパークは、あなたが火花シェル初期化する前にkinitコマンドを実行したり(火花提出)スパークアプリを提出しなければならないのHadoop
異なるクラスタ上です。他のオプションは、キータブを使用してKerberosチケットを取得し、あなたが火花シェルが開いているとあなたが終了したくない、と仮定すると、この
bash -c "kinit -kt /path/to/key/mykey.keytab [email protected]; spark-shell"
に関して、
のようなあなたのスパークプログラムを実行していますあなたは次のようなことをやり直すことができます:
import java.lang.ProcessBuilder
import java.io.PrintWriter
//resets your kerberos login
val p1 = Runtime.getRuntime.exec("kdestroy")
p1.waitFor
//executes kinit,
val p = Runtime.getRuntime.exec("kinit")
val stdin = p.getOutputStream
val pw =new PrintWriter(stdin)
//val pwd = get_password() //get_password() is a function to get your password from a file, or wherever
pw.println(pwd) // you could put your password here , but plain text passwords are generally frowned upon
pw.close
p.waitFor
HiveはHadoop認証ライブラリを使用するので、Scalaの '' org.apache.hadoop.security.UserGroupInformation.loginUserFromKeytab( "[email protected]"、 "/ some/path/to/the.donald.keytab ")' –
SparkがDiffクラスタ上にある場合は同じですか? – AKC
Kerberosの全ポイントは、*リモート*クライアントを認証することです。そのため、Hadoopで使用されるKDC、クラスタを指すHadoop conf、Hadoopクライアント(JAR +ネイティブライブラリ)を指すKerberos confが必要です。クラスタノードの正式なDNS名。それで、どこからでもSparkを走らせることができます。 Windowsからのインクルード - しかし、それは "公式の"ネイティブライブラリがないため、より難しいです。 –
diffクラスターでスパークが発生した場合、どうすればいいですか? – AKC