HBase安装
在[官网](https://hbase.apache.org/downloads.html)下载或在国内其他源内下载
我下载的版本[hbase-2.4.13-bin](https://dlcdn.apache.org/hbase/2.4.13/hbase-2.4.13-bin.tar.gz)
# 上传到服务器
工具不限
# 解压
`tar -xvf hbase-2.4.13-bin.tar.gz`
改名
`mv hbase-2.4.13-bin.tar.gz hbase`
移动到安装目录
`mv hbase /opt`
# 配置
进入hbase安装目录的conf目录下:
`cd /opt/hbase/conf`
修改 `hbase-env.sh`:
`vi hbsae-env.sh`
将`export JAVA_HOME=`修改或添加为:`export JAVA_HOME=/opt/jdk1.8/
`java的路径换成自己的
将`export HBASE_MANAGES_ZK` 设置成`false`表示不完全分布
修改`regionservers`:
将集群的IP或者主机名写入,写入主机名前提是已经进行了主机名和IP地址的映射。
在 `<property></property>`添加以下内容
```xml
<property>
<name> hbase.rootdir </name>
<value>hdfs://hadoop-01:9000/hbase</value>
<description>
hbase.rootdir是RegionServer的共享目录,用于持久化存储HBase数据,默认写入/tmp中。
如果不修改此配置,在HBase重启时,数据会丢失。此处一般设置的是hdfs的文件目录,
如NameNode运行在namenode.Example.org主机的9090端口,则需要设置为hdfs://namenode.example.org:9000/hbase
</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>此项用于配置HBase的部署模式,false表示单机或者伪分布式模式,true表不完全分布式模式。
</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop-01,hadoop-02,hadoop-03</value>
<description>此项用于配置ZooKeeper集群所在的主机地址。value是运行数据节点的主机地址,以英文逗号隔开。
</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/var/zookeeper</value>
<description>此项用于设置存储ZooKeeper的元数据,如果不设置默认存在/tmp下,重启时数据会丢失。
</description>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/opt/hbase/data</value>
<description>
这是本地文件系统上的临时目录。将此设置更改为指向比“/tmp”更持久的位置,这是java.io.tmpdir的常见解决方案,因为在重新启动计算机时清除了“/tmp”目录。
</description>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
```
HBase默认配置参考:https://www.w3cschool.cn/hbase_doc/hbase_doc-p46d2ki1.html
# 开启和关闭
如果在环境变量内加入了hbase的目录和其bin目录:
在任意位置命令行输入:`start-hbase.sh 开启 stop-hbase.sh 关闭`
如果在环境变量内加入了hbase的目录未添加其bin目录:
在任意位置命令行输入:`bin/start-hbase.sh 开启 bin/stop-hbase.sh 关闭`
如果未添加环境变量:
在任意位置命令行输入:`hbase的根目录的绝对路径/bin/start-hbase.sh 开启 hbase的根目录的绝对路径bin/stop-hbase.sh 关闭`
# HBase伪分布
hbase的伪分布(只有一个节点,使用自己的zookeeper实例)
解压缩
编辑文件conf/hbase-env.sh 修改内容
```shell
export JAVA_HOME=/opt/jdk
export HBASE_MANAGES_ZK=true
```
编辑文件conf/hbase-site.xml 修改内容
```xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop-1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop-1</value>
</property>
```
启动hbase之前,要检查hadoop的hdfs是否正常运行
`bin/start-hbase.sh`
检查,执行jps命令,看到3个新的java进程,分别是HQuorumPeer、HMaster、HRegionServer
查看http://hadoop01:16010
# HBase集群搭建
搭建hbase集群(hadoop-1作为主节点,hadoop-2和hadoop-3作为从节点)
在hadoop-1上解压缩
编辑文件conf/hbase-env.sh 修改内容
```shell
export JAVA_HOME=/opt/java
export HBASE_MANAGES_ZK=false
```
编辑文件conf/hbase-site.xml 修改内容
```xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop-1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop-1,hadoop-2,hadoop-3</value>
</property>
```
regionservers分布在哪几台服务器。
编辑文件conf/regionservers 修改内容
hadoop-2
hadoop-3
复制hbase到hadoop-2、hadoop-3节点
启动hbase之前,要检查hadoop的hdfs、zookeeper集群是否正常运行
在hadoop-1上执行`bin/start-hbase.sh`
检查,执行jps命令,在hadoop-1上看到1个新的java进程:HMaster
查看http://hadoop-1:16010