一、HBase概述
基于Hadoop数据库工具
来源于Google三篇论文之一 BIGTABLE, APACHE做了开源的实现就是 HBASE 技术
是一种 NoSQL的 非关系型数据库 不符合关系型数据库的范式
适合存储 半结构化 非结构化的数据
适合存储稀疏的数据 空的数据不占用空间
面向列(族)进行存储
提供实时的增删改查的能力 是一种真正的数据库产品
可以存储海量数据 性能非常优良 可以实现 上亿条记录的毫秒级别的查询
但是不支持严格的事务控制 只能在行级别保证事务
是一个高可靠 高性能 面向列 可伸缩的分布式存储系统 利用hbase技术可以在廉价的PC上搭建起大规模结构化存储集群。
HBase利用HadoopHDFS作为其文件存储系统,利用Hadoop的MapReduce来处理HBase中的海量数据,利用Zookeeper作为协调工具。
二、HBase的逻辑结构
HBase使用表来存储数据 但是表的结构和特点和传统的关系型数据库有非常大的区别
行键 - RowKey
就相当于是HBase表中的主键, HBase中的所有的表都要有行键
HBase中的所有的数据都要按照行键的字典顺序排序后存储
对HBase表中数据的查询,只有三种方式:
根据指定行键查询
根据指定的行键范围查询
全表扫描查询
列族(簇) - ColumnFamily
是HBase表中垂直方向保存数据的结构,列族是HBase表的元数据的一部分,需要在定义HBase表时就指定好表具有哪
些个列族,列族中可以包含一个或多个列
列 - Column
HBase表中列族里可以包含一个或多个列,列并不是HBase表的元数据的一部分,不需要在创建表时预先定义,而是可
以在后续使用表时随时为表的列族动态的增加列。
单元格和时间戳 - Cell TimeStamp
在HBase表中,水平方向的行 和 垂直方向的列 交汇 就得到了HBase中的一个存储单元,而在这个存储单元中,可以存
储数据,并且可以保存数据的多个版本,这些个版本之间通过时间戳来进行区分。
所以在HBase中 可以通过 行键 列族 列 时间戳 来确定一个最小的存储数据的单元,这个单元就称之为单元格 Cell。
单元格中的数据都以二进制形式存储,没有数据类型的区别。
三、HBase的安装配置
-
安装前提
JDK Hadoop Zookeeper -
下载安装包
访问HBase官网下载安装包
http://hbase.apache.org/
要注意下载的版本必须和 JDK Hadoop的版本相匹配 -
HBase安装 - 单机模式
a. 前提条件,安装jdk 和 hadoop,并配置了环境变量
b. 解压安装包
tar -zxvf xxxxx.tar.gz
c. 修改HBase的配置文件conf/hbase-site.xml
这个选项指定了Hbase底层存储数据的磁盘位置,如果不配置默认在/tmp/hbase-[username],而/tmp是linux的临时
目录,其中的数据随时有可能被清空,所以必须修改
hbase.rootdir
file:////hbase
hbase.rootdir:指定底层存储位置
d.在单机模式下,此路径配置为磁盘路径, HBase将会基于普通的磁盘文件来进行工作,也即不使用HDFS作为底层存
储,优点是方便,缺点是底层数据不是分布式存储,性能和可靠性没有保证,主要用作开发测试,不应用在生产环境
下。 -
HBase安装 - 伪分布式
a. 前提条件,安装jdk 和 hadoop,并配置了环境变量
b. 解压安装包
tar -zxvf xxxxx.tar.gz
c. 修改conf/hbase-env.sh修改JAVA_HOME
export JAVA_HOME=xxxx
d. 修改hbase-site