使用java

时间:2016-08-04 09:24:08

标签: java hadoop hbase titan

我正在学习泰坦数据库。我已在本地模式下成功运行它。现在,我正试图在"远程服务器模式"中使用Titan数据库。在Titan文档中介绍。我的Titan版本是Titan-1.0.0-hadoop1。

我的局域网中有群集,包括cloud12cloud13。我在其上安装了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

2 个答案:

答案 0 :(得分:2)

由于您使用的是external Zookeeper合奏,因此需要检查一些事项:

  1. hbase.zookeeper.quorum中添加hbase-site.xml属性值。该值应该是逗号分隔的Zookeeper节点列表。默认为localhost

  2. export HBASE_MANAGES_ZK=false添加到hbase-env.sh。默认为true

  3. 确保zookeeper.znode.parent中的hbase-site.xml属性值与Titan配置中storage.hbase.ext.zookeeper.znode.parent的值匹配。它默认为/hbase。如果这些值不匹配,请Titan connection to HBase will hang

  4. 确保clientPort中的zoo.cfg属性值与hbase.zookeeper.property.clientPort中的hbase-site.xml值相匹配,并且与Titan中的storage.hbase.ext.hbase.zookeeper.property.clientPort值相匹配组态。它默认为2181。如果这些不匹配,您会在日志中看到连接异常。

  5. 确保Zookeeper节点使用可访问的IP地址(而不是clientPort)在localhost上进行侦听。

  6. 一旦您确认可以连接到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

好的,