Hbase(Hadoop Database)是建立在Hadoop文件系统之上的分布式面向列的数据库,它的主要目的是存储非常大的表,百万行,百万列的那种。
特性
它具有如下特点(摘自官网):
线性扩展,水平扩展
严格的读写一致
自动的和可配置的表分片
RegionServers之间自动的故障转移
客户端的API使用方便
实时查询的块缓存和Bloom过滤器
可扩展的基于jruby的shell
支持导出系统的度量信息到文件中,或者到Ganglia
支持XML,Protobuf和二进制的数据传输
使用场景
场景上不需要太复杂的事务,目标只是大数据与高并发
随机读的场景
现有的关系型数据库已经无法在硬件上满足数据疯狂增长的需要,mysql中单表数据超过千万时,数据的查询速度越来越慢。而Hbase一个表支持数百亿行,上百列。
基于大数量高并发操作考虑,为了满足每天上亿级别的访问,而hbase根据rowkey进行查询的速度相当快
在我们公司的业务场景:
存储业务数据:车辆GPS信息,司机点位信息,用户操作信息,设备访问信息。。。
存储日志数据:架构监控数据(登录日志,中间件访问日志,推送日志,短信邮件发送记录。。。),业务操作日志信息
存储业务附件:UDFS系统存储图像,视频,文档等附件信息
不过在公司使用的时候,一般不使用原生的Hbase API,使用原生的API会导致访问不可监控,影响系统稳定性,以致于版本升级的不可控。
Hbase架构体系和设计模型
Zookeeper,作为分布式的协调。RegionServer也会把自己的信息写到ZooKeeper中。
HDFS是Hbase运行的底层文件系统
RegionServer,理解为数据节点,存储数据的。
Master RegionServer要实时的向Master报告信息。Master知道全局的RegionServer运行情况,可以控制RegionServer的故障转移。
Hbase安装使用
1. 确保安装了jdk,在Linux上使用自带的包管理器直接安装就好,使用二进制也是一个不错的选择,我用的是CentOS
yum install java-1.8.0-openjdk* -y
2. 下载Hbase的二进制包,下载地址位于http://mirror.bit.edu.cn/apache/hbase/hbase-1.2.8/,然后解压到系统的目录。
tar -xf hbase-1.2.8-bin.tar.gz
cd hbase-1.2.8
3. 配置hbase的环境变量,修改JAVA_HOME。注意看下自己的JAVA_HOME在什么位置
vim conf/hbase-env.sh
// 注意这个是在CentOS上的java位置
export JAVA_HOME=/etc/alternatives/java_sdk_1.8.0/
4. 配置onf/hbase-site.xml,这个是Hbase的主配置文件,你可以指定hbase和ZooKeeper数据写入的目录,当然也可以指定hbase的根目录在哪个位置。
我将hbase的目录放在hadoop用户家目录的hbase目录下。我们不用事先创建好hbase的data目录,hbase会自动帮我们创建好的,如果已经存在了data目录,hbase会将存在的目录进行迁移。
useradd -s /sbin/nologin -m hadoop
# 编辑hbase的配置文件
vim conf/hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/hadoop/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/zookeeper</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
<description>
Controls whether HBase will check for stream capabilities (hflush/hsync).
Disable this if you intend to run on LocalFileSystem, denoted by a rootdir
with the 'file://' scheme, but be mindful of the NOTE below.
WARNING: Setting this to false blinds you to potential data loss and
inconsistent system state in the event of process and/or node failures. If
HBase is complaining of an inability to use hsync or hflush it's most
likely not a false positive.
</description>
</property>
</configuration>
5. Hbase二进制包下有start-hbase脚本,可以方便的启动hbase,如果我们的配置是正确的,那么会正常启动。
./bin/start-hbase.sh
然后我们可以访问hbase的web ui: http://localhost:16010
6. 使用Hbase提供的shell命令行进行具体操作
6.1 连接Hbase
./hbase shell
6.2 查看帮助信息
help
6.3 创建一个表,必须要指定表名称和列簇名
hbase(main):003:0> create 'test', 'cf'
0 row(s) in 1.6320 seconds
=> Hbase::Table - test
6.4 列出关于你的表的信息,list 'sometable', 注意Hbase的表一定要加上单引号,不然会报错
list 'test'
6.5 查看表更为详细的信息,使用describe命令
describe 'test'
6.6. 把数据放到表中
put 'test', 'row1','cf:a','value1'
put 'test', 'row2','cf:b','value2'
put 'test', 'row3','cf:c','value3'
6.7 查看表中所有的数据
scan 'test'
6.8 获取单行的数据
get 'test','row1'
6.9 统计表中有多少行数据 count 'sometable'
6.10 重新初始化某个表 truncate 'sometable'
最后
本次关于Hbase的入门就到这里了,希望能帮助到大家. 这里主要介绍了hbase的基本特点,和其应用场景,然后以单机模式演示hbase的安装使用,其shell的用法。
注:
本文独家发布自金蝶云社区