2017-08-02 246 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

相关问题