美文网首页我爱编程
HBase – Hadoop Database简介及伪分布式搭建

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

作者: 先生_吕 | 来源:发表于2016-12-22 16:50 被阅读96次

    【资源】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中迁移变的非常方便。

    架构.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均以二进制格式存储,用户需要自行进行类型转换。
    
    
    组成.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
    
    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-env配置.png hbase-site配置.png 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'
    
    create.png list.png put.png scan.png

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

    24710352727457924.jpg

    相关文章

      网友评论

        本文标题:HBase – Hadoop Database简介及伪分布式搭建

        本文链接:https://www.haomeiwen.com/subject/ouicvttx.html