2017-08-02 82 views
0

我正在從Spark(EMR,Yarn模式)處理HBase表。其實,PySpark--我認爲這不重要。我通過HBase集羣之外的單獨Thrift服務調用HBase。Spark的HBase客戶端無法使用SASL在ZooKeeper中進行身份驗證

它看起來像我能夠連接到節儉服務器,但我有一些的ZooKeeper的問題(因爲錯誤的指向我的ZooKeeper端口2181)。

爲什麼會發生這種情況,我該如何解決這個問題?

17/08/02 20:21:31 INFO ZooKeeper: Client environment:java.io.tmpdir=/tmp 
17/08/02 20:21:31 INFO ZooKeeper: Client environment:java.compiler=<NA> 
17/08/02 20:21:31 INFO ZooKeeper: Client environment:os.name=Linux 
17/08/02 20:21:31 INFO ZooKeeper: Client environment:os.arch=amd64 
17/08/02 20:21:31 INFO ZooKeeper: Client environment:os.version=4.4.35-33.55.amzn1.x86_64 
17/08/02 20:21:31 INFO ZooKeeper: Client environment:user.name=hadoop 
17/08/02 20:21:31 INFO ZooKeeper: Client environment:user.home=/home/hadoop 
17/08/02 20:21:31 INFO ZooKeeper: Client environment:user.dir=/home/hadoop/data 
17/08/02 20:21:31 INFO ZooKeeper: Initiating client connection, connectString=thrift-internal.production.k8s.prod.node.io:2181 sessionTimeout=180000 [email protected]e 
17/08/02 20:21:31 INFO ClientCnxn: Opening socket connection to server ip-172-23-115-152.us-west-2.compute.internal/172.23.115.152:2181. Will not attempt to authenticate using SASL (unknown error) 

回答

0

作爲HBase的客戶端,你必須連接到這兩個:HBase的服務(直接或通過節儉)和動物園管理員服務(通常在同一臺服務器HBase的主上運行)。

當你使用節儉服務器庫使用相同的host地址進行通信的ZooKeeper連接到HBase的。

hbase = happybase.Connection(host, port=port, timeout=10000) 

然而,這ZooKeeper的地址不正確如果儲蓄服務器上的一個單獨的硬件/ IPS工作。

所以,你必須使用常規代碼

hbase = happybase.Connection(host, port=port, timeout=10000) 

但指定HBaseHost(動物園管理員),當您通過hbase.zookeeper.quorum參數連接到表連接到節儉:

conf = {"hbase.zookeeper.quorum": HBaseHost, "hbase.mapreduce.inputtable": table} 
    rdd = spark_context.newAPIHadoopRDD(
     "org.apache.hadoop.hbase.mapreduce.TableInputFormat", 
     "org.apache.hadoop.hbase.io.ImmutableBytesWritable", 
     "org.apache.hadoop.hbase.client.Result", 
     keyConverter=keyConv, 
     valueConverter=valueConv, 
     conf=conf 
    ) 

動物園管理員地址可能在被作爲hbase-site.xml財產hbase.zookeeper.quorum也指定。然後,你需要在你的HBase的客戶端設置這個配置文件。

0

您是否有權訪問您的羣集管理器ex。 Cloudera經理。您可以檢查zookeeper服務是否正常運行或彈出的錯誤消息。

您可以通過 須藤服務飼養員狀態

檢查,或者您也可以通過telnet主機飼養員:

根@主持人:〜#遠程登錄本地主機2181 試圖127.0.0.1 ... 連接到爲myhost。 轉義字符是'^]'。 統計 動物園管理員版本:3.4.3-cdh4.0.1--1,建在06月28日23:59 GMT

如果在獨立模式下運行的JVM進程,您可以通過檢查狀態「 jps'

將顯示jvm進程列表;像這樣的飼養員進程ID HQuorumPeer

相關問題