首页 > 解决方案 > HBase java 错误 - 预期 HEADER=HBas 但收到 HEADER=\x00\x00\x01\x0B

问题描述

我正在尝试从 java 应用程序连接到远程 hbase。

远程的hbase版本是2.1.0,比如我本地的hbase-client。

该代码在另一个 cloudera 环境中运行良好,唯一的区别是该环境受 kerberos 保护,但我在日志中成功登录。

在 RpcServer 日志中,我发现“预期 HEADER=HBas 但收到 HEADER=\x00\x00\x01\x0B from :61866”。

我在互联网上找不到任何东西,我不知道要检查什么。

关于我应该检查什么的任何帮助?

标签: javahbasecloudera

解决方案


在网上我发现只有旧的或错误的配置。

这是唯一对我有用的:

org.apache.hadoop.conf.Configuration configuration = HBaseConfiguration.create();
configuration.set("hbase.zookeeper.quorum", "server1, server2, server3");
configuration.set("hbase.zookeeper.property.clientPort", "2181");
configuration.set("hadoop.security.authentication","kerberos");
configuration.set("hbase.security.authentication","kerberos");
configuration.set("hbase.cluster.distributed", true);
configuration.set("hbase.rpc.protection","authentication"); // Check this on your hbase configuration
configuration.set("hbase.regionserver.kerberos.principal", "hbase/_HOST@yourdomain");
configuration.set("hbase.master.kerberos.principal","hbase/_HOST@yourdomain");
UserGroupInformation.setConfiguration(configuration);         
UserGroupInformation.loginUserFromKeytab(youruser, "src/main/resources/key.keytab");

推荐阅读