解决java连接虚拟机Hbase无反应的问题
问题说明
自己用虚拟机安装了Hbase、zookeeper,然后想用java访问。
代码如下
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
public class HbaseTest {
public static void main(String[] args) throws MasterNotRunningException, IOException{
String tableName = "myTest";
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.master", "192.168.48.129:16010");
conf.set("hbase.zookeeper.property.clientPort", "2181");
// conf.set("hbase.zookeeper.quorum", "master");
conf.set("hbase.zookeeper.quorum", "192.168.48.129");
Connection conn = ConnectionFactory.createConnection(conf);
Table table = conn.getTable(TableName.valueOf(tableName));
Get g = new Get(Bytes.toBytes("row1"));
Result result = table.get(g);
byte [] value = result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name"));
byte[] value1 = result.getValue(Bytes.toBytes("info"), Bytes.toBytes("age"));
table.close();
System.out.println(result.toString());
System.out.println(Bytes.toString(value));
System.out.println(Bytes.toString(value1));
}
}结果一直卡在result这一样没反应。
解决方案
1.由于Hbase自带有zookeeper
可以先禁用掉自带的zookeeper。
命令:vim hbase/conf/hbase-env.sh

2.由于这里只是想测试下java连接hbae
也并没有搭建Hdoop环境,所以Hbase的hhbase-size.xml配置如下

3.再对zookeeper进行配置 zoo.cfg

4.因为是在windows环境下
用java访问虚拟机的Hbase,所以还需要以下配置
命令:vim /etc/host 添加一行,IP hostname

命令:vim /etc/sysconfig/network-scripts/ifcfg-eth0 ,修改设备名

windows中相应配置:C:\Windows\System32\drivers\etc 在HOST文件中添加IP hostname

所有的配置就到这里结束,启动zookeeper,启动Hbase
java连接Hbase测试
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
public class HbaseTest {
public static void main(String[] args) throws MasterNotRunningException, IOException{
String tableName = "myTest";
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.master", "192.168.48.129:16010");
conf.set("hbase.zookeeper.property.clientPort", "2181");
// conf.set("hbase.zookeeper.quorum", "master");
conf.set("hbase.zookeeper.quorum", "192.168.48.129");
Connection conn = ConnectionFactory.createConnection(conf);
Table table = conn.getTable(TableName.valueOf(tableName));
Get g = new Get(Bytes.toBytes("row1"));
Result result = table.get(g);
byte [] value = result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name"));
byte[] value1 = result.getValue(Bytes.toBytes("info"), Bytes.toBytes("age"));
table.close();
System.out.println(result.toString());
System.out.println(Bytes.toString(value));
System.out.println(Bytes.toString(value1));
}
}我个人使用如上方法能够解决连接Hbase无反应的问题。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
如何使用Comparator比较接口实现ArrayList集合排序
这篇文章主要介绍了如何使用Comparator比较接口实现ArrayList集合排序问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-12-12
详解Spring Boot中如何自定义SpringMVC配置
这篇文章主要给大家介绍了关于Spring Boot中如何自定义SpringMVC配置的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2021-09-09
idea集成shell运行环境以及shell输出中文乱码的解决
这篇文章主要介绍了idea集成shell运行环境以及shell输出中文乱码的解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-08-08


最新评论