使用 java 的 Titan-1.0.0+Hbase-0.98.20 远程模式连接错误
A connection error in remote mode of Titan-1.0.0+Hbase-0.98.20 using java
我正在学习 Titan 数据库。我 运行 它在本地模式下成功。现在,我正在尝试使用 Titan 文档中介绍的 "Remote Server Mode" 中的 Titan 数据库。我的 Titan 版本是 Titan-1.0.0-hadoop1.
我的 LAN 中有集群,包括 cloud12
和 cloud13
。我在上面安装了hadoop-1.2.1,master是cloud12
,slave是cloud13
.
我想测试创建图的性能,所以我设计在机器 cloud12
上以伪分布式模式启动我的 Hbase-0.98.20,独立的 zookeeper-3.4.6 和 elasticsearch cloud12
.(我修改了hbase-env.sh
,在zoo.cfg
中使用默认端口2181
)
Hadoop 和 HBase 似乎正常工作,我通过 Jps 检查了两台服务器,我还通过 HBase 检查了 HBase shell。
这是我的 hbase-site.xml
配置:
<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>
虽然我运行我在局域网中另一台名为cloud6
的机器上的Eclipse中的程序(我在这台机器上安装了Titan-1.0.0),我的程序打印了一个混乱的错误信息输出日志。
这是我输出中不断重复的错误
789 [main] INFO org.apache.zookeeper.ZooKeeper - Initiating client connection, 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 - Process identifier=hconnection-0x12d3a4e9 connecting to ZooKeeper ensemble=192.168.12.148:2181
878 [main-SendThread(192.168.12.148:2181)] INFO org.apache.zookeeper.ClientCnxn - Opening socket connection to server 192.168.12.148/192.168.12.148:2181. Will not attempt to authenticate using SASL (unknown error)
1030 [main-SendThread(192.168.12.148:2181)] INFO org.apache.zookeeper.ClientCnxn - Socket connection established to 192.168.12.148/192.168.12.148:2181, initiating session
1049 [main-SendThread(192.168.12.148:2181)] INFO org.apache.zookeeper.ClientCnxn - Session establishment complete on server 192.168.12.148/192.168.12.148:2181, sessionid = 0x15654717951001b, negotiated timeout = 40000
1054 [main] INFO org.apache.hadoop.hbase.client.ZooKeeperRegistry - ClusterId read in ZooKeeper is null
在ZooKeeper中读到的ClusterId为null?我真是一头雾水。我试图解决问题,我发现我的错误与许多其他错误相似,但我无法从 Google 或其他网站获得明确的答案。我的架构设计有错误吗?还是配置错误?
我可以确保我的主机和集群的时间都是正确的。这是我的程序的一部分,用于从 cloud6
连接 cloud12
上的 Hbase,我的代码有什么错误或不足吗?
public static final String INDEXNAME = "search";
...
BaseConfiguration conf=new BaseConfiguration();
conf.setProperty("storage.backend", "hbase");
conf.setProperty("storage.hostname", "192.168.12.148");//ip of cloud12
conf.setProperty("storage.tablename", "graph1");
conf.setProperty("index." + INDEXNAME + ".backend", "elasticsearch");
conf.setProperty("index." + INDEXNAME + ".hostname", "192.168.12.148");
conf.setProperty("index." + INDEXNAME + ".elasticsearch.local-mode", false);
conf.setProperty("index." + INDEXNAME + ".elasticsearch.client-only", true);
由于您使用的是 external Zookeeper 集成,因此需要检查一些事项:
在hbase-site.xml
中添加hbase.zookeeper.quorum
属性值。该值应该是以逗号分隔的 Zookeeper 节点列表。默认为 localhost
.
将 export HBASE_MANAGES_ZK=false
添加到 hbase-env.sh
。默认为 true
.
确保 hbase-site.xml
中的 zookeeper.znode.parent
属性 值与 Titan 配置中 storage.hbase.ext.zookeeper.znode.parent
的值相匹配。它默认为 /hbase
。如果这些值不匹配,Titan connection to HBase will hang.
确保 zoo.cfg
中的 clientPort
属性 值与 hbase-site.xml
中的 hbase.zookeeper.property.clientPort
值匹配,并且还匹配 storage.hbase.ext.hbase.zookeeper.property.clientPort
泰坦配置中的值。它默认为 2181
。如果这些不匹配,您会在日志中看到连接异常。
确保 Zookeeper 节点正在使用可访问的 IP 地址(而不是 localhost
)侦听 clientPort
。
一旦您确认可以连接到您的 Titan table,我认为 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
还有一个针对 Titan 的 open issue 来调查为什么 Zookeeper 客户端连接如此频繁。
我也遇到了这个问题。
只需将zookeeper3.4.5升级到zookeeper3.4.6,并同步时间,
但是仍然有很多信息消息,所以我像这样修改了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
还可以,
我正在学习 Titan 数据库。我 运行 它在本地模式下成功。现在,我正在尝试使用 Titan 文档中介绍的 "Remote Server Mode" 中的 Titan 数据库。我的 Titan 版本是 Titan-1.0.0-hadoop1.
我的 LAN 中有集群,包括 cloud12
和 cloud13
。我在上面安装了hadoop-1.2.1,master是cloud12
,slave是cloud13
.
我想测试创建图的性能,所以我设计在机器 cloud12
上以伪分布式模式启动我的 Hbase-0.98.20,独立的 zookeeper-3.4.6 和 elasticsearch cloud12
.(我修改了hbase-env.sh
,在zoo.cfg
中使用默认端口2181
)
Hadoop 和 HBase 似乎正常工作,我通过 Jps 检查了两台服务器,我还通过 HBase 检查了 HBase shell。
这是我的 hbase-site.xml
配置:
<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>
虽然我运行我在局域网中另一台名为cloud6
的机器上的Eclipse中的程序(我在这台机器上安装了Titan-1.0.0),我的程序打印了一个混乱的错误信息输出日志。
这是我输出中不断重复的错误
789 [main] INFO org.apache.zookeeper.ZooKeeper - Initiating client connection, 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 - Process identifier=hconnection-0x12d3a4e9 connecting to ZooKeeper ensemble=192.168.12.148:2181
878 [main-SendThread(192.168.12.148:2181)] INFO org.apache.zookeeper.ClientCnxn - Opening socket connection to server 192.168.12.148/192.168.12.148:2181. Will not attempt to authenticate using SASL (unknown error)
1030 [main-SendThread(192.168.12.148:2181)] INFO org.apache.zookeeper.ClientCnxn - Socket connection established to 192.168.12.148/192.168.12.148:2181, initiating session
1049 [main-SendThread(192.168.12.148:2181)] INFO org.apache.zookeeper.ClientCnxn - Session establishment complete on server 192.168.12.148/192.168.12.148:2181, sessionid = 0x15654717951001b, negotiated timeout = 40000
1054 [main] INFO org.apache.hadoop.hbase.client.ZooKeeperRegistry - ClusterId read in ZooKeeper is null
在ZooKeeper中读到的ClusterId为null?我真是一头雾水。我试图解决问题,我发现我的错误与许多其他错误相似,但我无法从 Google 或其他网站获得明确的答案。我的架构设计有错误吗?还是配置错误?
我可以确保我的主机和集群的时间都是正确的。这是我的程序的一部分,用于从 cloud6
连接 cloud12
上的 Hbase,我的代码有什么错误或不足吗?
public static final String INDEXNAME = "search";
...
BaseConfiguration conf=new BaseConfiguration();
conf.setProperty("storage.backend", "hbase");
conf.setProperty("storage.hostname", "192.168.12.148");//ip of cloud12
conf.setProperty("storage.tablename", "graph1");
conf.setProperty("index." + INDEXNAME + ".backend", "elasticsearch");
conf.setProperty("index." + INDEXNAME + ".hostname", "192.168.12.148");
conf.setProperty("index." + INDEXNAME + ".elasticsearch.local-mode", false);
conf.setProperty("index." + INDEXNAME + ".elasticsearch.client-only", true);
由于您使用的是 external Zookeeper 集成,因此需要检查一些事项:
在
hbase-site.xml
中添加hbase.zookeeper.quorum
属性值。该值应该是以逗号分隔的 Zookeeper 节点列表。默认为localhost
.将
export HBASE_MANAGES_ZK=false
添加到hbase-env.sh
。默认为true
.确保
hbase-site.xml
中的zookeeper.znode.parent
属性 值与 Titan 配置中storage.hbase.ext.zookeeper.znode.parent
的值相匹配。它默认为/hbase
。如果这些值不匹配,Titan connection to HBase will hang.确保
zoo.cfg
中的clientPort
属性 值与hbase-site.xml
中的hbase.zookeeper.property.clientPort
值匹配,并且还匹配storage.hbase.ext.hbase.zookeeper.property.clientPort
泰坦配置中的值。它默认为2181
。如果这些不匹配,您会在日志中看到连接异常。确保 Zookeeper 节点正在使用可访问的 IP 地址(而不是
localhost
)侦听clientPort
。
一旦您确认可以连接到您的 Titan table,我认为 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
还有一个针对 Titan 的 open issue 来调查为什么 Zookeeper 客户端连接如此频繁。
我也遇到了这个问题。 只需将zookeeper3.4.5升级到zookeeper3.4.6,并同步时间, 但是仍然有很多信息消息,所以我像这样修改了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
还可以,