IDEA远程连接HBase及其Java API实战详解

时间:2022-04-11 17:12:22

IDEA远程连接HBase及其Java API实战详解

开放端口


安全组没开放端口是原罪!!!导致好多bug费时费力。hbase悄悄咪咪的用了好多端口,比如被我抓到的42239,直接搜索报错药不对症。

IDEA远程连接HBase及其Java API实战详解
IDEA远程连接HBase及其Java API实战详解

hbase安装


下载压缩包
可以去官网下载http://hbase.apache.org/downloads.html
也可以去镜像下载历史版本http://archive.apache.org/dist/hbase/
以1.3.2版本为例:

IDEA远程连接HBase及其Java API实战详解

直接下载或者下载到本地再上传都行,看你哪个快。

?
1
2
3
wget http://archive.apache.org/dist/hbase/1.3.2/hbase-1.3.2-bin.tar.gz
tar -zxvf hbase-1.3.2-bin.tar.gz #解压
mv hbase-1.3.2-bin /urs/local/hbase

IDEA远程连接HBase及其Java API实战详解

配置hbase-site.xml

?
1
2
cd /usr/local/hbase/conf
vi hbase-site.xml
?
1
2
3
4
5
6
7
8
9
10
11
12
<property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.rootdir</name>
        <value>/hbase-data</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master:2181</value>
    </property>

IDEA远程连接HBase及其Java API实战详解

配置hbase-env.sh

?
1
2
3
4
cd /usr/local/hbase/conf
echo $java_home #若没有安装jdk可百度(偷懒)
vi hbase-env.sh #添加要一致
export java_home=/usr/local/java

IDEA远程连接HBase及其Java API实战详解
IDEA远程连接HBase及其Java API实战详解

运行测试

?
1
2
cd /usr/local/hbase/bin
./start-hbase.sh

IDEA远程连接HBase及其Java API实战详解
IDEA远程连接HBase及其Java API实战详解

ip:16010访问

IDEA远程连接HBase及其Java API实战详解

域名配置


服务器 vi /etc/hosts
私网ip master

IDEA远程连接HBase及其Java API实战详解

本地 c:\windows\system32\drivers\etc\hosts
公网ip master

IDEA远程连接HBase及其Java API实战详解

IDEA远程连接HBase及其Java API实战详解

idea源码


目录结构:

IDEA远程连接HBase及其Java API实战详解

创建一个maven项目并在pom.xml添加依赖:

?
1
2
3
4
5
6
7
8
9
10
<dependency>
            <groupid>org.apache.hbase</groupid>
            <artifactid>hbase-server</artifactid>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupid>org.apache.hbase</groupid>
            <artifactid>hbase-client</artifactid>
            <version>1.3.2</version>
        </dependency>

版本是1.3.2,注意和你自己的一致,可以登录hbase shell时查看。

IDEA远程连接HBase及其Java API实战详解

插播反爬信息 )博主csdn地址:https://wzlodq.blog.csdn.net/

log4j.properties配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
log4j.rootlogger=debug, stdout, r
 
log4j.appender.stdout=org.apache.log4j.consoleappender
log4j.appender.stdout.layout=org.apache.log4j.patternlayout
 
log4j.appender.stdout.layout.conversionpattern=%5p - %m%n
 
log4j.appender.r=org.apache.log4j.rollingfileappender
log4j.appender.r.file=firestorm.log
 
log4j.appender.r.maxfilesize=100kb
log4j.appender.r.maxbackupindex=1
 
log4j.appender.r.layout=org.apache.log4j.patternlayout
log4j.appender.r.layout.conversionpattern=%p %t %c - %m%n
 
log4j.logger.com.codefutures=debug

hbase-site.xml配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl" rel="external nofollow" ?>
<configuration>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.rootdir</name>
        <value>/hbase-data</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master:2181</value>
    </property>
</configuration>

hbasecrud.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package ex3;
 
import org.apache.hadoop.conf.configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
 
