Kerberosとphoenixの統合に関する問題
2800 ワード
本人が使用しているphoenix 5.0.xおよびクラスタhdp 3.1 hbase 2.0.2
エラーメッセージは
明確な情報はsever not found in Kerberos databasesであることがわかります.
hbase api接続を使用しているので大丈夫です.
私個人のphoenix構成も繰り返しチェックが正しいです.
コードは個人情報の検証が正しいことを報告します!
では、問題は後でサービス権限を取得することです.
個人的には、hdpサービスがphoenix queryseverを構成していないため、Kerberos構成がこのphoenixのprincipe nameを登録していないと推定されます.パーソナルユーザは検証できるが、h指定severにアクセスする権限を取得できない.だからこの間違いを報告します.
運用次元に連絡して、どのように処理するかを検討しています.
だいたい分かりました.コードの中でphoenixへの接続のためです.hbaseのconfを定義する必要があります.個人的にhbase.master.kerberos.principalを定義します.この属性に誤りがあります.クラスタ構成がメンテナンスによって更新されました.更新後のプロパティを再構成します.次のコード内ネットワークへのアクセスに成功しました.素手で打つ.プライバシー処理済み
以上の配置を見終わったら、通常のjdbcのルートのように書けばいいです.
実測には何の問題もない!問題があったら連絡してください.
エラーメッセージは
19/08/27 14:32:09 INFO RpcRetryingCallerImpl :Call exception, tries=10, retries=35, started=38465 ms ago, cancelled=false, msg=row 'bvuser,195861555,99999999999999' on table 'hbase:meta' at region=hbase:meta,,1.1588230740, hostname=blueview-t07,16020,1478499043493, seqNum=0
failed on local exception ;javax.security.sasl.SaslException:GSS initate failed [
Caused by GSSException :No valid credentials provided (Mechanism level :S
ever not found in Kerberos databases(7) - LOOKING UP SERVER],
明確な情報はsever not found in Kerberos databasesであることがわかります.
hbase api接続を使用しているので大丈夫です.
私個人のphoenix構成も繰り返しチェックが正しいです.
19/08/27 14:31:52 INFO UserGroupinformation:Login successful for user it1
using keytab file /home/user/user.keytab
コードは個人情報の検証が正しいことを報告します!
では、問題は後でサービス権限を取得することです.
個人的には、hdpサービスがphoenix queryseverを構成していないため、Kerberos構成がこのphoenixのprincipe nameを登録していないと推定されます.パーソナルユーザは検証できるが、h指定severにアクセスする権限を取得できない.だからこの間違いを報告します.
運用次元に連絡して、どのように処理するかを検討しています.
だいたい分かりました.コードの中でphoenixへの接続のためです.hbaseのconfを定義する必要があります.個人的にhbase.master.kerberos.principalを定義します.この属性に誤りがあります.クラスタ構成がメンテナンスによって更新されました.更新後のプロパティを再構成します.次のコード内ネットワークへのアクセスに成功しました.素手で打つ.プライバシー処理済み
val preperties=new Properties()
// hbase
properties.setProperty("hbase.zookeeper.quorum","localhost")
properties.setProperty("hbase.master.kerberos.principal","hbase/_HOST@***")
properties.setProperty("hbase.regionserver.kerberos.principal","hbase/_HOST@***")
properties.setProperty("phoenix.queryserver.kerberos.principal","HTTP/_HOST@***")
properties.setProperty("hadoop.security.authentication","kerberos")
properties.setProperty("hbase.security.authentication","kerberos")
properties.setProperty("zookeeper.znode.parent","/hbase-secure")
//
properties.setProperty("hbase.myclient.principal","user/@**")
properties.setProperty("hbase.myclient.keytab","***/user.keytab")
以上の配置を見終わったら、通常のjdbcのルートのように書けばいいです.
// url principal :
//localhost zk node ,
val url="jdbc:phoenix:localhost:2181:/hbase-secure:/user@***"
var connection:Connecion=null
val sql="select * from **"
try{
Class.forname("org.apache.phoenix.jdbc.PhoenixDriver")
connection=DriverManager.getConnection(url,properties)
val statement=connection.createStatement()
val rs=statement.executeQuery(sql)
while(rs.next()){
val aa=rs.getStrin("aa")
array+= aa
}
}catch{
case t:Throwable=> t.printStackTrace()
}
array
実測には何の問題もない!問題があったら連絡してください.