学习目标:
1.学习HBase的安装流程
2.掌握HBase的工作原理
实验平台:章鱼互联网学院(https://www.ipieuvre.com/)
相关知识:
HBase是一个分布式的,面向列的开源数据库,该技术来源于Fay Chang所撰写的Google论文”Bigtable:一个结构化数据的分布式存储系统“。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列而不是基于行模式。在需要实时读写、随机访问超大规模数据集时,可以使用HBase。
上图描述Hadoop Ecosystem中的各层结构。其中,HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持。Hadoop MapReduce为HBase提供了高性能的计算能力,ZooKeeper为HBase提供了稳定服务和故障切换(failover)机制。此外,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。
HBase Master负责管理所有的HRegion,HBase Master并不存储HBase服务器的任何数据,HBase逻辑上的表可能会划分为多个HRegion,然后存储在HRegion Server群中,HBase Master Server中存储的是从数据到HRegion Server的映射。
一台机器只能运行一个HRegion服务器,数据的操作会记录在Hlog中,在读取数据时候,HRegion会先访问缓存,如果缓存中没有数据才回到Hstore中上找,每一个列都会有一个Hstore集合,每个Hstore集合包含了很多具体的HstoreFile文件,这些文件是B树结构的,方便快速读取。
系统环境:
Linux Ubuntu 16.04
jdk-7u75-linux-x64
hadoop-2.6.0-cdh5.4.5
学习内容:
【前提】:在已安装好Hadoop的情况下,进行Hbase的安装。
1、打开Linux系统,新建/data/hbase1目录,作用:存放所需文件。
mkdir -p /data/hbase1
切换目录到/data/hbase1下,使用wget命令,下载HBase所需安装包hbase-1.0.0-cdh5.4.5.tar.gz。
cd /data/hbase1
wget http://192.168.1.100:60000/allfiles/hbase1/hbase-1.0.0-cdh5.4.5.tar.gz
2、将/data/hbase1目录下的的Hbase的压缩包解压到/apps目录下。
tar -xzvf /data/hbase1/hbase-1.0.0-cdh5.4.5.tar.gz -C /apps
切换到/apps目录下,对/apps/hbase-1.0.0-cdh5.4.5/,进行重命名为hbase。
cd /apps
mv /apps/hbase-1.0.0-cdh5.4.5/ /apps/hbase
3、对Hbase添加环境变量。使用vim打开用户环境变量文件。
【进入vim后,环境变量一般加在最后。先输入i进入编辑模式,输入环境变量后,按esc然后输入**:wq!** 进行保存并退出。
sudo vim ~/.bashrc
在环境变量文件末尾位置,追加HBase的bin目录路径相关配置,并保存退出。即下列内容:
#hbase
export HBASE_HOME=/apps/hbase
export PATH=$HBASE_HOME/bin:$PATH
然后执行source命令,使环境变量生效。
source ~/.bashrc
可以调用HBase的bin目录下的脚本。先来查看一下HBase的版本信息。
hbase version
4、对Hbase进行配置。
4.1切换目录到/apps/hbase/conf目录下。
cd /apps/hbase/conf
4.2使用vim编辑hbase-env.sh文件。
vim hbase-env.sh
4.3追加配置到hbase-env.sh中
【切记:记得保存并退出】
export JAVA_HOME=/apps/java
export HBASE_MANAGES_ZK=true
export HBASE_CLASSPATH=/apps/hbase/conf
解释:
1、JAVA_HOME为java程序所在位置;
2、HBASE_MANAGES_ZK表示是否使用HBase自带的zookeeper环境;
3、HBASE_CLASSPATH指向hbase配置文件的路径。
5、使用vim打开hbase-site.xml文件。
vim hbase-site.xml
在两个之间添加如下内容:
<property>
<name>hbase.master</name>
<value>localhost</value>
</property>
<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.zookeeper.quorum</name>
<value>localhost</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/data/tmp/zookeeper-hbase</value>
</property>
解释:
1、hbase.master:HBase主节点地址。
2、hbase.rootdir:HBase文件所存储的位置。
3、hbase.cluster.distributed:HBase是否为分布式模式。
4、hbase.zookeeper.quorum:这里是配置ZooKeeper的服务器的地方。
5、hbase.zookeeper.property.dataDir:这里表示HBase在ZooKeeper上存储数据的位置。
【这里需要注意:】
hbase.zookeeper.property.dataDir目录,需要提前创建。
sudo mkdir -p /data/tmp/zookeeper-hbase
将/data/tmp/zookeeper-hbase目录切换所属用户为yxnn及用户组为yxnn。
sudo chown -R yxnn:yxnn /data/tmp/zookeeper-hbase
6、使用vim编辑/apps/hbase/conf/regionservers文件。
此文件存储了HBase集群节点的ip地址,目前只有一台节点,所以只需要填写localhost即可。
vim /apps/hbase/conf/regionservers
修改内容是:
localhost
7、查看当前进程。
jps
若未启动,则切换到/apps/hadoop/sbin目录下,启动Hadoop。
cd /apps/hadoop/sbin
./start-all.sh
当Hadoop启动后,进入Hbase的bin目录下,启动Hbase服务。
cd /apps/hbase/bin/
./start-hbase.sh
8、查看Hbase进程是否存在。
jps
结果为:
可以看到HMaster、HRegionServer、HQuorumPeer进程都已启动。
为了进一步测试HBase安装,是否正常,进入HBase Shell接口。
hbase shell
输入list的命令,查看当前有哪些HTable表。
list
创建一张表tb,表中含有一个列簇mycf。
create 'tb','mycf'
再次输入list,列出HBase中的表.