欢迎投稿

今日深度:

HBase,

HBase,


  1. HBase本身就是一个非关系型永利ag手机版|首页
  2. HBase在存储数据的时候也是以key-value结构来进行存储
  3. HBase基于Hadoop运行,但是Hbase的效率控制在秒的级别
  4. HBase在存储的时候基于列进行存储的 - 传统的行存储的方式,在查询特定列的时候,大部分时间花在磁盘寻址上;在实际开发中,查询数据往往不是整表查询往往是查询指定的几列,在这个时候列存储的方式的效率就明显要高一些
  5. 在HBase中,可以设计多个列族,但是一般不要超过3个
  6. 在HBase中,列族在创建表的时候就要指定,但是在添加数据的时候,可以向列族中添加不同的列
  7. HBase中的数据是稀疏的
  8. HBase本身基于HDFS进行存储,HDFS的特点是一次写入不能修改。在HBase中,如果修改数据,不是修改最原始的数据而是追加数据,在获取数据的时候,如果不指定,默认获取最新的(timestamp)数据。时间戳在HBase的数据中称之为是这个数据的版本VERSION
  9. HBase利用Zookeeper进行管理,HMaster通过Zookeeper监听HRegionServer。这个过程中,HBase自带了一个Zookeeper。如果需要配置额外的Zookeeper而不是使用自带的,那么需要禁用这个HBase中自带的Zookeeper
  10. 如果一个HBase集群中启动了多个HMaster,则会按照启动顺序,先启动的节点作为active HMaster,后启动的节点就会自动的作为HMaster的备份
  11. 当HBase启动的时候,每一个节点都会自动的在Zookeeper上来注册一个临时节,在注册临时节点的时候,注册的不是IP地址而是主机名
  12. HBase和Hive的区别
    1. HBase是非关系型永利ag手机版|首页,Hive是基于Hadoop的数仓工具
    2. Hive必须基于Hadoop;HBase可以不基于Hadoop,HBase可以脱离Hadoop存在
    3. HBase只提供了基本的CRUD的能力;Hive中提供了大量的函数允许对数据进行ETL的过程
    4. HBase存储的数据是稀疏/半结构化的,Hive存储的是结构化数据
    5. HBase针对列操作,Hive针对行操作

HBase? 物理存储

?1在HBase中,会将一个table中一个或多个行划分为一个HRegion (H锐),意味一个table可以有多个HRegion

2 每一个HRegion可以分布到不同的节点(HRegionServier)上,为了方便表的分布式存储

3 在table刚刚创建的时候,默认为1个HRegion

4 随着table的不断增大,一个HRegion中数据也越来越多,当HRegion到达一定的限度之后,HRegion会裂为均等的两个HRegion

5 HRegion在分裂完成之后,这些HRegion会转移到其他的节点保证数据分布存储

6 HBase在HRegion会考虑负载均衡

7 负载均衡由HMaster 控制

8 HRegion是分布存储的最小单位

8 HRegion不是存储的最小的单位,HRegion中包含1个和多个HSoter

9 每一个列族对应一个HStore (1个memStore和0个或者多个StoreFile(四多file)),当StoreFile落地在HDFS,称为HFile

?

Row Key:行健

hbase本质上也是一种Key-Value存储系统。Key相当于RowKey,Value相当于列族数据的集合

与nosql永利ag手机版|首页们一样,row key是用来检索记录的主键

  1. 访问hbase table中的行,只有三种方式:
    1. 通过单个row key访问
    2. 通过row key的range
    3. 全表扫描Row key行键

?

  1. (Row key)可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),在hbase内部,row key保存为字节数存储时, 数据按照Rowkey的字典序(byte order)排序存储。设计key时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)

?

列族(列簇)

  1. hbase表中的每个列,都归属与某个列族
  2. 列族是表的schema的一部分(而列不是),列族必须在使用表之前定义
  3. 列名都以列族作为前缀。例如courses:history , courses:math 都属于 courses 这个列族
  4. 访问控制、磁盘和内存的使用统计都是在列族层面进行的。实际应用中,列族上的控制权限能帮助管理不同类型的应用:允许一些应用可以添加新的基本数据、一些应用可以读取基本数据并创建继承的列族、一些应用则只允许浏览数据(甚至可能因为隐私的原因不能浏览所有数据)

基础指令:

1 ? create ‘su’,'a1','a2'

2??? put 'su','r1','s1:name'.'liu'

3?? get 'su','r1'

4? scan?? 'su'??? 或 count 'su'

?

?

HRegion

  1. 每一个Table中,将一行或者多行作为一个HRegion进行处理
  2. HRegion在存储的时候会记录这个Region所对应的startRowKey和stopRowKey
  3. 一个HRegion由1个或者多个HStore构成,每一个HStore包含1个memStore以及0个或者多个StoreFile
  4. 每一个HRegion都会分布在不同的节点上(HRegionServer)
  5. 每一个HRegionServer按照HBase的设计大概能管理1000个HRegion

HMaster

  1. HMaster是HBase中的管理节点
  2. HMaster不存在单点故障,因为可以启动多个HMaster,按照启动顺序,先启动的HMaster会是active(活动)状态,所有的请求都是走active HMaster;后启动的节点会是back-up(备份)状态
  3. active HMaster在启动之后会自动的在Zookeeper上注册一个临时节点/hbase/master,back-up HMaster在启动之后会自动的在Zookeeper上注册一个临时节点/hbase/backup-masters
  4. Zookeeper通过心跳机制监控HMaster(HMaster定期向Zookeeper来发信号,维持这个临时节点,心跳时间默认是180s)
  5. 如果active HMaster宕机,则Zookeeper自动触发选举过程,从backup-masters选出一个节点成为active HMaster
  6. active HMaster和backup HMaster之间要做到热备份 - backup HMaster会通过监控/hbase/master来实现热备,热备是通过RPC进行的

?

  1. 功能:
    1. 管理HRegionServer:负责HRegion分配到哪一个节点上
    2. 管理元数据/表结构(增加表、删除表) - 表名、列族名、表和列族之间的关系等称之为元数据

Zookeeper在HBase中的作用

  1. 在HBase中作为协调者来使用的
  2. 当HBase启动的时候,HMaster和HRegionServer都会到Zookeeper来注册一个临时节点 - HMaster注册的节点是/hbase/master,HRegionServer注册的节点是/hbase/rs/XXX
  3. HMaster并不是直接监控HRegionServer,而是通过Zookeeper监控。

?

HRegionServer

  1. 用于存储和管理HRegion,每一个HRegionServer都可以管理多个HRegion
  2. 在实际使用中,一般会将HRegionServer和DataNode部署在同一个节点上,以满足数据本地化策略
  3. HRegionServer由WAL、Block Cache以及HRegion构成

?

www.htsjk.Com true http://www.htsjk.com/hbase/37706.html NewsArticle HBase, HBase本身就是一个非关系型永利ag手机版|首页 HBase在存储数据的时候也是以key-value结构来进行存储 HBase基于Hadoop运行,但是Hbase的效率控制在秒的级别 HBase在存储的时候基于列进行存储的 -...
相关文章
    暂无相关文章
评论暂时关闭