【问题标题】:How to setup titan over hbase in a single node hadoop如何在单节点hadoop中通过hbase设置titan
【发布时间】:2026-01-15 19:00:01
【问题描述】:

我有一个单节点 hadoop,并且在我的 ubuntu 12.04 上也安装了 hbase。现在我想在 hbase 上安装 Titan。我已经设置了 hadoop-1.0.3 和 hbase-0.94.18 和 titan/hbase-0.4.2

我添加了一个用户 mnit。我的 /usr/local/ 文件夹包含 hadoop2、hbase2、titan2。首先我使用命令 bin/start-all.sh 启动我的 hadoop,然后我使用命令 bin/start-hbase 启动 hbase .sh 。在我做 jps 之后,我发现了以下内容:

mnit@aman:/usr/local$ jps
9921 DataNode
11386 HRegionServer
11041 HQuorumPeer
11537 Jps
11115 HMaster
10153 SecondaryNameNode
10252 JobTracker
9691 NameNode
10483 TaskTracker

现在我使用命令 bin/gremlin.sh 在 titan2 中启动 gremlin.sh。 我应用了以下命令

mnit@aman:/usr/local/titan2$ bin/gremlin.sh
gremlin> conf = new BaseConfiguration();
==>org.apache.commons.configuration.BaseConfiguration@19288c2
gremlin> conf.setProperty("storage.backend","hbase");
==>null
gremlin> conf.setProperty("storage.hostname","127.0.0.1");
==>null
gremlin> g = TitanFactory.open(conf);

WARN  org.apache.zookeeper.ClientCnxn  - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
    at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350)
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068)
WARN  org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper  - Possibly transient ZooKeeper exception: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
WARN  org.apache.zookeeper.ClientCnxn  - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
    at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350)
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068)

当我搜索这个问题时,我发现有一个名为 pom.xml 的文件,但我下载的 Titan 不包含 pom.xml。请告诉我这是否是由于 pom.xml 造成的问题。或者我做错了什么或有其他问题。

提前致谢

zk 在我的系统中由 hbase 管理。我在 bin/hbase-env.sh 中添加了以下行

export HBASE_MANAGES_ZK=true

我的 hbase-site.xml 的内容如下:

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://localhost:54310/user/hbase</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
         <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2222</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>localhost</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.datadir</name>
        <value>/app/hadoop/tmp/zookeeper</value>
    </property>
</configuration>

【问题讨论】:

  • 这个错误提示 Titan 由于某种原因无法连接到 Zookeeper。 HBase 是在管理 ZK,还是在运行独立于 HBase 的 ZK 集成(即HBASE_MANAGES_ZK=false)?如果使用 HBase 托管模式,hbase-site.xml 的 hbase.zookeeper.property.clientPort 是什么? ZK 配置上的任何其他信息也可能有用。
  • @Dan LaRocque:我已经编辑了我的问题。并在那里添加了您所需的信息。谢谢。

标签: hadoop hbase titan


【解决方案1】:

您的 Titan 和 HBase 配置似乎不一致。您的 hbase-site.xml 将默认 ZK 端口 (2181) 覆盖为 2222,但您似乎没有通过在 Titan 配置文件中设置 storage.port 来告诉 Titan 使用此非默认 ZK 端口。自然,在那种状态下,他们不能互相交谈。这与 pom.xml 没有任何关系。

顺便说一句,请不要同时交叉发布到 SO 和 aureliusgraphs Google Group。它们都是用途略有不同的好场所,但您似乎只是在此 SO 问题和 your subjectless thread on the aureliusgraphs list 之间复制粘贴。

【讨论】:

  • 谢谢先生。我将端口号从 2222 更改为 2181,并在 hdfs-site.xml 中添加了 hbase.zookeeper.property.maxClientCnxn 属性,它可以工作。