设为首页 加入收藏

TOP

二、HBase深入使用(1)—HBase数据存储
2018-11-13 15:25:48 】 浏览:36
Tags:HBase 深入 使用 数据 存储
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/accptanggang/article/details/72478559

一、HBase存储概述

HBase架构图

zkCli.sh

ls /

ls /ls/hbase

get /ls/hbase/meta-region-server

=================================

user-table

user

regions(startkey,endkey)

user,region-01,regionserver-03

HBase新版本中,有类似于RDBMSDataBase的概念—————命名空间。

用户自定义的表,默认情况下命名空间为default

系统自带的元数据表的命名空间为hbase

list_namespace_tables 'hbase'

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

user-table用户表,表中有很多的region,其中region的信息保存在hbase:meta(RegionServer)

客户端不管是读数据,还是写数据,都要首先连接Zookeeper,从Zookeeper上得到hbase:meta表的region所在的RegionServer

RegionServer是用来管理Region的。

client -> zookeeper -> hbase:meta(RegionServer) -> uesr-table(RegionServer) -> put/get/scan

get /ls/hbase/meta-region-server

===========================================

HMaster也要去连接Zookeeper,它需要知道哪些RegionServer是活着的。

ls /hbase/rs(regionserver)

get /hbase/rs

表中有几个列簇,就有几个Store

Store中有一个MemStore,有多个StoreFile

MemStore是对应于内存的

StoreFile是实际的文件,是对HFile的封装,其中H表示HDFS

==============================================================

二、HBase数据存储

HBase中的所有数据文件都存储在Hadoop HDFS文件系统上,主要包括上述提出的两种文件类型:

* HFileHBaseKeyValue数据的存储格式,HFileHadoop的二进制格式文件,

实际上StoreFile就是对HFile做了轻量级包装,进行数据的存储。

* HLogFileHBaseWALWrite Ahead Log)的存储格式,物理上是HadoopSequence File

1HRegion Server

* HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了table中的一个region

HRegion中由多个HStore组成。每个HStore对应了Table中的一个column family的存储,可以看出每个column family其实就是一个集中的存储单元,因此最好将具备共同特性的column放在一个column family中,这样最高效。

* HStore存储是HBase存储的核心,由两部分组成,一部分是MemStore,一部分是StoreFileMemStoreSorted Memory Buffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile)。

2Memstore & StoreFile

* Client写入->存入MemStore,一直到MemStore-> Flush成一个StoreFile,直至增长到一定阀值-> 触 发Compact合并操作-> 多个StoreFile Compact后,逐步形成越来越大的StoreFile ->单个StoreFile大小超过一定阀值后,触发Split操作,把当前Region Split2Region,当前Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer上,使得原先1Region的压力得以分流到2Region上。

* HBase只是增加数据,所有的更新和删除操作,都是在Compact阶段做的,所以,用户写操作只需要进入到内存即可立即返回,从而保证I/O高性能。

3HLog文件结构

* WAL意为Write ahead log,类似于MySQL中的binlog,用来做灾难恢复。

* Hlog记录数据的所有变更,一旦数据修改,就可以从log中进行恢复。每个HRegionServer维护一个HLog

而不是每个HRegion一个。

这样不同Region(来自不同table)的日志会混在一起,

这样做的目的是不断追加单个文件,相对于同时写多个文件而言,

可以减少磁盘寻址次数,因此可以提高对table的写性能。

带来的麻烦是,如果一台HRegionServer下线,为了恢复其上的region

需要将HRegionServer上的log进行拆分,然后分发到其它HRegionServer上进行恢复。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hive整合HBase完整笔记(亲测) 下一篇建立HBase的集群和HDInsight在Had..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目