解决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无反应的问题。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值