Java API不能远程访问linux服务器HBase的问题

今天我在虚拟机里面安装了Hbase 1.2.4,说在windows上Java API调用访问下玩玩,结果始终连接不上。

现象是启动程序后,程序出现卡死的状态,没报错也不停止,大约半分钟后才打印一堆日志出来,说连接重试了多次也连接不上,截图如下:

这个问题纠结了我半天,一查看发现HBase绑定的是本地IP:127.0.0.1,这当然访问不了

然后我想可以把HBase的绑定在指定IP上,去查Hbase官网,却没有这样的配置项

后面百度下,发现HBase的这个问题要特殊处理

 

分下面三步走,即可访问

1、配置Linux的hostname

2、配置Linux的hosts,映射ip的hostname的关系

3、配置访问windows的hosts

配置Llinux的hostname和hosts,这样HBase启动的时候,就会自动把HBase绑定到Linux域名对应的ip上去

配置Linux的hostname

这里配置的hostname要Linux重启才生效,为了不重启就生效,我们可以执行:hostname master命令,暂时设置hostname

配置Linux的hosts

映射ip的hostname的关系

配置完Linux的这两项,启动HBase就发现HBase绑定到了我们想暴露的ip上了

配置访问windows的hosts

路径为:C:\Windows\System32\drivers\etc\hosts

配置完这三项Java API就可以远程访问HBase了,切记最后配置windows的hosts也是必须的

 

Java代码示例

package priv.tuyou.HBase;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;

/**
* HBase 1.2.4
* @author:涂有
* @date 2017年7月12日 下午2:17:44
*/
public class HBase {

public static Configuration conf;
public static Connection connection;
public static Admin admin;

public static void main(String[] args) throws IOException {

conf = HBaseConfiguration.create();
conf.set("hbase.master", "192.168.142.129:16000");

connection = ConnectionFactory.createConnection(conf);
admin = connection.getAdmin();

HTableDescriptor table = new HTableDescriptor(TableName.valueOf("table1"));
table.addFamily(new HColumnDescriptor("group1")); //创建表时至少加入一个列组

if(admin.tableExists(table.getTableName())){
admin.disableTable(table.getTableName());
admin.deleteTable(table.getTableName());
}
admin.createTable(table);
}

}

 

POM文件,依赖HBase-client库

<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client -->
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.2.4</version>
</dependency>
</dependencies>

转载于:https://www.cnblogs.com/mjbrian/p/9798453.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Java API操作HBase非常简单和方便。HBase提供了一个Java库,可以使用它来连接和与HBase进行交互。下面是使用Java API操作HBase的步骤: 1. 首先,需要导入HBaseJava库。可以在项目的构建文件(例如pom.xml)中添加HBase相关依赖项,或者手动将HBase库添加到项目的类路径中。 2. 创建HBase的配置对象,并设置必要的配置参数。配置对象可以指定HBase的连接地址、端口号等信息。 3. 使用HBase的配置对象创建一个HBase的连接对象。连接对象允许与HBase进行通信。 4. 通过连接对象创建一个HBase的管理员对象。管理员对象用于对HBase的表进行管理,如创建表、删除表等操作。 5. 创建HBase表的描述符对象,并指定表的名称、列族等信息。 6. 使用管理员对象创建HBase表。可以使用表的描述符对象来定义表的结构。 7. 使用HBase表的描述符对象创建一个表对象。表对象用于与HBase的表进行交互。 8. 使用表对象执行各种操作,如插入数据、更新数据、删除数据等。可以使用行键(row key)和列族名(column family)来定位和操作特定的数据。 9. 关闭与HBase的连接,释放资源。 通过以上步骤,可以使用Java API来连接和操作HBase。在实际应用中,还可以根据具体需求来添加其他操作,如查询数据、扫描表等。使用Java API操作HBase可以灵活地控制和管理HBase中的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值