Overview
HBase是Hadoop数据库,是一个分布式,可扩展的大数据存储。当您需要对大数据进行随机、实时读/写访问时,请使用HBase。该项目的目标是托管非常大的表 - 数十亿行X百万列 - 在商品硬件集群上。HBase是一个开源的,分布式的,版本化的非关系数据库,模仿Google的Bigtable:结构化数据分布式存储系统。正如Bigtable利用Google文件系统提供的分布式数据存储一样,HBase在Hadoop和HDFS之上提供类似Bigtable的功能。
HBase****适用于海量数据的准实时查询。
**HBase****的特点:**海量数据,列式存储,多版本,稀疏性,扩展新(底层基于HDFS),高可靠性,高性能(底层的LSM数据结构和Rowkey有序排列等架构上的独特设计,使得Hbase具有非常高的写入性能,Region切分、主键索引和缓存机制à高性能读性能)
Hbase****在hadoop2.X中的作用
Hbase是基于HDFS的一个数据存储工具,如图所示:
HBase****的架构体系:
从物理结构上讲,HBase由三种类型的服务器构成主从式架构。Region Servers为数据的读取和写入提供服务。当访问数据时,客户端直接和Region Servers通信。Region的分配,DDL (create, delete tables)操作有HBase Master进程处理。Zookeeper是HDFS的一部分,维护着一个活动的集群。
Hadoop DataNode 存储着Region Server所管理的数据。所有的HBase数据存储在HDFS的文件中。Region Server和HDfs DataNode并置在一起,这使得RegionServers所服务的数据具有数据局部性(使数据接近需要的位置)。HBase数据在写入时是本地数据,但是当Region移动时,在压实之前它不是本地数据。NameNode维护构成文件的所有物理数据块的元数据信息。
Regions
HBase表是按照rowkey范围水平划分为“Regions”.Region包含表中start key和end key之间的所有行。Region Server将Regions分配到集群的节点中,并对数据的读取和写入提供服务。单个Redion Server可服务大约1000个region。
HBase HMaster
Region分配,DDL(create, delete tables)操作由HBase Master处理。
Mater的主要职责:
协调Region Servers
启动时分配Region,还原时重新分配Region或者负载均衡
监控集群中所有RegionServer实例(监听Zookeeper的消息)
管理员方法
提供创建,删除,更新表的接口。
HBase与关系型数据库的对比:
HBase环境搭建:
修改hbase-env.sh文件:
export JAVA_HOME=/home/zengyouxuan/jdk/jdk1.8.0_191
export HBASE_MANAGES_ZK=false
修改hbase-site.xml文件:
hbase.rootdir
hdfs://hadoop000:8020
hbase.cluster.distributed
true
hbase.zookeeper.quorum
hadoop000:2181
修改regionserver文件:
将localhost 改为 hadoop000
HBase监控WEB页面的介绍:
HBase启动命令:
shell命令操作:
create ‘test’,‘info’
scan ‘test’
put ‘test’,‘0001’,‘info:username’,‘shj’
describe test:详细描述信息
disable test:禁用表
还有很多命令:count,delete,truncate,get。。。见下表
| hbase shell命令 | 描述 |
|---|---|
| alter | 修改列族(column family)模式 |
| count | 统计表中行的数量 |
| create | 创建表 |
| describe | 显示表相关的详细信息 |
| delete | 删除指定对象的值(可以为表,行,列对应的值,另外也可以指定时间戳的值) |
| deleteall | 删除指定行的所有元素值 |
| disable | 使表无效 |
| drop | 删除表 |
| enable | 使表有效 |
| exists | 测试表是否存在 |
| exit | 退出hbase shell |
| get | 获取行或单元(cell)的值 |
| incr | 增加指定表,行或列的值 |
| list | 列出hbase中存在的所有表 |
| put | 向指向的表单元添加值 |
| tools | 列出hbase所支持的工具 |
| scan | 通过对表的扫描来获取对用的值 |
| status | 返回hbase集群的状态信息 |
| shutdown | 关闭hbase集群(与exit不同) |
| truncate | 重新创建指定表 |
| version | 返回hbase版本信息 |