hbase单机配置,使用外部zookeeper,java调用
发布于 2022-08-05 修改于 2022-08-05 笔记 java hbase zookeeper
本文只是简单记录。
标题中说的外部zookeeper,并不是在其他服务器上的zookeeper,是在本机上运行的zookeeper。
需要java环境,之前出过linux配置jdk,这里不需要赘述。
目前系统环境是centos7.8。
jdk是1.8,zookeeper是3.6.3,hbase是2.4.13
hbase单机安装配置
创建基本文件夹
1  | cd /usr/loacal  | 
下载zookeeper
1  | cd /usr/local/zookeeper  | 
修改zookeeper配置
1  | cd /usr/local/zookeeper/apache-zookeeper-3.6.3-bin/conf  | 
在zoo.cfg中添加修改配置1
2dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log
下载hbase
1  | cd /usr/local/hbase  | 
修改hbase配置
1  | cd /usr/local/hbase/hbase-2.4.13/conf  | 
在hbase-env.sh中添加1
2export JAVA_HOME=/usr/local/java/jdk1.8.0_111
export HBASE_MANAGES_ZK=false
1  | vim hbase-site.xml  | 
在hbase-site.xml中添加修改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<configuration>
<!-- HBase集群中所有RegionServer共享目录,用来持久化HBase的数据,一般设置的是hdfs的文件目录,如hdfs://namenode.[example.org:9000/hbase](http://example.org:9000/hbase)  -->
  <property>
    <name>hbase.rootdir</name>
    <value>file:///usr/local/hbase/data</value>
  </property>
   <!-- ZooKeeper的zoo.conf中的配置。 快照的存储位置 -->
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/usr/local/zookeeper/data</value>
  </property>
   <!-- ZooKeeper端口 -->
  <property>
      <name>hbase.zookeeper.property.clientPort</name>
      <value>2181</value>
  </property>
    <!-- ZooKeeper连接机器名或者ip,多个用','号分隔 -->
  <property>
      <name>hbase.zookeeper.quorum</name>
      <value>master</value>
  </property>
  <!-- ZooKeeper存储hbase数据的节点名称 -->
  <property>
      <name>zookeeper.znode.parent</name>
      <value>/hbase</value>
  </property>
   <!-- 集群的模式,分布式还是单机模式,如果设置成false的话,HBase进程和Zookeeper进程在同一个JVM进程  -->
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <!-- 本地文件系统tmp目录 -->
  <property>
    <name>hbase.tmp.dir</name>
    <value>./tmp</value>
  </property>
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>
</configuration>
启动zookeeper
1  | cd /usr/local/zookeeper/apache-zookeeper-3.6.3-bin/bin/  | 
可使用./zkServer.sh status查看zookeeper状态,也可以使用jps查看进程。
启动hbase
1  | cd /usr/local/hbase/hbase-2.4.13/bin/  | 
可使用jps查看进程。
使用./hbase shell进入控制台进行hbase操作。
java连接hbase
添加maven依赖1
2
3
4
5<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-client</artifactId>
    <version>2.1.0</version>
</dependency>
创建HbaseConnect.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
34import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import java.io.IOException;
public class HbaseConnect {
    public static void main(String[] args){
        //1、创建hbase的配置
        Configuration configuration = HBaseConfiguration.create();
        configuration = HBaseConfiguration.create();
        configuration.set("hbase.zookeeper.quorum","43.242.200.154");
        configuration.set("hbase.zookeeper.property.clientPort","2181");
        configuration.setInt("hbase.rpc.timeout",2000);
        configuration.setInt("hbase.client.operation.timeout",3000);
        configuration.setInt("hbase.client.scanner.timeout.period",6000);
        //2、创建hbase的连接
        Connection connection;
        {
            try {
                connection = ConnectionFactory.createConnection(configuration);
                System.out.println(connection);
                //3、创建admin对象
                Admin admin = connection.getAdmin();
                System.out.println(admin);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
运行程序,控制台会打印出以下类似信息1
2hconnection-0x26ceffa8
org.apache.hadoop.hbase.client.HBaseAdmin@512baff6