二、HBase的介绍

1、HBase 简介:

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

(2)、HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
     另一个不同的是HBase基于列的而不是基于行的模式。

(3)、HBase的特点:
     海量存储:Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下, 能在几十到百毫秒内返回数据;

     列式存储(列族存储):列式存储其实说的是列族存储,Hbase 是根据列族来存储数据的。列族下面可以有非常多的列,
                       列族在创建表的时候就必须指定;

     极易扩展:Hbase 的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS);

     高并发:主要是在并发的情况下,Hbase 的单个IO 延迟下降并不多。能获得高并发、低延迟的服务;

     稀疏:稀疏主要是针对Hbase 列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的;
HBase架构图.png
从图中可以看出Hbase是由Client、Zookeeper、Master、HRegionServer、HDFS等几个组件组成: 
1)Client:
      Client包含了访问Hbase的接口,另外Client 还维护了对应的cache 来加速Hbase的访问,比如 cache 的.META.元数据的信息。

2)Zookeeper:
HBase通过Zookeeper来做master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。具体如下: 
通过 Zoopkeeper来保证集群中只有1个 master在运行,如果 master异常,会通过竞争机制产生新的 master提供服务;
通过 Zoopkeeper来监控RegionServer的状态,当RegionSevrer 有异常的时候,通过回调的形式通知 Master RegionServer上下线的信息;
通过 Zoopkeeper存储元数据的统一入口地址;

3)Hmaster:
master节点的主要职责如下: 
为 RegionServer分配 Region;维护整个集群的负载均衡; 维护集群的元数据信息;
发现失效的Region ,并将失效的Region分配到正常的RegionServer上;当 RegionSever失效的时候,协调对应 Hlog的拆分;

功能总结:
        1.监控RegionServer
        2.处理RegionServer故障转移
        3.处理元数据的变更
        4.处理 region的分配或转移
        5.在空闲时间进行数据的负载均衡 
        6.通过Zookeeper发布自己的位置给客户端 

4)HregionServer:
HregionServer 直接对接用户的读写请求,是真正“干活 ”的节点。它功能概括如下: 
 管理master为其分配的Region;处理来自客户端的读写请求;负责和底层HDFS的交互,存储数据到 HDFS;
 负责 Region变大以后的拆分; 负责 Storefile的合并工作 的合并工作;

功能
        1.负责存储HBase的实际数据
        2.处理分配给它的Region
        3.刷新缓存到HDFS
        4.维护Hlog
        5.执行压缩
        6.负责处理Region分片

5)HDFS:
HDFS为Hbase提供最终的底层数据存储服务,同时为HBase提供高可用(Hlog 存储在HDFS)的支持,具体功能概括如下:
 提供元数据和表的底层分布式存储服务; 
 数据多副本,保证的高可靠和高可用性;

(6)、其他组件 Write-Ahead logs:
HBase的修改记录,当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可设定)。
但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫Write-Ahead logFile的文件中,
然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。

(7)、其它组件Region:
Hbase表的分片,HBase表会根据Rowkey值被切分成不同的region存储在RegionServer中, 在一个RegionServer中可以有多个不同的region。

(8)、其它组件Store:
HFile存储在Store中,一个Store对应HBase表中的一个列族,但是一个列族被切分后可能对应多个Store。

(9)、MemStore(内存存储):
MemStore位于内存中,用来保存当前的数据操作,所以当数据保存在WAL中之后,RegionServer会在内存中存储键值对

(10)、HFile:
这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。StoreFile是以HFile的形式存储在HDFS的。

2、HBase version的选择(尽量不要选择最新发布的version,不稳定):

官网版本:http://archive.apache.org/dist/hbase/

CDH版本:http://archive.cloudera.com/cdh5/

3、HBase表结构模型:


HBase表结构模型.png

4、HBase表数据模型:


HBase表数据模型.png

5、HBase中列簇的特点:
(1)、一张表列簇不会超过5个;

(2)、每个列簇中的个数没有限制;

(3)、列只有插入数据后才会存在;

(4)、列在列簇中是有序的;

6、HBase表和关系型数据库表结构的对比:

(1)、HBase 的列可以动态增加;数据能够自动切分;可高并发读写;而关系型数据库都不可以;

(2)、但是不支持条件查询,只支持rowkey查询;但关系型数据库支持复杂查询;

7、HBase的安装说明:

(1)、JDK1.7 以上;
(2)、Hadoop-2.5.0以上;
(3)、Zookeeper-3.4.5以上;

8、HBase分布式配置(可以去官网查找):

(1)、配置hbase-env.sh文件
   export JAVA_HOME=
   export HBASE_MANAGES=false //禁用hbase自带的zk

(2)、创建data/tmp目录; 配置regionservers文件;

(3)、配置hbase-site.xml文件
配置hbase-site-xml.png

9、HBase启动命令:

hbase-daemon.sh            start-hbase.sh
hbase-daemons.sh           stop-hbase.sh

Hbase  shell

10、HBase操作命令:

(1)、通用命令:
      status: 提供HBase的状态,例如,服务器的数量。
      version: 提供正在使用HBase版本。
      table_help: 表引用命令提供帮助。
      whoami: 提供有关用户的信息。

(2)、数据定义语言 : 这些是关于HBase在表中操作的命令。
      create: 创建一个表。
      list: 列出HBase的所有表。
      disable: 禁用表。
      is_disabled: 验证表是否被禁用。
      enable: 启用一个表。
      is_enabled: 验证表是否已启用。
      describe: 提供了一个表的描述。
      alter: 改变一个表。
      exists: 验证表是否存在。
      drop: 从HBase中删除表。
      drop_all: 丢弃在命令中给出匹配“regex”的表。
      Java Admin API: 在此之前所有的上述命令,Java提供了一个通过API编程来管理实现DDL功能。在这个org.apache.hadoop.hbase.client包
                      中有HBaseAdmin和HTableDescriptor 这两个重要的类提供DDL功能。

(3)、数据操纵语言:
      put: 把指定列在指定的行中单元格的值在一个特定的表。
      get: 取行或单元格的内容。
      delete: 删除表中的单元格值。
      deleteall: 删除给定行的所有单元格。
      scan: 扫描并返回表数据。
      count: 计数并返回表中的行的数目。
      truncate: 禁用,删除和重新创建一个指定的表。
      Java client API: 在此之前所有上述命令,Java提供了一个客户端API来实现DML功能,CRUD(创建检索更新删除)操作更多的是通过编程,
                       在org.apache.hadoop.hbase.client包下。 在此包HTable 的 Put和Get是重要的类。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,930评论 2 89
  • 本文首先简单介绍了HBase,然后重点讲述了HBase的高并发和实时处理数据 、HBase数据模型、HBase物理...
    达微阅读 2,732评论 1 13
  • 如何正确的夸奖孩子? 很多父母都会疑惑,同样是遇到挫折,为什么有些孩子就能够屡败屡战、不断努力去克服困难,但有些孩...
    一枚冰儿阅读 381评论 0 0
  • 当即我和凡天三人便跟着维尔匆匆赶回骑士部,此时骑士部的内院中早已人满为患,蓝莲带着魔法部部众和一干学生会的人将骑士...
    考拉凶猛阅读 348评论 0 0
  • 关键字:170810、周四、淘淘百天之第75天、上海 之所以闲,是因为在客户这里开会太多了;忙里抽闲敲会码都会感觉幸福。
    二石兄阅读 145评论 0 0