Java HBASE的JDBC Phoenix驱动程序,重试36次并引发异常

Java HBASE的JDBC Phoenix驱动程序,重试36次并引发异常,java,jdbc,hbase,phoenix,phoenix-channels,Java,Jdbc,Hbase,Phoenix,Phoenix Channels,我在服务器(远程)中安装了一个独立的HBase。 我编写了一个Java客户端,它使用Phoenix进行通信,看到它尝试了36次,因此抛出异常。 HBase-Version : 1.1.5 Phoenix-core: 4.8.0-HBase-1.1 连接字符串: Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); Connection connection = DriverManager.getConnection("jdbc:phoe

我在服务器(远程)中安装了一个独立的HBase。 我编写了一个Java客户端,它使用Phoenix进行通信,看到它尝试了36次,因此抛出异常。

HBase-Version : 1.1.5
Phoenix-core: 4.8.0-HBase-1.1
连接字符串:

Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
Connection connection = DriverManager.getConnection("jdbc:phoenix:192.168.1.xxx:2181");
我是不是错过了什么,cz,根本就没有联系

例外情况:

Exception in thread "main" java.sql.SQLException: org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=36, exceptions:
Mon Oct 17 11:50:18 IST 2016, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=80992: row 'SYSTEM:CATALOG,,' on table 'hbase:meta' at region=hbase:meta,,1.1588230740, hostname=HOSTNAME,16201,1476683863488, seqNum=0

有人能帮我吗

根据我的经验,这通常发生在扫描仪超时时。在您的情况下,这似乎是正确的,在您的错误消息中b/c也显示:

callTimeout=60000,callDuration=80992

也就是说,当你的超时时间为一分钟时,你持续了81秒。查询HBase时,您需要确保您使用的是rowkey或phoenix的较新版本,以及时间戳。任何其他HBase查询的效率都会低得离谱。您可以尝试以下几种方法:

  • 尝试将您的HBase超时设置为一个高得离谱的数字,如4小时
  • 同样,将查询更改为使用现有行键。在一个表中,行键的第一个字符是0-9,因此我们将运行以下命令:

    select * from TABLE WHERE ROWKEY like '0%' AND [other_conditions]
    select * from TABLE WHERE ROWKEY like '1%' AND [other_conditions]
    etc...
    
    然后把结果结合起来,或者如果我们正在计算,只需乘以10b/c,这对于我们的目的来说已经足够了

  • 最后,您可能需要编写更好的rowkey来优化phoenix查询。这是一个更高级的主题,但所有HBase查询都是如此。HBase擅长一件事,那就是查询它的一个强大索引:rowkey。使用phoenix并不能缓解这个问题


  • 顺便说一下,从堆栈溢出的角度来看,如果您发布一些关于查询和表结构的信息,这会有所帮助。

    根据我的经验,这通常发生在扫描仪超时时。在您的情况下,这似乎是正确的,在您的错误消息中b/c也显示:

    callTimeout=60000,callDuration=80992

    也就是说,当你的超时时间为一分钟时,你持续了81秒。查询HBase时,您需要确保您使用的是rowkey或phoenix的较新版本,以及时间戳。任何其他HBase查询的效率都会低得离谱。您可以尝试以下几种方法:

  • 尝试将您的HBase超时设置为一个高得离谱的数字,如4小时
  • 同样,将查询更改为使用现有行键。在一个表中,行键的第一个字符是0-9,因此我们将运行以下命令:

    select * from TABLE WHERE ROWKEY like '0%' AND [other_conditions]
    select * from TABLE WHERE ROWKEY like '1%' AND [other_conditions]
    etc...
    
    然后把结果结合起来,或者如果我们正在计算,只需乘以10b/c,这对于我们的目的来说已经足够了

  • 最后,您可能需要编写更好的rowkey来优化phoenix查询。这是一个更高级的主题,但所有HBase查询都是如此。HBase擅长一件事,那就是查询它的一个强大索引:rowkey。使用phoenix并不能缓解这个问题


  • 顺便说一下,从堆栈溢出的角度来看,如果您发布一些关于查询和表结构的信息,这会有所帮助。

    好吧,它的内部ip映射错误,

    任何人,首先将请求推送到服务器,请确保已配置主机字符串

    那么它的内部ip映射错误,


    任何人,首先将请求推送到服务器,请确保已配置主机字符串

    请看一下,可能会有帮助。。。可能是区域服务器问题!它默认访问Hadoop系统吗?你知道吗?我不确定@peaceUserPlease看一下,可能会有帮助。。。可能是区域服务器问题!它默认访问Hadoop系统吗?你知道吗?我不确定@peaceUser@WattslnABox谢谢你提供这样的细节。。是的,这背后有一个原因。奇怪的是,我的系统防火墙不允许完整的请求到达仲裁。。。!啊,很有趣,@peaceUser,我以前从未遇到过这样的事情。我很高兴你明白了。您可以回答自己的问题并接受答案任何访问此问题的人,我会说检查两个答案,因为这两个答案都是出于相同的原因。@WattslnABox感谢您提供这样的详细信息。。是的,这背后有一个原因。奇怪的是,我的系统防火墙不允许完整的请求到达仲裁。。。!啊,很有趣,@peaceUser,我以前从未遇到过这样的事情。我很高兴你明白了。你可以回答自己的问题并接受答案任何访问此问题的人,我会说检查这两个答案,因为这两个答案都是出于相同的原因。peaceUser-你能在这里发布步骤吗?现在无法访问该链接@mbaxi,它是一个工作链接,怎么会是internap ip映射错误?你的一个奴隶的ip是不是搞错了?我遇到了与您完全相同的问题,我尝试了很多方法:
    java.net.SocketTimeoutException:callTimeout=60000,callDuration=80201
    @Zeliax,我希望是防火墙,它不能像预期的那样识别ip地址。任何访问此问题的人,我都会说检查两个答案,因为这两个原因都是相同的。peaceUser-你能在这里发布这些步骤吗?现在无法访问该链接@mbaxi,它是一个工作链接,怎么会是internap ip映射错误?你的一个奴隶的ip是不是搞错了?我遇到了与您完全相同的问题,我尝试了很多方法:
    java.net.SocketTimeoutException:callTimeout=60000,callDuration=80201
    @Zeliax,我希望是防火墙,它不能像预期的那样识别ip地址。任何访问此问题的人,我都会说检查两个答案,因为这两个原因都是相同的。