【问题标题】:Hive with HBase (both Kerberos) java.net.SocketTimeoutException .. on table 'hbase:meta'Hive 与 HBase(两个 Kerberos)java.net.SocketTimeoutException .. 表 'hbase:meta'
【发布时间】:2020-06-27 18:50:37
【问题描述】:

错误

尝试使用 HBaseStorageHandlerHive 查询 HBase 时收到超时错误。

Caused by: java.net.SocketTimeoutException: callTimeout=60000, callDuration=68199: row 'phoenix_test310,,' 
         on table 'hbase:meta' at region=hbase:meta,,1.1588230740, hostname=hbase-master.example.com,16020,1583728693297, seqNum=0
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:159)
    at org.apache.hadoop.hbase.client.ResultBoundedCompletionService$QueueingFuture.run(ResultBoundedCompletionService.java:64)
    ... 3 more

我尝试按照我能做到的文档,并基于此 Cloudera link 将一些 hbase 配置选项添加到 hive-site.xml

环境:

  • Hadoop 2.9.2
  • HBase 1.5
  • Hive 2.3.6
  • 动物园管理员 3.5.6

【问题讨论】:

    标签: hive hbase


    【解决方案1】:

    我们通过添加这个属性 hbase.client.scanner.timeout.period=600000 解决了这个错误

    hbase 1.2

    https://docs.cloudera.com/documentation/enterprise/5-5-x/topics/admin_hbase_scanner_heartbeat.html#concept_xsl_dz1_jt

    【讨论】:

      【解决方案2】:

      首先要忽略Cloudera链接,Hive通过环境变量检测HBase的存在,然后自动读取hbase-site.xml配置设置。
      无需在hive-site.xml 中复制 HBase 设置

      为 HBase 配置 Hive

      如下修改您的hive-env.sh

      # replace <hbase-install> with your installation path /etc/hbase for example
      export HBASE_BIN="<hbase-install>/bin/hbase"
      export HBASE_CONF_DIR="<hbase-install>/conf"
      

      另外,您应该确保在hive-env.sh 中也设置了HADOOP_* 环境变量, 并且将hbase lib目录添加到HADOOP_CLASSPATH

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-06
        • 1970-01-01
        • 2020-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多