一、简介
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协调工具。
1.HBase(NoSQL)的数据模型
1) 表(table),是存储管理数据的。
2) 行键(row key),类似于MySQL中的主键。行键是HBase表天然自带的。
3) 列族(column family),列的集合。
a) HBase中列族是需要在定义表时指定的,列是在插入记录时动态增加的。
b) HBase表中的数据,每个列族单独一个文件。
4) 时间戳(timestamp),列(也称作标签、修饰符)的一个属性。行键和列确定的单元格,可以存储多个数据,每个数据含有时间戳属性,数据具有版本特性。如果不指定时间戳或者版本,默认取最新的数据。
5) 存储的数据都是字节数组。
6) 表中的数据是按照行键的顺序物理存储的。
2.HBase的物理模型
1) HBase是适合海量数据(如20PB)的秒级简单查询的数据库。
2) HBase表中的记录,按照行键进行拆分, 拆分成一个个的region。许多个region存储在regionserver(单独的物理机器)中的。这样,对表的操作转化为对多台region server的并行查询。
3.HBase的体系结构
HBase是主从式结构,HMaster、HRegionServer
二、本地伪分布式安装
我使用的是HBase-0.94.7 http://pan.baidu.com/s/1nvvlBx3
1. 解压
解压到/usr/local/hbase-0.94.7-securitu目录,我的安装包在桌面。
命令:sudo tar –zxvf /home/zhong/Desktop/ hbase-0.94.7-security.tar.gz –C /usr/local
2. 设置环境变量
命令:sudo vim /etc/profile
增加:export HBASE_HOME=/usr/local/hbase-0.94.7-security
export PATH=$HBASE_HOME/bin:$PATH
完成后执行命令:source /etc/profile 使环境变量生效
3. 修改HBASE_HOME/conf目录下hbase-env.sh文件
修改:exportJAVA_HOME=/usr/lib/java/jdk1.7.0_80
export HBASE_MANAGES_ZK=true #告诉HBase使用它自己的zookeeper实例,分布式模式下需要设置为false
4. 修改HBASE_HOME/conf目录下hbase-site.xml文件
<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.zookeeper.quorum</name> <value>localhost</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
5. 启动
HBase是建立在HadoopHDFS之上的,因此在启动HBase之前要确保已经启动了Hadoop
在HBASE_HOME/bin目录下执行命令:start-hbase.sh
用命令:jps 检验会发现多了三个java进程:HMaster、HRegionServer以及HQuorumPeer。
也可以通过Web接口访问:http://localhost:60010
三、完全分布式安装
本次是基于上面伪分布式模式的基础上进行完全分布式安装的。
1. 修改HBASE_HOME/conf/hbase-env.sh文件
修改:exportHBASE_MANAGES_ZK=false #不使用HBase自带的zookeeper实例
2. 修改HBASE_HOME/conf/ regionservers文件
将原来的内容修改如下图,其中Slave1,Slave2是我的两个从节点
3.修改HBASE_HOME/conf/hbase-site.xml文件
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://Master:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>Master,Slave1,Slave2</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
4.在其他两个从节点上做同样配置,可使用scp命令
5.启动
注意先后顺序:先启动Hadoop,再启动ZooKeeper,再启动Hbase
关闭顺序:HbaseàZooKeepeàHadoop
HBase启动命令:start-hbase.sh
HBase关闭命令:stop-hbase.sh
通过Web访问Hbase接口:Master:60010
6. 使用
在HBASE_HOME/bin 目录下执行命令:hbaseshell 可以进入HBase的shell窗口