一、Hbase简介
HBase是 Apache Hadoop的数据库,能够对大型数据提供随机、实时的读写访问。它目
前已经是 Apache众多开源项目中的一个顶级项目。 HBase的运行依赖于其他文件系统,它
模仿并提供了基于 Google文件系统(GFS, Google File System)中大表( Bigtable)数据库
的所有功能。
HBase的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能
够处理由成千上万的行和列所组成的大型数据。
HBase是一个开源的、分布式的、多版本的、面向列的存储模型。它可以直接使用本地文
件系统,也可以使用 Hadoop的HDFS文件存储系统。不过,为了提高数据的可靠性和系统的
健壮性,并且发挥 HBase处理大型数据的能力,还是使用HDFS作为文件存储系统更为稳妥。
二、系统环境
[hadoop@lb01 ~]$ java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
[hadoop@lb01 ~]$ hadoop version
Hadoop 2.7.7
注意:
1.Hadoop完全分布式搭建可参考https://blog.youkuaiyun.com/yuanfangPOET/article/details/83956688
其中添加环境变量最好添加到本用户.bash_profile中,本文中所有.bashrc替换成.bash_profile
2.Hbase版本最好与Hadoop版本相对照,本次使用hbase-1.2.6.1版本
https://pan.baidu.com/s/1fK-EFf6kX8HdUzZCepwnhQ
三、Hbase安装
3.1 单机模式
1.解压
[hadoop@lb01 ~]$ tar xf hbase-1.2.6.1-bin.tar.gz
[hadoop@lb01 ~]$ mv hbase-1.2.6.1 hbase1.2
2.修改hbase1.2/conf/hbase-env.sh,添加java环境变量
[hadoop@lb01 conf]$ vim hbase-env.sh
export JAVA_HOME=/home/hadoop/jdk1.8
3.编辑hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/hadoop/hbase1.2/data</value>
</property>
4.添加hbase环境变量
[hadoop@lb01 ~]$ vim .bash_profile
export HBASE_HOME=/home/hadoop/hbase1.2
export PATH=.:$HBASE_HOME/bin:$PATH
5.启动hbase
[hadoop@lb01 ~]$ start-hbase.sh
jps查看,出现HMaster就是启动成功了
3.2 伪分布模式
1.修改hbase1.2/conf/hbase-env.sh,添加入下:
[hadoop@lb01 conf]$ vim hbase-env.sh
#指向hadoop配置文件目录
export HBASE_CLASSPATH=/home/hadoop/hadoop2.7/etc/hadoop
2.编辑hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/hadoop/hbase1.2/data</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
3.启动hbase
[hadoop@lb01 conf]$ start-hbase.sh
jps查看:
3.3 完全分布式
1.使用三个节点
主机名 | IP地址 | 主/从 |
lb01 | 192.168.231.141 | MASTER |
web01 | 192.168.231.142 | SLAVER01 |
web02 | 192.168.231.143 | SLAVER02 |
2.修改hbase-env.sh
[hadoop@lb01 conf]$ vim hbase-env.sh
export JAVA_HOME=/home/hadoop/jdk1.8
export HBASE_CLASSPATH=/home/hadoop/hadoop2.7/etc/hadoop
export HADOOP_HOME=/home/hadoop/hadoop2.7
export HBASE_PID_DIR=/home/hadoop/hbase1.2/pids #指定pid存储路径,否则存在/tmp下,stop-hbase.sh会出现错误
3.编辑hbase-site.xml
[hadoop@lb01 conf]$ vim hbase-site.xml
<configuration>
<property>
<!--重要的也是必须设置的,启动ZooKeeper 的服务器列表,逗号分隔,cluster模式下必须设置,默认是localhost,hbase客户端也需要设置这个值去访问ZooKeeper -->
<name>hbase.zookeeper.quorum</name>
<value>lb01,lb02,lb03</value>
</property>
<property>
<!--用户设置 ZooKeeper 快照的存储位置,默认值为 /tmp,显然在重启的时候会清空-->
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/hbase/zookeeperdata</value>
</property>
<property>
<!--本地文件系统的临时文件夹。可以修改到一个更为持久的目录上。(/tmp会在重启时清除)-->
<name>hbase.tmp.dir</name>
<value>/home/hadoop/hbase/tmpdata</value>
</property>
<property>
<!-- 这个目录是 RegionServer 的共享目录,用来持久化 HBase。-->
<name>hbase.rootdir</name>
<value>hdfs://lb01:9000/hbase</value>
</property>
<property>
<!--HBase 的运行模式。为 false 表示单机模式,为 true 表示分布式模式。-->
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
4.配置regionservers ,添加slave,可以为SLAVER的IP地址
本机已在/etc/hosts中添加域名解析
[hadoop@lb01 conf]$ vim regionservers
web01
web02
5.把hbase1.2传输到SLAVER节点,也就是web01,web02,且.bash_profile也要复制到两个从节点
[hadoop@lb01 ~]$ scp -r hbase1.2 hadoop@192.168.231.142:/home/hadoop/hbase1.2
[hadoop@lb01 ~]$ scp -r hbase1.2 hadoop@192.168.231.143:/home/hadoop/hbase1.2
[hadoop@MASTER ~]$ scp .bash_profile hadoop@192.168.231.142:/home/hadoop/
[hadoop@MASTER ~]$ scp .bash_profile hadoop@192.168.231.143:/home/hadoop/
6.从主节点启动hbase
[hadoop@lb01 ~]$ start-hbase.sh
jps查看:
主节点出现HQuorumPeer、 HMaster,从节点出现 HQuorumPeer、HRegionServer,说明搭建成功!
参考
【1】https://blog.youkuaiyun.com/linlinv3/article/details/49465615
【2】https://www.cnblogs.com/qinersky902/p/6217741.html