HBase是一个分布式、面向列存储的数据库, 我们知道HBase的设计与Google的BigTable一样, HBase是在HDFS之上提供了类似Bigtable的能力。
HBase是建立在Hadoop文件系统上支持支持横向扩展的数据库, 它利用HDFS提供了容错的能力,人们可以直接或者通过HBase的存储HDFS数据。
使用HBase在HDFS读取消费/随机访问数据。 HDBase在HDFS基础上,提供了读写访问。
###HBase的常用术语
- 行健Row key: 主见是用来检索记录的主键,访问HBase table中的行。
- 列簇Column Family: Table在水平方向有一个或多个的ColumnFamily, 而一个ColumnFamily是有任意多个Column组成。
Column Family支持动态扩展, 无需预先定义Column的数量和数据类型,所有Column均以二进制的格式存储。 - 列Column
- 单元格Cell: HBase中通过row和columns确定的一个存储单元为cell。
- 版本version: 每个cell都保存同一份数据的多个版本。版本通过时间戳来索引。
HBase数据结构图:
###HBase和HDFS
HBase | HDFS |
---|---|
HBase是建立在HDFS之上的数据库。 | HDFS是适于存储大容量文件的分布式文件系统。 |
HBase提供在较大的表快速查找 | HDFS不支持快速单独记录查找。 |
它提供了数十亿条记录低延迟访问单个行记录(随机存取)。 | 它提供了高延迟批量处理;没有批处理概念。 |
HBase内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。 | 它提供的数据只能顺序访问。 |
###HBase的使用场景
- 它用来当有需要写应用程序;
- HBase适用于我们需要提供快速、随机访问的数据;
目前在Facebook、Twitter、Yahoo等都在使用HBase。
###HBase的特点
- HBase线性可扩展。
- 它具有自动故障支持。
- 它提供了一直的读取和写入。
- 它集成了Hadoop,作为源和目的地。
- 为客户端提供方便的API。
- 它提供了跨集群数据复制。
##HBase的安装教程
###官网下载
下载地址.
目前最新版本是1.3.1, 不建议大家安装alpha版本;
###解压tar,并存放到指定目录下
1 | mv hbase-1.3.1 /usr/local |
###配置环境变量
1 | sudo vi /etc/profile |
在文件中配置:
1 | export HBASE_HOME =/usr/local/hbase |
退出保存后, 执行命令
1 | source /etc/profile |
###配置相关的文件
(1)进入hbase安装目录下,编辑conf目录下的 hbase-env.sh文件
1 | cd conf |
编辑文件,在文件加入下面的环境变量配置
1 | export JAVA_HOME=/usr/lib/jvm/java-8-oracle |
(2) 在conf目录下, 配置core-site.xml
注意配置文件中的fs.defaultFS要与hadoop里core-site.xml的fs.defaultFS配置一样的IP和端口
1 | <configuration> |
###启动HBase
在启动HBase之前, 请先启动Hadoop,然后启动Zookeeper,最后启动HBase
1 | cd /usr/local/hbase/bin |
启动之后,输入jps,查看是否有对应的进程, 如图:
###启动HBase shell
####创建一个member表
1 | create 'member','member_id','address','info' |
####显示表的内容
1 | list |
####查看member表的结构
1 | describe 'member' |
####插入数据
1 | put 'member','jordy','info:age','78' |
####查询一条数据
1 | get 'member','jordy' |
####扫描获取全部内容