一、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.csdn.net/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地址主/从
lb01192.168.231.141

MASTER

web01192.168.231.142SLAVER01
web02192.168.231.143SLAVER02

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.csdn.net/linlinv3/article/details/49465615

【2】https://www.cnblogs.com/qinersky902/p/6217741.html

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