在ECS实例的Ubuntu系统中安装HBase

大数据技术原理与应用

返回《在阿里云中搭建大数据实验环境》首页
提示:本教程是一个系列文章,请务必按照本教程首页中给出的各个步骤列表,按照先后顺序一步步进行操作,本博客假设你已经顺利完成了之前的操作步骤。
HBase是Hadoop生态系统中的一个组件,是一种分布式数据库,可以支持数百万列、超过10亿行的数据的存储。本博客介绍如何在在ECS实例的Ubuntu系统中安装HBase。

HBase简介

HBase是一个分布式的、面向列的开源数据库,源于Google的一篇论文《BigTable:一个结构化数据的分布式存储系统》。HBase以表的形式存储数据,表有行和列组成,列划分为若干个列族/列簇(column family)。欲了解HBase的官方资讯,请访问HBase官方网站
HBase的运行有三种模式:单机模式、伪分布式模式、分布式模式。
单机模式:在一台计算机上安装和使用HBase,使用Ubuntu本地文件系统保存数据,不涉及数据的分布式存储HDFS;
伪分布式模式:在一台计算机上模拟一个小的集群,数据使用分布式文件系统HDFS存储;
分布式模式:使用多台计算机实现物理意义上的分布式存储。这里出于学习目的,我们只重点讨论单机模式和伪分布式模式。

下载HBase安装文件

在之前的步骤中,我们已经在Ubuntu中安装了Hadoop,里面包含了HDFS和MapReduce等组件,但是,Hadoop没有自带HBase,需要手动安装HBase。

请在自己的笔记本电脑中,访问HBase官网下载安装文件;或者,也可以直接可以点击这里到百度云盘下载HBase安装包hbase-1.1.5-bin.tar.gz

然后,参考之前的FTP使用指南,在笔记本电脑中,使用FTP软件,使用用户名linziyu连接阿里云ECS实例,把apache-maven-3.3.9-bin.zip这个压缩格式文件上传到远程的阿里云ECS实例的Ubuntu系统中,可以上传到Ubuntu系统的“/home/linziyu/Downloads/”目录下。

根据本教程前面博客介绍的方法,采用用户名linziyu,使用Putty连接ECS中的Ubuntu系统,进入命令行界面,或者也可以使用VNCViewer连接ECS中的Ubuntu系统打开“终端”进入命令行界面。总之,一定要进入命令行界面,这样可以在里面输入Shell命令,来安装HBase。

解压缩HBase安装文件

在命令行界面中,执行如下Shell命令(注意:当前登录用户名是linziyu):
这里选择安装在 /usr/local/中:

cd ~
sudo tar -zxvf ~/Downloads/hbase-1.1.5-bin.tar.gz -C /usr/local
cd  /usr/local
sudo mv ./hbase-1.1.5 ./hbase
sudo  chown  -R  linziyu:linziyu  ./hbase

配置环境变量

vim ~/.bashrc

如果之前该文件中没有引入过PATH环境变量,请在~/.bashrc文件开头添加一行如下内容:

export PATH=$PATH:/usr/local/hbase/bin

如果此前已经在该文件中引入过PATH,请把“/usr/local/hbase/bin”增加在原来PATH后面,用英文的冒号“:”连接起来。举例如下:
比如,原来的~/.bashrc文件内容可能如下:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

那么,把“/usr/local/hbase/bin”增加在原来PATH后面,用英文的冒号“:”连接起来的效果如下:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=$PATH:${JAVA_HOME}/bin:/usr/local/hbase/bin

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

source ~/.bashrc

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

/usr/local/hbase/bin/hbase version

如果能够显示如下信息,就说明单机版HBase安装成功了,注意,单机版HBase使用Ubuntu本地文件系统保存数据,不涉及数据的分布式存储HDFS。

linziyu@iZbp11gznj7n38xkztu64dZ:/usr/local$ /usr/local/hbase/bin/hbase version
2018-04-11 17:00:33,041 INFO  [main] util.VersionInfo: HBase 1.1.5
2018-04-11 17:00:33,042 INFO  [main] util.VersionInfo: Source code repository git://diocles.local/Volumes/hbase-1.1.5/hbase revision=239b80456118175b340b2e562a5568b5c744252e
2018-04-11 17:00:33,042 INFO  [main] util.VersionInfo: Compiled by ndimiduk on Sun May  8 20:29:26 PDT 2016
2018-04-11 17:00:33,042 INFO  [main] util.VersionInfo: From source with checksum 7ad8dc6c5daba19e4aab081181a2457d

