使用 HBase 的 Hive(均为 Kerberos)java.net.SocketTimeoutException .. on table 'hbase:meta'

Hive with HBase (both Kerberos) java.net.SocketTimeoutException .. on table 'hbase:meta'

错误

尝试使用 HBaseStorageHandler.

Hive 查询 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

环境:

首先应该忽略Cloudera link,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"

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

我们通过添加 属性 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