java - 解决在hadoop上运行Apache Phoenix的问题

标签 java apache hadoop hbase

在安装Apache Pheonix并按照官方文档中的所有步骤进行操作之后,并在启动hbbase进程后,我可以看到所有进程都在运行,如下所示:

jps

On trying to test Pheonix:
在尝试测试Pheonix时:

这将保留几分钟,之后将引发异常。

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

任何帮助将非常感激。

enter image description here

最佳答案

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>

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

关于java - 解决在hadoop上运行Apache Phoenix的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43404283/

相关文章:

java - 如何从另一个调用一个空的构造函数?

java - 使用 JavaFX 设置响应式布局

java - 广告作为打印服务 - mdns

java - 消化器 : Extracting node name

hadoop - 我必须实现hadoop,这样它才能处理调用详细记录的数据?

java - 如何在java中将excel文件格式xls和xlsx相互转换

php - 在 laravel 中还原 'php artisan serve' 命令

php - 不常见的 502 Bad Gateway 错误

apache-spark - 如何将pyspark数据帧写入不同的Hadoop集群

hadoop - 在没有输出文件的情况下运行 Hadoop 作业