HBase – Hadoop Database简介及伪分布式搭建

【资源】hbase中文文档
http://abloz.com/hbase/book.html

【简介】
(1):HBase是一个分布式的、面向列的开源数据库,一个结构化数据的[分布式存储系统]”。

(2):HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

(3):HBase利用Hadoop HDFS作为其文件存储系统;HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;HBase利用Zookeeper作为协同服务

(4):HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。

(5):此外,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。

《HBase – Hadoop Database简介及伪分布式搭建》 架构.png

【优缺点】
Hbase的优点:
1 列的可以动态增加,并且列为空就不存储数据,节省存储空间.
2 Hbase自动切分数据,使得数据存储自动具有水平scalability.
3 Hbase可以提供高并发读写操作的支持

Hbase的缺点:
1 不能支持条件查询,只支持按照Row key来查询.
2 暂时不能支持Master server的故障切换,当Master宕机后,整个存储系统就会挂掉.

【访问接口】

  1. Native Java API,最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据
  2. HBase Shell,HBase的命令行工具,最简单的接口,适合HBase管理使用
  3. Thrift Gateway,利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问HBase表数据
  4. REST Gateway,支持REST 风格的Http API访问HBase, 解除了语言限制
  5. Pig,可以使用Pig Latin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapReduce Job来处理HBase表数据,适合做数据统计
  6. Hive,当前Hive的Release版本尚没有加入对HBase的支持,但在下一个版本Hive 0.7.0中将会支持HBase,可以使用类似SQL语言来访问HBase

【数据模型】
HBase不是一个关系型数据库,它需要不同的方法定义你的数据模型,HBase实际上定义了一个四维数据模型,下面就是每一维度的定义:

Table & Column Family

    1:Row Key: 行键,Table的主键,Table中的记录默认按照Row Key升序排序

    2:Timestamp:时间戳,每次数据操作对应的时间戳,可以看作是数据的version number

    3:Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。

《HBase – Hadoop Database简介及伪分布式搭建》 组成.png

Table & Region
    当Table随着记录数不断增加而变大后,会逐渐分裂成多份splits,成为regions.
    一个region由[startkey,endkey)表示,不同的region会被Master分配给相应的RegionServer进行管理:

-ROOT- && .META. Table
HBase中有两张特殊的Table,-ROOT-和.META.
    .META.:记录了用户表的Region信息,.META.可以有多个regoin
    -ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region

《HBase – Hadoop Database简介及伪分布式搭建》 2016-12-22_112517.png

【其他】

1>MapReduce on HBase
    在HBase系统上运行批处理运算,最方便和实用的模型依然是MapReduce
    HBase Table和Region的关系,比较类似HDFS File和Block的关系,HBase提供了配套的TableInputFormat和TableOutputFormat API
   
2>HBase系统架构
    ClientHBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信
    对于管理类操作,Client与HMaster进行RPC;
    对于数据读写类操作,Client与HRegionServer进行RPC

3>Zookeeper
    Zookeeper中除了存储了-ROOT-表的地址和HMaster的地址,HRegionServer也会把自己以Ephemeral方式注册到Zookeeper中,
    使得HMaster可以随时感知到各个HRegionServer的健康状态。此外,Zookeeper也避免了HMaster的单点问题

4>HMaster
    HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行
    HMaster在功能上主要负责Table和Region的管理工作:

        1. 管理用户对Table的增、删、改、查操作
        2. 管理HRegionServer的负载均衡,调整Region分布
        3. 在Region Split后,负责新Region的分配
        4. 在HRegionServer停机后,负责失效HRegionServer 上的Regions迁移

5>HRegionServer
    HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。

【存储格式】

HBase中的所有数据文件都存储在Hadoop HDFS文件系统上,主要包括上述提出的两种文件类型:
    1. HFile, HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装
    2. HLog File,HBase中WAL(Write Ahead Log) 的存储格式,物理上是Hadoop的Sequence File

HFile:
    首先HFile文件是不定长的,长度固定的只有其中的两块:Trailer和FileInfo。
    Data Block是HBase I/O的基本单元,为了提高效率,HRegionServer中有基于LRU的Block Cache机制
HLogFile:
    HLog文件就是一个普通的Hadoop Sequence File,Sequence File 的Key是HLogKey对象,HLogKey中记录了写入数据的归属信息

【伪分布式搭建】

1:上传并解压tar文件

tar -xzvf hbase-0.96.tar.gz

cp -r /usr/local

2:修改配置文件(/conf/hbase-env.sh、/conf/hbase-site.xml)
    hbase-env.sh中配置JAVA_HOME
        export=/usr/local/java

    hbase-site.xml中配置hbase的数据存储地址
        <configuration>
            <property>
                <name>hbase.rootdir</name>
                <value>file:/usr/local/hbase-0.96/hbData</value>
            </property>
        </configuration>

   3:启动
    ./ start-hbase.sh    

《HBase – Hadoop Database简介及伪分布式搭建》 hbase-env配置.png
《HBase – Hadoop Database简介及伪分布式搭建》 hbase-site配置.png
《HBase – Hadoop Database简介及伪分布式搭建》 2016-12-22_124420.png

【hbase-shell简单操作】

启动之后:
./hbase
./hbase shell 进入shell操作界面

help   查看帮助
     帮助内容主要看
        dml(数据操纵语言 [ SELECT、UPDATE、INSERT、DELETE]) 、
        ddl(数据定义语言)[ CREATE、ALTER、DROP]


例如要查看ddl中的建表语句create的帮助
        help  'create'
        help  'put'
        ... ...

【实例操作】

1:在hbase中新建一张people表,表有两个列族(info,data)
        create 'people' , {NAME => 'info',VERSIONS => 3},{NAME => 'data' , VERSIONS => 1}
2:查看所有表
        list
3:查看表结构
        describe 'people'
4:添加数据(给info列族)
        put 'people','rk0001','info:name','xiaoqiang'
5:查看数据
       sacn 'people'

《HBase – Hadoop Database简介及伪分布式搭建》 create.png
《HBase – Hadoop Database简介及伪分布式搭建》 list.png
《HBase – Hadoop Database简介及伪分布式搭建》 put.png
《HBase – Hadoop Database简介及伪分布式搭建》 scan.png

同上表对应的数据库结构简图

《HBase – Hadoop Database简介及伪分布式搭建》 24710352727457924.jpg

    原文作者:先生_吕
    原文地址: https://www.jianshu.com/p/cc4ffebb54fe
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