前言:大数据实验在虚拟机上安装Hadoop后熟悉HBase操作。

参考:HBase2.2.2安装和编程实践指南_厦大数据库实验室博客 

环境:Ubuntu20.04 + Hadoop3.2.3 

1、HBase简介

        HBase是一个分布式的、面向列的开源数据库。HBase的运行有三种模式:单机模式、伪分布式模式、分布式模式。单机模式:在一台计算机上安装和使用HBase,不涉及数据的分布式存储;伪分布式模式:在一台计算机上模拟一个小的集群;分布式模式:使用多台计算机实现物理意义上的分布式存储。

        HBase版本为hbase-2.2.2,这是目前已经发行的已经编译好的稳定的版本,带有src的文件是未编译的版本,这里我们只要下载bin版本hbase-2.2.2-bin.tar.gz就好了。

2、HBase安装

1. 下载hbase2.2.2压缩包,使用华为源镜像

        下载压缩包至自己的路径下,例如我的:/home/hadoop/hbase,也可以在wget命令后面使用 -P 参数指定下载目录。下载的文件如下图的压缩包。

wget https://repo.huaweicloud.com/apache/hbase/2.2.2/hbase-2.2.2-bin.tar.gz

hbase 安装启动 hbase2.2.2安装_vim

hbase 安装启动 hbase2.2.2安装_hbase 安装启动_02

2.解压压缩包

        解压刚才下载的压缩包至自己的路径下,例如我的:/home/hadoop/hbase,也可以在tar命令后面使用 -C 参数指定解压目录。解压的文件如下图中的 hbase-2.2.2。

tar -xzvf hbase-2.2.2-bin.tar.gz

hbase 安装启动 hbase2.2.2安装_其他_03

hbase 安装启动 hbase2.2.2安装_其他_04

hbase 安装启动 hbase2.2.2安装_vim_05

        查看hbase目录的权限,可以看到它的所有者就是当前登录的用户hadoop 。 

hbase 安装启动 hbase2.2.2安装_vim_06

        如果想要让其它用户使用该文件,就要把hbase目录权限赋给指定的用户,要root管理员操作或者当前普通用户有root权限(sudo)。

(1)切换登录到root用户,再进行授权

su - root
chown -R hadoop hbase

hbase 安装启动 hbase2.2.2安装_hadoop_07

(2)当前用户使用root权限(sudo)进行授权

sudo chown -R hadoop hbase

hbase 安装启动 hbase2.2.2安装_hadoop_08

3.配置环境变量

        将hbase解压的目录下的bin目录添加到path中,这样,启动hbase就无需到hbase解压目录下,方便了hbase的使用。初学者切换到解压目录下有助于理解运行过程,熟练之后可以不必切换。

使用vim命令编辑~/.bashrc文件,打开之后按 i 键进行编辑,编辑完成之后按ESC键再按 : 后输入wq或者x保存并退出;输入q是退出,!q是强制退出。

vim ~/.bashrc

如果没有引入过PATH请在~/.bashrc文件尾行添加如下内容(hbase安装路径):

export PATH=$PATH:/home/hadoop/hbase/hbase-2.2.2/bin

添加之后~/.bashrc文件如下:

hbase 安装启动 hbase2.2.2安装_xml_09

编辑完成后,再执行source命令使上述配置在当前终端立即生效,命令如下:

source ~/.bashrc

hbase 安装启动 hbase2.2.2安装_其他_10

 4.查看HBase版本

        查看HBase版本,确定hbase安装成功,命令如下:

hbase 安装启动 hbase2.2.2安装_hbase 安装启动_11


2、HBase配置

必须确保已经安装jdk,hadoop,ssh。hadoop单击模式不需要,伪分布式和分布式需要。如果没有安装可以参考Hadoop安装。

所用到的配置文件都在自己hbase安装目录下的conf文件夹中,例如我的路径:/home/hadoop/hbase/hbase-2.2.2/conf

2.1 单机模式配置

1. 配置hbase-env.sh 文件。配置JAVA环境变量,并添加配置HBASE_MANAGES_ZK为true,用vi命令打开并编辑hbase-env.sh,命令如下:

