解決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環(huán)境,所以Hbase的hhbase-size.xml配置如下

3.再對zookeeper進行配置 zoo.cfg

4.因為是在windows環(huán)境下
用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無反應的問題。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java報錯:Error:java:?程序包org.springframework.boot不存在解決辦法
建完springboot項目時,點擊啟動,有可能會報錯,下面這篇文章主要給大家介紹了關于Java報錯:Error:java:?程序包org.springframework.boot不存在的解決辦法,需要的朋友可以參考下2024-02-02
@Valid注解的作用及@Valid注解與@Validated的區(qū)別
這篇文章主要介紹了@Valid注解的作用及@Valid注解與@Validated的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
spring cloud 使用Zuul 實現(xiàn)API網關服務問題
這篇文章主要介紹了spring cloud 使用Zuul 實現(xiàn)API網關服務問題,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-05-05
Springboot2 session設置超時時間無效的解決
這篇文章主要介紹了Springboot2 session設置超時時間無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07