HBase伪分布式模式配置

我们需要了解如何配置HBase的伪分布式模式,也就是让HBase数据库借助于分布式HDFS完成数据存储。
(1)配置/usr/local/hbase/conf/hbase-env.sh

cd  /usr/local/hbase/conf
vim ./hbase-env.sh

配置JAVA_HOME,HBASE_CLASSPATH,HBASE_MANAGES_ZK.
HBASE_CLASSPATH设置为本机Hadoop安装目录下的conf目录(即/usr/local/hadoop/conf),在该文件的最前面,添加如下三行内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export HBASE_CLASSPATH=/usr/local/hadoop/conf 
export HBASE_MANAGES_ZK=true

(2)配置/usr/local/hbase/conf/hbase-site.xml
用命令vim编辑器打开并编辑hbase-site.xml,命令如下:

cd  /usr/local/hbase/conf
vim ./hbase-site.xml

打开后,可以看到configuration标签内是空的,没有任何配置信息,请把配置信息写到整个标签里。
修改hbase.rootdir,指定HBase数据在HDFS上的存储路径;将属性hbase.cluter.distributed设置为true。因为我们当前ECS实例中的Hadoop是运行在伪分布式模式下,且NameNode运行在9000端口。
configuration标签修改以后的内容如下:

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://192.168.1.106:9000/hbase</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
</configuration>

上面配置中,hbase.rootdir指定HBase的存储目录;hbase.cluster.distributed设置集群处于分布式模式。
上面配置中,192.168.1.106是你的阿里云ECS实例的私网IP地址,你的私网IP地址可能不是这个,可以登录阿里云控制台,查询自己的ECS实例的私网IP地址。

测试运行HBase

第一步:首先启动Hadoop,如果已经启动hadoop请跳过此步骤。命令如下:

cd /usr/local/hadoop
./sbin/start-dfs.sh

使用jps命令查看是否启动成功:

linziyu@iZbp11gznj7n38xkztu64dZ:/usr/local/hadoop$ jps
21923 Jps
21592 DataNode
21417 NameNode
21806 SecondaryNameNode

如果显示上面类似的进程信息,则表明启动成功。

第二步:切换目录至/usr/local/hbase;再启动HBase.命令如下:

cd /usr/local/hbase
./bin/start-hbase.sh

输入命令jps,看到以下进程信息,说明HBase启动成功:

linziyu@iZbp11gznj7n38xkztu64dZ:/usr/local/hbase$ jps
28690 SecondaryNameNode
6453 HRegionServer
28295 NameNode
6359 HMaster
6521 Jps
6297 HQuorumPeer
28473 DataNode

进入HBase Shell交互式执行环境:

cd /usr/local/hbase
./bin/hbase shell

启动后的屏幕信息如下:

linziyu@iZbp11gznj7n38xkztu64dZ:/usr/local/hbase$ ./bin/hbase shell
2018-04-11 17:36:40,632 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.1.5, r239b80456118175b340b2e562a5568b5c744252e, Sun May  8 20:29:26 PDT 2016

hbase(main):001:0> 

如果要退出HBase Shell交互式执行环境,可以在HBase Shell的命令提示符后面输入exit,如下所示:

hbase(main):001:0> exit

停止HBase运行的命令如下:

cd /usr/local/hbase
./bin/stop-hbase.sh

这时,可以到Hadoop的HDFS中查看变化:

linziyu@iZbp11gznj7n38xkztu64dZ:/usr/local/hadoop$ ./bin/hdfs dfs -ls /
Found 2 items
drwxr-xr-x   - linziyu supergroup          0 2018-04-11 17:35 /hbase
drwxr-xr-x   - linziyu supergroup          0 2018-04-06 22:40 /user

可以看到,在HDFS中,自动生成了一个“/hbase”目录,用来保存HBase的数据。

注意:如果在操作HBase的过程中发生错误,可以通过{HBASE_HOME}目录(/usr/local/hbase)下的logs子目录中的日志文件查看错误原因。
这里启动关闭Hadoop和HBase的顺序一定是:
启动Hadoop—>启动HBase—>关闭HBase—>关闭Hadoop

在HBase数据库中创建表、录入数据

在HBase数据库中创建表、录入数据,这些基本操作的方法,请点击这里阅读,这篇文章里面“三、 编程实践”就讲述了如何创建HBase表。