vim /home/hadoop/hbase/hbase-2.2.2/conf/hbase-env.sh

配置HBASE_MANAGES_ZK为true,表示由hbase自己管理zookeeper,不需要单独的zookeeper。hbase-env.sh中本来就存在这些变量的配置,只需要删除前面的#注释并修改配置内容即可:

export JAVA_HOME=/home/hadoop/java/jdk1.8.0_152
export HBASE_MANAGES_ZK=true

修改完之后保存并退出。

2. 配置hbase-site.xml
打开并编辑hbase-site.xml,命令如下:

vim /home/hadoop/hbase/hbase-2.2.2/conf/hbase-site.xml

在启动HBase前需要设置属性hbase.rootdir,用于指定HBase数据的存储位置,因为如果不设置的话,hbase.rootdir默认为/tmp/hbase-${user.name},这意味着每次重启系统都会丢失数据。此处设置为自己HBase安装目录下的hbase-tmp文件夹(例如我的:/home/hadoop/hbase/hbase-2.2.2/hbase-tmp),添加配置如下:

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>file:///home/hadoop/hbase/hbase-2.2.2/hbase-tmp</value>
        </property>
</configuration>

3. 切换到HBase安装目录下(例如我的:/home/hadoop/hbase/hbase-2.2.2,配置过环境变量的可以直接输入启动命令),再启动HBase,命令如下:

cd /home/hadoop/hbase/hbase-2.2.2
bin/start-hbase.sh 
bin/hbase shell

上述三条命令中,bin/start-hbase.sh用于启动HBase,bin/hbase shell用于打开shell命令行模式,用户可以通过输入shell命令操作HBase数据库。
成功启动HBase如下:

hbase 安装启动 hbase2.2.2安装_xml_12

 进入hbase shell成功如下:

hbase 安装启动 hbase2.2.2安装_hadoop_13

 退出输入exit即可。

停止HBase运行,命令如下:

bin/stop-hbase.sh

2.2 伪分布式配置

1.配置hbase-env.sh。命令如下:

vim /home/hadoop/hbase/hbase-2.2.2/conf/hbase-env.sh

单机模式已经配置了JAVA_HOME,HBASE_MANAGES_ZK。还要配置HBASE_CLASSPATH,
HBASE_CLASSPATH设置为自己HBase安装目录下的conf目录(同上)。

export HBASE_CLASSPATH=/home/hadoop/hbase/hbase-2.2.2/conf

2.配置hbase-site.xml。命令如下:

vim /home/hadoop/hbase/hbase-2.2.2/conf/hbase-site.xml

修改hbase.rootdir,指定HBase数据在HDFS上的存储路径;将属性hbase.cluter.distributed设置为true。假设当前Hadoop集群运行在伪分布式模式下,在本机上运行,且NameNode运行在9000端口。

修改配置如下:

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://localhost:9000/hbase</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <property>
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
    </property>
</configuration>

hbase.rootdir指定HBase的存储目录;hbase.cluster.distributed设置集群处于分布式模式.
另外,上面配置文件中,hbase.unsafe.stream.capability.enforce这个属性的设置,是为了避免出现启动错误。也就是说,如果没有设置hbase.unsafe.stream.capability.enforce为false,那么,在启动HBase以后,会出现无法找到HMaster进程的错误。

3. 接下来测试运行HBase。
第一步:首先登陆ssh,之前设置了无密码登陆,因此这里不需要密码;再切换目录至hadoopd的安装目录下启动hadoop(例如我的:/home/hadoop/hadoop3/hadoop-3.2.3,如果配置过环境变量可以直接输入启动命令),如果已经启动hadoop请跳过此步骤。命令如下:

ssh
cd /home/hadoop/hadoop3/hadoop-3.2.3
sbin/start-dfs.sh

输入命令jps,能看到NameNode,DataNode和SecondaryNameNode都已经成功启动,表示hadoop启动成功。

第二步:切换HBase安装目录下启动HBase同上。启动成功,输入命令jps,看到以下界面说明hbase启动成功。再进入shell界面并退出然后停止HBase运行同上。

成功截图如下:

hbase 安装启动 hbase2.2.2安装_hbase 安装启动_14