欢迎投稿

今日深度:

HBase,

HBase,


HBase架构:

关键词: client,zookeeper,hmaster,hregoinserver,hlog,hregoin,store,memstore,storefile,hfile

Client

包含访问HBase的接口,并维护cache来加快对HBase的访问,比如region的位置信息

hmaster:(hbase的老大)

  为regoinserver分配region
  负责region的重新分配
  hdfs的垃圾文件回收

hregoinserver:(hbase的小弟)

负责维护hmaster分配给他的region(管理regoin)
处理client对region的IO请求并和hdfs进行交互

Zookeeper作用

通过选举,保证任何时候,集群中只有一个master,Master与RegionServers 启动时会向ZooKeeper注册

存储所有Region的寻址入口

实时监控Region server的上线和下线信息。并实时通知给HMaster

存储HBase的schema和table元数据

默认情况下,HBase 管理ZooKeeper 实例,比如, 启动或者停止ZooKeeper

zookeeper的引入使得Master不再是单点故障

HBase的安装

1.解压并配置环境变量
2.配置regionserver
配置backup-masters
配置hbase-site.xml
配置hbase-env.sh
export HBASE_MANAGES_ZK = false

分发:
 scp -r hbase-1.2.1 root@hadoop02:$PWD

启动zk
启动hdfs
启动hbase

hbase shell

创建表:

create 'ns1:t2' ,'base_info' ,'extra_info'

查看表定义:

desc 'ns1:t1'

插入数据:

put 'ns1:t1','rk0001','f1:name','zhangsan'

查询所有数据

scan 't1'

查询某一行:

get 't1' , 'rk0001'

删除数据(指定要删除的列)

delete 't1' . 'rk0001','f1:age'

删除表:

drop 't1' 注意删除表之前要先禁用表  disable 't1'

Hbase预写


该机制用于数据的容错和恢复:

HLog是一个实现Write Ahead Log的类,在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中,
HLog文件定期会滚动出新的,并删除旧的文件 (已持久化到StoreFile中的数   据)。当HRegionServer意外终止
HMaster会通过Zookeeper感知到,HMaster首先会处理遗留的 HLog文件,将其中不同Region的Log数据进行拆分,
分别放到相应region的目录下,然后再将失效的 region重新分配,领取到这region的HRegionServer在Load Region的
过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数
据恢复

HBase读写流程

写过程:

三步:flush,compact,split
先往WAL写,HLog用于灾难恢复往memstore(热数据)写,memstore达到阈值,开始溢写到HDFS,memstore配置:默认
达到128M开始溢写,自动flush

       <property>
      <name>hbase.hregion.memstore.flush.size</name>
      <value>134217728</value>
    </property>

flush:

生成storefile后,hdfs上才会看到文件

compact:

溢写生成很多的storefile,合并storefile
minor_compation:最早生成的几个storefile会被合并,这一步不会对标记的删除和过期的数据进行处理,经常发生,
数据量较小,占用资源不多
major_compaction:  默认7天执行一次
设置:
       <property>
      <name>hbase.hregion.majorcompaction</name>
      <value>604800000</value>
    </property>

compact的危害:

   消耗大量的资源,对hbase的性能产生影响
  -》会导致hbase的应用阻塞
  企业中一般关闭自动触发,使用手动触发 major_compact

操作:

major_compact 'S3'

效果:

   hdfs上面的文件合并

split:

 配置split阈值

  <property>
    <name>hbase.hregion.max.filesize</name>
    <value>10737418240</value>
  </property>

读流程:

1.通过zk来获取root表在哪个节点上,然后进一步通过-root表和-meta表来获取最终的位置信息
2.memstore和storefile中找文件

root表:包含META表所在的region列表该表只会有一个region,zookeeper中记录了root表的location
META表:

包含所有用户空间region列表,以及regionserver的服务器地址

寻找regionserver

  zookeeper -> root(单Region) ->META ->用户表

HBase预分区技术:

hbase默认建表时只有一个region,这个region的rowkey是没有边界的,在写入时,所有的数据会写入这个默认的region
随着数据量不断增加,region会split,分为2个region,会产生两个问题
1.数据会往一个region上写,会有热点问题
2.region split会消耗集群IO资源,

预分区技术:提前创建多个region,并确定每个region的起始和终止

HBase使用场景

大数据量存储,大数据量高并发操作

需要对数据随机读写操作

读写访问均是非常简单的操作

www.htsjk.Com true http://www.htsjk.com/hbase/37249.html NewsArticle HBase, HBase架构: 关键词: client,zookeeper,hmaster,hregoinserver,hlog,hregoin,store,memstore,storefile,hfile Client 包含访问HBase的接口,并维护cache来加快对HBase的访问,比如region的位置信息 hmaster:(hbase的老...
相关文章
    暂无相关文章
评论暂时关闭