承接上一篇:分布式文件系统HDFS上机实践
分布式数据库HBase
一、HBase介绍
HBase是一个分布式的、面向列
的开源数据库,源于Google的一篇论文《BigTable:一个结构化数据的分布式存储系统》
。HBase以表的形式存储数据,表有行和列组成,列划分为若干个列族/列簇(column family)。
它是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的一部分。
可以直接或通过HBase的存储HDFS数据。使用HBase在HDFS读取消费/随机访问数据。 HBase在Hadoop的文件系统之上,并提供了读写访问。
HDFS | HBase |
---|---|
HDFS是适于存储大容量文件的分布式文件系统。 | HBase是建立在HDFS之上的数据库。 |
HDFS不支持快速单独记录查找。 | HBase提供在较大的表快速查找 |
它提供了高延迟批量处理;没有批处理概念。 | 它提供了数十亿条记录低延迟访问单个行记录(随机存取)。 |
它提供的数据只能顺序访问。 | HBase内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。 |
HBase的运行有三种模式:
单机模式、伪分布式模式、分布式模式
- 单机模式:在一台计算机上安装和使用HBase,不涉及数据的分布式存储;
- 伪分布式模式:在一台计算机上模拟一个小的集群;
- 分布式模式:使用多台计算机实现物理意义上的分布式存储。这里出于学习目的,我们只重点讨论单机模式和伪分布式模式。
具体可看:https://blog.csdn.net/weixin_43576422/article/details/107871504
运行环境:
本教程运行环境是在Ubuntu-64位系统下(比如Ubuntu18.04,Ubuntu16.04或Ubuntu14.04)
Hadoop3.1.3
HBase版本为hbase-2.2.2,
这是目前已经发行的已经编译好的稳定的版本,带有src的文件是未编译的版本,这里我们只要下载bin版本hbase-2.2.2-bin.tar.gz就好了。下载地址:http://archive.apache.org/dist/hbase/
二、安装并配置HBase2.2.2
在安装HBase之前,请确保你的电脑已经安装了Hadoop3.1.3,由于HBase对Hadoop具有版本依赖性,所以,在安装HBase2.2.2时,一定要首先安装Hadoop3.1.3。
1 进入存放压缩包目录,解压安装包hbase-2.2.2-bin.tar.gz至路径 /usr/local,命令如下:
sudo tar -zxf hbase-2.2.2-bin.tar.gz -C /usr/local
1.2 将解压的文件名hbase-2.2.2改为hbase,以方便使用,命令如下:
cd /usr/local
sudo mv ./hbase-2.2.2 ./hbase
下面把hbase目录权限赋予给hadoop用户:
sudo chown -R hadoop ./hbase
1.3 配置环境变量
将hbase下的bin目录添加到path中,这样,启动hbase就无需到/usr/local/hbase目录下,大大的方便了hbase的使用。教程下面的部分还是切换到了/usr/local/hbase目录操作,有助于初学者理解运行过程,熟练之后可以不必切换。如果之前有操作过,这里应该很好理解。
编辑/etc/profile文件
vim /etc/profile
如果没有引入过PATH请在~/etc/profile件尾行添加如下内容:
export PATH=$PATH:/usr/local/hbase/bin
如果已经引入过PATH请在export PATH这行追加/usr/local/hbase/bin,这里的“:”是分隔符。如下图:
使其生效:
source /etc/profile
补充: 下面这两个文件都是设置全局环境变量,对所有用户都会生效:
etc/profile:
此文件为系统的每个用户设置环境信息。当用户登录时,该文件被执行一次,并从 /etc/profile.d 目录的配置文件中搜集shell 的设置。一般用于设置所有用户使用的全局变量。
/etc/bashrc:
当 bash shell 被打开时,该文件被读取。也就是说,每次新打开一个终端 shell,该文件就会被读取。
2.1单机模式配置
1. 配置/usr/local/hbase/conf/hbase-env.sh 。
配置JAVA环境变量,并添加配置HBASE_MANAGES_ZK为true,用vi命令打开并编辑hbase-env.sh,命令如下:
1. vim /usr/local/hbase/conf/hbase-env.sh
配置JAVA环境变量。如果你之前已经按照本网站Hadoop安装教程安装Hadoop3.1.3,则已经安装了JDK1.8。JDK的安装目录是/usr/lib/jvm/jdk1.8.0_261, 则JAVA _HOME =/usr/lib/jvm/jdk1.8.0_162;配置HBASE_MANAGES_ZK为true,表示由hbase自己管理zookeeper,不需要单独的zookeeper。hbase-env.sh中本来就存在这些变量的配置,大家只需要删除前面的#并修改配置内容即可(#代表注释):
注:normal模式下按 / 即可进行查找(区分大小写)
1. export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_261
2. export HBASE_MANAGES_ZK=true
添加完成后保存退出即可。
2. 配置/usr/local/hbase/conf/hbase-site.xml
打开并编辑hbase-site.xml,命令如下:
1. vim /usr/local/hbase/conf/hbase-site.xml
在启动HBase前需要设置属性hbase.rootdir,用于指定HBase数据的存储位置,因为如果不设置的话,hbase.rootdir默认为/tmp/hbase-${user.name},这意味着每次重启系统都会丢失数据。此处设置为HBase安装目录下的hbase-tmp文件夹即(/usr/local/hbase/hbase-tmp),添加配置如下:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///usr/local/hbase/hbase-tmp</value>
</property>
</configuration>
3. 测试运行。
首先切换目录至HBase安装目录/usr/local/hbase;再启动HBase。命令如下:
cd /usr/local/hbase
bin/start-hbase.sh
bin/hbase shell
上述三条命令中,sudo bin/start-hbase.sh用于启动HBase,bin/hbase shell用于打开shell命令行模式,用户可以通过输入shell命令操作HBase数据库,exit退出。
成功启动HBase(有错误Class path包含了多个SLF4J的绑定。分别在目录:/usr/local/hbase/lib和/usr/local/hadoop/hadoop-1.0.3/lib下,解决的办法很简单,只要移除其中一个SLF4J就行了。至于关于错误的替换,不影响使用),截图如下:
2.2 伪分布式模式配置
1.配置/usr/local/hbase/conf/hbase-env.sh。命令如下:
vim /usr/local/hbase/conf/hbase-env.sh
配置JAVA_HOME,HBASE_CLASSPATH,HBASE_MANAGES_ZK.
HBASE_CLASSPATH设置为本机HBase安装目录下的conf目录(即/usr/local/hbase/conf)
注意自己的Java版本号,可通过 java -version
查看
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_261
export HBASE_CLASSPATH=