【问题标题】:Connection issue when trying to connect HBase in remote server using java尝试使用 java 在远程服务器中连接 HBase 时出现连接问题
【发布时间】:2019-05-26 23:31:54
【问题描述】:

我尝试使用 java 连接远程服务器中的 HBase。下面是我的java代码

String zookeeperHost = "myserverIP";
String tableName = "User";

Configuration hconfig = HBaseConfiguration.create();
hconfig.setInt("timeout", 1200);
hconfig.set("hbase.zookeeper.quorum",zookeeperHost);
hconfig.set("hbase.zookeeper.property.clientPort", "2181");
TableName tname = TableName.valueOf(tableName);

try {
    HBaseAdmin.checkHBaseAvailable(hconfig);
} catch (ServiceException e) {
    e.printStackTrace();
}

HTableDescriptor htable = new HTableDescriptor(tname);
htable.addFamily( new HColumnDescriptor("Id"));
htable.addFamily( new HColumnDescriptor("Name"));
System.out.println( "Connecting..." );
Connection connection = ConnectionFactory.createConnection(hconfig);
HBaseAdmin hbase_admin = (HBaseAdmin)connection.getAdmin();
System.out.println( "Creating Table..." );
hbase_admin.createTable( htable );
System.out.println("Done!");

但我不断收到此异常

org.apache.hadoop.hbase.MasterNotRunningException:

com.google.protobuf.ServiceException: java.net.ConnectException: Connection >reused: 没有更多信息

我该如何解决这个问题?

【问题讨论】:

  • 您能否检查一下 hbase 服务器是否允许您尝试连接的端口的传入连接?
  • 是的,我可以从我的笔记本电脑远程登录给定端口。我的服务器是一个谷歌云虚拟机实例。我已经为 zookeeper 端口和其他所需端口创建了防火墙规则。

标签: java hadoop hdfs hbase


【解决方案1】:

在'hconfig'下面添加

 hconfig.set("hbase.master", hbaseConnectionIpAddr);
 hconfig.set("hbase.master.port", hbaseConnectionPortNum);

【讨论】:

  • 上述属性并不是真正需要连接到 HMaster
  • 当我将远程服务器的主机名添加到我的本地主机文件中时,它起作用了。 :) 非常感谢@Rushikesh Garadade 的支持
【解决方案2】:

以下异常可能有两个原因

org.apache.hadoop.hbase.MasterNotRunningException

  1. 客户端计算机无法访问远程 VM 主机名/IP。为了解决这个问题,您需要更新入站规则以允许端口访问。如果是 VM 主机名,请确保您在 /etc/hosts 中添加了一个条目,以使用 IP 地址解析主机名。

  2. 第二个问题可能是 HBase 主服务器正在运行。确保 HMaster 服务是否从您的远程服务器运行。

【讨论】:

  • 当我点击 jps 时,它显示如下 => {{ 11216 HMaster 12018 Jps 4162 NodeManager 3943 SecondaryNameNode 11160 HQuorumPeer 11306 HRegionServer 3803 DataNode 4077 ResourceManager 3693 NameNode }} 。所以 HMaster 正在运行
  • hmm.. 你有机会检查一次日志吗?并尝试运行hbase shell 看看它是否有效
  • 是的@Nishu Tayal。 hbase shell 正在工作。当我尝试从我的 java 代码创建连接时,hbase 主日志中没有任何内容。
  • 我也可以获得 HBase 主 UI。
  • 您是否在 vnet 中添加了入站规则以允许传入连接?
猜你喜欢
  • 2018-03-25
  • 1970-01-01
  • 1970-01-01
  • 2018-12-18
  • 2023-03-17
  • 2015-04-23
  • 1970-01-01
  • 2013-03-10
  • 2016-01-22
相关资源
最近更新 更多