@羲凡——只为了更好的活着
Hbase2.0完全分布式安装完整版——Hbase2.1.2
HBase是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库,另一个不同的是HBase基于列的而不是基于行的模式。Hbase的安装也很简单,而且Hbase2.0和Hbase1.0以及Hbase0版本安装都非常类似,完全可以套用。此文中选择Hbase2.1.2作为示范!
我用三台机器做安装Hbase集群hostname分别是deptest14、deptest20、deptest23
一、前期准备
1.下载Hbase安装包
下载地址如下
https://archive.apache.org/dist/hbase/2.1.2/
2.安装jdk(官网要求jdk1.8)
hadoop都安装了,jdk肯定早就有了。不会的同学可以,烦我前面的博客,不赘述
hadoop高可用安装 https://blog.csdn.net/weixin_42003671/article/details/86478544
3.安装zookeeper
本文选着Hbase自带的zk,入股哦全部按照本文来,可以跳过此步骤
hadoop都安装了,zk肯定早就有了。不会的同学可以,烦我前面的博客,不赘述
hadoop高可用安装 https://blog.csdn.net/weixin_42003671/article/details/86478544
二、安装Hbase
先在一台机器(比如deptest23)上操作,再将安装包拷贝到其他机器上
0.介绍官网两段话
HBase的配置参数修改,主要根据下面两句话,很简单的英语大家可以看一下。官网地址 http://hbase.apache.org/2.1/book.html#_configuration_files
1.解压并配置/etc/profile
tar -zxf hbase-2.1.2-bin.tar.gz -C ./ # 解压到当前文件夹
sudo vi /etc/profile
# HBASE_HOME
export HBASE_HOME=/usr/local/package/hbase-2.1.2
export PATH=$PATH:$HBASE_HOME/bin
# 重新加载/etc/profile文件
source /etc/profile
2.修改环境文件 hbase-env.sh
设置 JAVA_HOME 为自己安装的版本
# The java implementation to use. Java 1.8+ required.
# export JAVA_HOME=/usr/java/jdk1.8.0/
export JAVA_HOME=/usr/local/package/jdk1.8.0_131
设置 HBASE_MANAGES_ZK 为true(默认为true),即开启hbase自带的zk,如果你用自己的zk这需要将其设置为false
# Tell HBase whether it should manage it's own instance of ZooKeeper or not.
# export HBASE_MANAGES_ZK=true
export HBASE_MANAGES_ZK=true
2.修改配置文件 hbase-site.xml
<configuration>
<!-- HBase数据的存储目录 -->
<property>
<name>hbase.rootdir</name>
<value>/hbase</value>
</property>
<!-- 开启HBase分布式集群 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 自己的zk集群 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>deptest14,deptest20,deptest23</value>
</property>
<!-- 设置zk集群端口,默认是2181,此处设置成21810是为了防止和你自己的zk有冲突 -->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>21810</value>
</property>
<!-- Hbase在zk上注册的数据信息,默认是/tmp,如果不修改,当系统重启的时候会删除/tmp目录 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/package/hbase-2.1.2/zk_data</value>
</property>
</configuration>
3.修改 regionservers
# 要删除之前的localhost,添加如下三行
deptest14
deptest20
deptest23
4.拷贝core-site.xml和hdfs-site.xml
为了让Hbase读取到hadoop的配置将两个文件拷贝到 $HBASE_HOME/conf/ 目录下
cp $HADOOP_HOME/etc/hadoop/core-site.xml $HBASE_HOME/conf/
cp $HADOOP_HOME/etc/hadoop/hdfs-site.xml $HBASE_HOME/conf/
5.分发和启动
a.将Hbase安装包,从deptest23分发到另外两台机器(deptest14和deptest20)上
scp -r hbase-2.1.2/ deptest14:/usr/local/package/
scp -r hbase-2.1.2/ deptest20:/usr/local/package/
b.添加HBASE_HOME到/etc/profile文件中
sudo vi /etc/profile
# HBASE_HOME
export HBASE_HOME=/usr/local/package/hbase-2.1.2
export PATH=$PATH:$HBASE_HOME/bin
# 重新加载/etc/profile文件
source /etc/profile
c.启动Hbase
在哪一台机器上输入此 start-hbase.sh
启动命令(博主在deptest20上执行),那一台机器就是HMaster
d.启动master备份节点(在deptest23上执行)
hbase-daemon.sh start master
三、测试Hbase
在任意目录下输入hbase shell
进入hbase
hbase(main):001:0> list_namespace
NAMESPACE
default
hbase
2 row(s)
Took 2.0178 seconds
hbase(main):002:0> create_namespace 'aarontest'
Took 0.8973 seconds
hbase(main):003:0> create 'aarontest:hb_staff','info'
Created table aarontest:hb_staff
Took 2.4781 seconds
=> Hbase::Table - aarontest:hb_staff
hbase(main):004:0> put 'aarontest:hb_staff','188','info:name','aaron'
Took 0.4232 seconds
hbase(main):005:0> put 'aarontest:hb_staff','188','info:age','100'
Took 0.0139 seconds
hbase(main):006:0> put 'aarontest:hb_staff','188','info:sex','male'
Took 0.0107 seconds
hbase(main):007:0> put 'aarontest:hb_staff','219','info:name','yaoyao'
Took 0.0097 seconds
hbase(main):008:0> put 'aarontest:hb_staff','219','info:sex','18'
Took 0.0107 seconds
hbase(main):009:0> scan 'aarontest:hb_staff'
ROW COLUMN+CELL
188 column=info:age, timestamp=1547959759887, value=100
188 column=info:name, timestamp=1547959737122, value=aaron
188 column=info:sex, timestamp=1547959784771, value=male
219 column=info:name, timestamp=1547959820155, value=yaoyao
219 column=info:sex, timestamp=1547959831162, value=18
2 row(s)
Took 0.1337 seconds
hbase(main):010:0> get 'aarontest:hb_staff','188'
COLUMN CELL
info:age timestamp=1547959759887, value=100
info:name timestamp=1547959737122, value=aaron
info:sex timestamp=1547959784771, value=male
1 row(s)
Took 0.0997 seconds
四、安装注意事项
1.查看/etc/hosts中的映射关系
博主在这里被坑了,因为公司业务中总有一些需要配置映射的,如果你用到的ip被映射成别的名字而不是配置文件中需要就会报错。博主的情况是,deptest23这台机器的IP在 /etc/hosts 中映射成别的名字。导致你在deptest23上开启的端口别人访问不到。
10.11.12.23 aaron.com #将这一行注释掉
10.11.12.23 deptest23
2.如果配置完全分布式,一定要将core-site.xml和hdfs-site.xml文件拷贝到$HBASE_HOME/conf/ 目录下,不然会报如下错误
java.io.IOException: Can not create wal directory file:/hbase/WALs/deptest23,16020,1547958640541
at org.apache.hadoop.hbase.regionserver.HRegionServer.setupWALAndReplication(HRegionServer.java:1814)
at org.apache.hadoop.hbase.regionserver.HRegionServer.handleReportForDutyResponse(HRegionServer.java:1517)
at org.apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.java:963)
at java.lang.Thread.run(Thread.java:748)
或者
Caused by: java.net.UnknownHostException: ns
3.如果第一次没有启动成功,第二次尝试启动时必须删掉 hbase.zookeeper.property.dataDir 对应的目录(三台zk上都要操作)
4.hbase1.0以后的版本webUI的端口是16010,但是1.0之前是60010。必须看好自己的版本,不要搞错了
5.在哪台机器上执行 start-hbase.sh,那台机器就是master
6.在已经有一个master的情况下,在一台机器上在启动一个master,这该master为备份节点(Backup Masters),备份节点可以启动多个(一般启动两个就够了),形成真正的高可用
恭喜您已经完成Hbase 的安装
恭喜您已经完成Hbase 的安装
恭喜您已经完成Hbase 的安装
若对博客中有任何问题,欢迎留言交流
@羲凡——只为了更好的活着