在hadoop上运行Apache Pheonix时出现问题

时间:2017-04-14 02:11:04

标签: java apache hadoop hbase

安装Apache Pheonix并遵循官方文档的所有步骤,并在启动hbbase进程后,我可以看到所有的pocesses正在运行:

jps

On trying to test Pheonix: 试图测试Pheonix:

这会停留几分钟,之后会抛出异常。

异常,重新抛出异常org.apache.phoenix.shaded.org.apache.zookeeper.KeeperException $ ConnectionLossException:KeeperErrorCode = /Lbase / hbaseid的ConnectionLoss

非常感谢任何帮助。

enter image description here

1 个答案:

答案 0 :(得分:0)

ConnectionLossException可能会出现一百万个原因。最有可能是查询超时。

不幸的是,凤凰的学习曲线很陡峭,就像HBase一样。您无法像在MySQL中那样只查询任何想要的内容并让它返回结果。查询编写器的工作是编写非常非常有效的查询。

尝试使用表格的ROWKEY让您的查询及时返回。例如,在我们的表中,我们的ROWKEY在开头包含一个非常熟悉的结构化ID。所以我知道如果我运行这样的查询:

select count(*) from "table" where ROWKEY like '0%' and "bla" = '123';

在我的特定表格中,我将获得10%的表格结果。所以我只把我的计数乘以10。

首先,尝试以下查询:

select ROWKEY from "table" limit 1;

如果返回,那么你知道我是对的,你的工作就是编写非常非常有效的有限结果查询。

您可以尝试另外一件事:通过hbase-site.xml扩展超时。这是我和phoenix使用的客户端hbase-site.xml:

<configuration>
  <property>
    <name>hbase.regionserver.wal.codec</name>
    <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
  </property>
  <property>
    <name>hbase.client.scanner.caching</name>
    <value>1000</value>
  </property>
  <property>
    <name>hbase.client.scanner.timeout.period</name>
    <value>600000</value>
  </property>
  <property>
    <name>hbase.rpc.timeout</name>
    <value>1800000</value>
  </property>
  <property>
    <name>phoenix.query.threadPoolSize</name>
    <value>768</value>
  </property>
  <property>
    <name>phoenix.query.queueSize</name>
    <value>15000</value>
  </property>
  <property>
    <name>phoenix.query.keepAliveMs</name>
    <value>300000</value>
  </property>
  <property>
    <name>phoenix.connection.autoCommit</name>
    <value>true</value>
  </property>
  <property>
    <name>phoenix.schema.dropMetaData</name>
    <value>false</value>
  </property>
  <property>
    <name>phoenix.sequence.saltBuckets</name>
    <value>0</value>
  </property>
</configuration>

这些设置将允许您编写效率稍低的查询。