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

架构.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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容