import java.io.ioexception;
 
public class hbasecrud {
    private static configuration configuration;
    private static connection connection;
    private static admin admin;
 
    /**
     * 建立连接
     */
    public static void init(){
        configuration=hbaseconfiguration.create();
        configuration.set("hbase.zookeeper.quorum","121.36.240.205"); // 换成你自己的ip
        configuration.set("hbase.zookeeper.property.clientport","2181");
        try{
            connection=connectionfactory.createconnection(configuration);
            admin=connection.getadmin();
        }catch (ioexception e){
            e.printstacktrace();
        }
    }
    /**
     * 关闭连接
     */
    public static void close(){
        try{
            if(admin!=null)
                admin.close();
        }catch (ioexception e){
            e.printstacktrace();
        }
    }
    /**
     * 创建表
     * @param mytablename 表名
     * @param colfamily 列族数组
     * @throws ioexception
     */
    public static void createtable(string mytablename,string[]colfamily)throws ioexception{
        tablename tablename = tablename.valueof(mytablename);
        if(admin.tableexists(tablename)){
            system.out.println("表名已存在!");
        }
        else{
            htabledescriptor htabledescriptor = new htabledescriptor(tablename);
            for(string str:colfamily){  //增加一列
                hcolumndescriptor hcolumndescriptor = new hcolumndescriptor(str);
                htabledescriptor.addfamily(hcolumndescriptor);
            }
            admin.createtable(htabledescriptor); //建表
        }
    }
 
    /**
     * 添加数据
     * @param tablename 表名
     * @param rowkey 行键
     * @param colfamily 列族
     * @param col 列限定符
     * @param val 数据
     * @throws ioexception
     */
    public static void insertdata(string tablename,string rowkey,string colfamily,string col,string val)throws ioexception{
        table table = connection.gettable(tablename.valueof(tablename));//获取表名
        put put = new put(rowkey.getbytes());
        put.addcolumn(colfamily.getbytes(),col.getbytes(),val.getbytes());
        table.put(put);
        table.close();
    }
 
    /**
     * 获取数据
     * @param tablename 表名
     * @param rowkey 行键
     * @param colfamily 列族
     * @param col 列限定符
     * @throws ioexception
     */
    public static void getdata(string tablename,string rowkey,string colfamily,string col)throws ioexception{
        table table = connection.gettable(tablename.valueof(tablename));
        get get = new get(rowkey.getbytes());
        get.addcolumn(colfamily.getbytes(),col.getbytes());
        result result = table.get(get);
        string val = new string(result.getvalue(colfamily.getbytes(),col==null?null:col.getbytes()));
        system.out.println("值为:"+val);
        table.close();
    }
}

client.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package ex3;
 
import org.apache.log4j.basicconfigurator;
 
import java.io.ioexception;
 
public class client {
    public static void main(string[] args) throws ioexception {
        hbasecrud.init();
        //建表
        hbasecrud.createtable("student",new string[]{"score"});
        //插入数据
        hbasecrud.insertdata("student","lisa","score","java","85");
        hbasecrud.insertdata("student","lisa","score","c/c++","80");
        hbasecrud.insertdata("student","lisa","score","mysql","82");
        hbasecrud.insertdata("student","jerry","score","java","65");
        //查询数据
        hbasecrud.getdata("student","lisa","score","java");
        hbasecrud.getdata("student","lisa","score","mysql");
        hbasecrud.getdata("student","jerry","score","java");
        hbasecrud.close();
        system.out.println("记得一键三连~");
    }
}

点击运行后需要点耐心等待,灰色info、debug信息都可不用管,报错的话会是红色字体(评论区交流),有tomcat内味了。

IDEA远程连接HBase及其Java API实战详解

原创不易,请勿转载本不富裕的访问量雪上加霜
博主首页:https://wzlodq.blog.csdn.net/

到此这篇关于idea远程连接hbase及其java api实战的文章就介绍到这了,更多相关idea连接hbase内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_45034708/article/details/115678645