Hbase入门教程
金蝶云社区-艾贺521
艾贺521
19人赞赏了该文章 867次浏览 未经作者许可,禁止转载编辑于2018年11月26日 21:44:59

Hbase(Hadoop Database)是建立在Hadoop文件系统之上的分布式面向列的数据库,它的主要目的是存储非常大的表,百万行,百万列的那种。

特性

它具有如下特点(摘自官网):

  • 线性扩展,水平扩展

  • 严格的读写一致

  • 自动的和可配置的表分片

  • RegionServers之间自动的故障转移

  • 客户端的API使用方便

  • 实时查询的块缓存和Bloom过滤器

  • 可扩展的基于jruby的shell

  • 支持导出系统的度量信息到文件中,或者到Ganglia

  • 支持XML,Protobuf和二进制的数据传输

使用场景

  • 场景上不需要太复杂的事务,目标只是大数据与高并发

  • 随机读的场景

  • 现有的关系型数据库已经无法在硬件上满足数据疯狂增长的需要,mysql中单表数据超过千万时,数据的查询速度越来越慢。而Hbase一个表支持数百亿行,上百列。

  • 基于大数量高并发操作考虑,为了满足每天上亿级别的访问,而hbase根据rowkey进行查询的速度相当快

在我们公司的业务场景:

  • 存储业务数据:车辆GPS信息,司机点位信息,用户操作信息,设备访问信息。。。

  • 存储日志数据:架构监控数据(登录日志,中间件访问日志,推送日志,短信邮件发送记录。。。),业务操作日志信息

  • 存储业务附件:UDFS系统存储图像,视频,文档等附件信息

不过在公司使用的时候,一般不使用原生的Hbase API,使用原生的API会导致访问不可监控,影响系统稳定性,以致于版本升级的不可控。

Hbase架构体系和设计模型

image.png

  • 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

image.png


6.2 查看帮助信息

help

image.png


6.3 创建一个表,必须要指定表名称和列簇名

hbase(main):003:0> create 'test', 'cf'

0 row(s) in 1.6320 seconds

=> Hbase::Table - test


image.png

6.4 列出关于你的表的信息,list 'sometable', 注意Hbase的表一定要加上单引号,不然会报错

list 'test'

image.png

6.5 查看表更为详细的信息,使用describe命令

describe 'test'

image.png

6.6. 把数据放到表中

put 'test', 'row1','cf:a','value1'

put 'test', 'row2','cf:b','value2'

put 'test', 'row3','cf:c','value3'



6.7 查看表中所有的数据

scan 'test'


image.png


6.8 获取单行的数据

get 'test','row1'

image.png


6.9 统计表中有多少行数据 count 'sometable'

6.10 重新初始化某个表 truncate 'sometable'

image.png



最后

本次关于Hbase的入门就到这里了,希望能帮助到大家.  这里主要介绍了hbase的基本特点,和其应用场景,然后以单机模式演示hbase的安装使用,其shell的用法。



注:

本文独家发布自金蝶云社区


赞 19