我正在学习泰坦数据库。我已在本地模式下成功运行它。现在,我正试图在"远程服务器模式"中使用Titan数据库。在Titan文档中介绍。我的Titan版本是Titan-1.0.0-hadoop1。
我的局域网中有群集,包括cloud12
和cloud13
。我在其上安装了hadoop-1.2.1,主服务器为cloud12
,服务器为cloud13
。
我想测试创建图表的性能,所以我设计在机器cloud12
上以伪分布式模式启动我的Hbase-0.98.20,其中独立的zookeeper-3.4.6和elasticsearch on {{ 1}}。(我修改了cloud12
,并在hbase-env.sh
中使用默认端口2181
)
Hadoop和HBase似乎经常工作,我通过Jps检查了两台服务器,我还通过HBase shell检查了HBase。
以下是zoo.cfg
的配置:
hbase-site.xml
虽然我在Eclipse中在另一台名为<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://cloud12:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master.port</name>
<value>60000</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/Titan/hbase/zookeeperDir</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/home/Titan/hbase/tmpDir</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase-unsecure</value>
</property>
<property>
<name>hbase.zookeeper.property.maxClientCnxns</name>
<value>600</value>
</property>
</configuration>
的机器上运行我的程序(我在这台机器上安装了Titan-1.0.0),但在输出日志中打印出一个混乱的错误信息。
以下是我的输出中不断重复的错误
789 [main] INFO org.apache.zookeeper.ZooKeeper - 启动客户端连接,connectString = 192.168.12.148:2181 sessionTimeout = 90000 watcher = hconnection-0x12d3a4e9,quorum = 192.168.12.148:2181,baseZNode = / hbase
870 [main] INFO org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper - 进程标识符= hconnection-0x12d3a4e9连接到ZooKeeper ensemble = 192.168.12.148:2181
878 [main-SendThread(192.168.12.148:2181)] INFO org.apache.zookeeper.ClientCnxn - 打开与服务器192.168.12.148/192.168.12.148:2181的套接字连接。不会尝试使用SASL进行身份验证(未知错误)
1030 [main-SendThread(192.168.12.148:2181)] INFO org.apache.zookeeper.ClientCnxn - 建立到192.168.12.148/192.168.12.148:2181的套接字连接,启动会话
1049 [main-SendThread(192.168.12.148:2181)] INFO org.apache.zookeeper.ClientCnxn - 在服务器192.168.12.148/192.168.12.148:2181上完成会话建立,sessionid = 0x15654717951001b,协商超时= 40000
1054 [main] INFO org.apache.hadoop.hbase.client.ZooKeeperRegistry - 在ZooKeeper中读取的ClusterId为null
在ZooKeeper中读取的ClusterId为空?我真的很困惑。我试图解决问题,但我发现我的错误与其他许多错误类似,但我无法从Google或其他网站获得明确答案。我的架构设计是否有错误?或配置错误?
我可以确保我的主机和群集的时间都是正确的。以下是我在cloud6
cloud12
上连接Hbase的程序的一部分,我的代码中是否有任何错误或缺失?
cloud6
答案 0 :(得分:2)
由于您使用的是external Zookeeper合奏,因此需要检查一些事项:
在hbase.zookeeper.quorum
中添加hbase-site.xml
属性值。该值应该是逗号分隔的Zookeeper节点列表。默认为localhost
。
将export HBASE_MANAGES_ZK=false
添加到hbase-env.sh
。默认为true
。
确保zookeeper.znode.parent
中的hbase-site.xml
属性值与Titan配置中storage.hbase.ext.zookeeper.znode.parent
的值匹配。它默认为/hbase
。如果这些值不匹配,请Titan connection to HBase will hang。
确保clientPort
中的zoo.cfg
属性值与hbase.zookeeper.property.clientPort
中的hbase-site.xml
值相匹配,并且与Titan中的storage.hbase.ext.hbase.zookeeper.property.clientPort
值相匹配组态。它默认为2181
。如果这些不匹配,您会在日志中看到连接异常。
确保Zookeeper节点使用可访问的IP地址(而不是clientPort
)在localhost
上进行侦听。
一旦您确认可以连接到Titan表,我认为INFO
消息可以安全忽略。您可以通过log4j.properties
中的设置切换日志记录级别:
log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop.hbase.client=WARN
log4j.logger.org.apache.hadoop.hbase.zookeeper=WARN
还有一个open issue针对Titan调查Zookeeper客户端连接频繁发生的原因。
答案 1 :(得分:0)
我也遇到了这个问题。 只需将zookeeper3.4.5升级到zookeeper3.4.6,并同步时间, 但仍然有很多INFO消息,所以我修改了log4j:
log4j.properties:
log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop.hbase.client=WARN
log4j.logger.org.apache.hadoop.hbase.zookeeper=WARN
好的,