一、HBase体系架构
二、本地模式
1、在服务器上创建一个Dockerfile
# 以之前的centos-ssh镜像为基础
FROM centos7-ssh
# 将当前目录下的jdk复制到镜像中
COPY jdk1.8.0_261 /usr/local/jdk
# 设置java环境变量
ENV JAVA_HOME /usr/local/jdk
ENV PATH $JAVA_HOME/bin:$PATH
# 将hbase目录复制到镜像中
COPY hbase-1.3.1 /usr/local/hbase
# 设置hbase环境变量
ENV HBASE_HOME /usr/local/hbase
ENV PATH $HBASE_HOME/bin:$PATH
2、以该Dockerfile创建一个镜像
docker build -t="centos7-hbase" .
3、启动该镜像
docker run -itd --network hadoop --name hbase1 centos7-hbase
4、修改配置文件:hbase-env.sh
export JAVA_HOME=/usr/local/jdk
5、修改配置文件:hbase-site.xml
<configuration>
<!-- 数据文件存储的地址 -->
<property>
<name>hbase.rootdir</name>
<value>file:///hbase-data</value>
</property>
</configuration>
6、启动hbase
[root@a55f8d4b7445 hbase]# start-hbase.sh
7、操作hbase
# 进入hbase命令行
hbase shell
# 创建student表和info、grade列族
create 'student','info','grade'
# 添加一条数据
put 'student','s01','info:name','Tom'
三、伪分布模式
1、同上启动镜像
2、修改hbase-env.sh
# 表示使用hbase自带的zookeeper
export HBASE_MANAGES_ZK=true
3、修改hbase-site.xml
<configuration>
<!-- 设置为true表示是分布式环境 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 数据文件存储的地址 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://172.18.0.2:9000/hbase</value>
</property>
<!-- zookeeper地址 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>localhost</value>
</property>
<!-- 数据的冗余度 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
4、配置regionservers
172.18.0.5
5、操作hbase
# 进入容器
docker exec -it hbase1 /bin/bash
# 进入hbase命令行
hbase shell
# 创建表、列族
create 'student1','info','grade'
# 插入数据
put 'student1','s01','info:name','Tom'
7、进入HDFS中查看目录
地址:http://172.18.0.2:50070/explorer.html#/hbase/data/default/
里面就有我们刚刚创建的表
四、全分布式模式
1、启动三个hbase实例
docker exec -it hbase1 /bin/bash
docker exec -it hbase2 /bin/bash
docker exec -it hbase3 /bin/bash
2、配置hbase-env.sh
export JAVA_HOME=/usr/local/jdk
export HBASE_MANAGES_ZK=true
3、配置hbase-site.xml
<configuration>
<!-- 设置为true表示是分布式环境 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 数据文件存储的地址 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://172.18.0.2:9000/hbase</value>
</property>
<!-- zookeeper地址 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>172.18.0.5</value>
</property>
<!-- 分别设置每台机器的hostname -->
<property>
<name>hbase.regionserver.hostname</name>
<value>hbase2</value>
</property>
<!-- 数据的冗余度 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
4、配置从节点地址:vi ./conf/regionservers
172.18.0.6
172.18.0.7
5、将hbase1上配置好的文件,复制到hbase2和hbase3中
scp -r /usr/local/hbase/ root@hbase2:/usr/local
scp -r /usr/local/hbase/ root@hbase3:/usr/local
6、在主节点hbase1上启动hbase
[root@a55f8d4b7445 hbase]# start-hbase.sh
localhost: zookeeper running as process 1320. Stop it first.
master running as process 1399. Stop it first.
172.18.0.7: starting regionserver, logging to /usr/local/hbase/bin/../logs/hbase-root-regionserver-a153c2ec542e.out
172.18.0.6: starting regionserver, logging to /usr/local/hbase/bin/../logs/hbase-root-regionserver-cdd308e8152e.out
7、实现HA
# 在hbase2上启动一个master即可
hbase-daemon.sh start master