前言:大数据实验在虚拟机上安装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
2.解压压缩包
解压刚才下载的压缩包至自己的路径下,例如我的:/home/hadoop/hbase,也可以在tar命令后面使用 -C 参数指定解压目录。解压的文件如下图中的 hbase-2.2.2。
tar -xzvf hbase-2.2.2-bin.tar.gz
查看hbase目录的权限,可以看到它的所有者就是当前登录的用户hadoop 。
如果想要让其它用户使用该文件,就要把hbase目录权限赋给指定的用户,要root管理员操作或者当前普通用户有root权限(sudo)。
(1)切换登录到root用户,再进行授权
su - root
chown -R hadoop hbase
(2)当前用户使用root权限(sudo)进行授权
sudo chown -R hadoop hbase
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文件如下:
编辑完成后,再执行source命令使上述配置在当前终端立即生效,命令如下:
source ~/.bashrc
4.查看HBase版本
查看HBase版本,确定hbase安装成功,命令如下:
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 shell成功如下:
退出输入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运行同上。
成功截图如下: