HBase之功能细节

Spark写入数据到Hbase(hdfs bulkload方式) hbase同步数据到hdfs程序设计思路基于spark数据处理引擎 阅读详情

1.Region定位

在Google的BigTable体系中,tablet的存储地址通过3层目录结构来定位的,如图所示:

注:tablet等同与HBase中的Region


图释说明:

(1)METADATATable

METADATATable是系统预定义的Table,当用户自定义表格被拆分成多个tablet之后,METADATA Table用来存储这些tablet的地址,在目录层级中处于第3层

(2)Root tablet

METADATA表格在分布式存储过程中也会被拆分成多个tablet,其中第一个tablet比较特殊,用来存储其他tablet的地址,称之为Roottablet,在目录层级中处于第2层

(3)Chunbby file

用来存储Roottablet的地址,在目录结构中处于顶层

这样,客户端可通过Chubby file遍历到任何tablet的地址

在HBase中:

Region的概念等同于tablet

.META.表格等同于METADATATable

而-ROOT-表格等同于Chunbby file

这样,客户端可通过-ROOT- Table遍历到任何Region的地址,并把这些地址在本地进行缓存,以加快下次查询效率

2.Region分配

在HBase中,MasterServer负责将Region分配给RegionServer

首先,看一下BigTable中tablet如何分配:

当master机器启动的时候,它会处理如下事情:

(1)首先在Chunbby中获取masterlock,在分布式部署中,系统中只能有一个master处于运行状态,当其获得master锁之后,其他的master机器将会进入等待状态

(2)master会扫描Chunbby目录,以获取处于运行状态的table server(RegionServer)

(3)master会和每一台tabletserver进行通信,来记录哪些tablet已经成功分配

(4)master会扫描METADATA表格,如果发现有tablet不在已分配记录中,则将其分配到合适的tablet server

在HBase中,是通过如下API来完成Region的分配过程:

(1)Master在启动的时候,会去调用AssignmentManager类

(2)AssignmentManager通过查找.META.表格来获取Region信息

(3)如果Region尚未分配,则调用LoadBalancerFactory将其分配,默认的分配器(DefaultLoadBalancer)会将该Region分配给一个随机的RegionServer

(4)更新.META.表格信息

3.数据存储

在HDFS中,HBase的数据存储呈如下目录结构:

<hbase>

           |__<table>

                        |__<region>

                                   |__<columnFamily>

                                                         |__<storeFile>

StoreFile是基于Google的SSTable来实现的,每个SSTable相当于一个持久存储的、多维的、可序列化Map,Map的key和value都是可解释型字符数组,可从中提炼出具体的rowKey、timestamp、columnKey和columnValue等信息。

在物理存储上SSTable由多个Block块组成,SSTable记录了每个Block快的索引位置,并且在被访问的时候将这些块索引加载到内存,以便系统快速定位Block块所在磁盘位置。

4.Region Serving

在Google的BigTable体系中,tablet会持久化存储到GFS文件系统中,如图:

图释说明:

(1)当有写操作到达时,系统首先会将信息写入到tablet log,然后把所提交的数据存储在memtable上,这样,tablet log就记录了每次写操作的日志信息以及操作的数据信息,当需要执行undo/redo操作式,可通过遍历查找该tablet log来实现撤销/恢复的功能。

写操作提交之后,数据并没有持久化存储到本地硬盘上,而是放到了memtable里,memtable是存储在内存当中的,当其大小达到一定上限之后,才持久化存储到SSTable File中去,随后进行数据的压缩处理(参考5-数据压缩)

(2)因为memtable也存储了相关的数据信息,而且是写操作提交后的最新信息,所以查询操作的数据来源有两方面,一方面是SSTable Files,另一方面是memtable。

(3)tablet恢复

当tablet数据需要恢复到历史版本时,tablet server首先会查询METADATA表格,从中获取该tablet的元数据信息,包括:

        存储该tablet的SSTable文件

        Tablet的恢复点(存储在tabletlog中)

随后,tablet server会把要恢复的相关记录加载到内存,根据tablet log所记录的操作日志来重新构建memtable

5.数据压缩

数据压缩主要有3中方式,分别是:

(1)Minor compaction:

当memtable的大小达到一定上限之后便会被系统冻结。此时,一个新的memtable将会创建,而被冻结的memtable将会持久化储存到SSTable文件中去。

(2)Merging compaction:

每一个minor compaction都会生成一个SSTable文件,当minor compaction操作较多时, SSTable文件将会包含很多实体的历史信息,造成数据冗余,解决办法是系统会定期执行merging compaction,将相关SSTable存储的实体进行合并,以保证实体信息处于最新版本,为查询提供方便。

(3)Major compaction:

将所有的SSTable合并成一个SSTable称之为major compaction,Major compaction通常用来回收逻辑上已被删除的数据,以节省磁盘空间。
爬虫实战:抖音视频搜索数据爬虫开发实战(附完整Python源码) 【代码】抖音视频搜索数据爬虫开发实战(附完整Python源码) 阅读详情

相关推荐

【AUTOSAR-RTE】-1-聊一聊RTE(Run-Time Environment)

RTE(Run-Time Environment)是AUTOSAR ECU架构的核心。

「汽车电子助手」的博客 6441

HBase 1

HBase1、 HBase基本介绍2、HBase与Hadoop的关系3、RDBMS与HBase的对比4、HBase特征简要1、自动故障处理和负载均衡2、自动分区3、集成Hadoop/HDFS4、实时随机大数据访问5、MapReduce6、Java API7、横向扩展8、列存储9、HBase Shell 1、 HBase基本介绍 简介 hbase是bigtable的开源java版本。是建立在hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写nosql的数据库系统。 它介于nosql和RDBMS之间,

weixin_44853953的博客 375

实验三:熟悉常用的HBase操作

A.3实验三:熟悉常用的HBase操作 本实验对应第5章的内容。 A.3.1 实验目的 (1)理解HBase在Hadoop体系结构中的角色。(2)熟练使用HBase操作常用的 Shell命令。(3)熟悉HBase操作常用的 Java API。 A.3.2 实验平台 (1)操作系统:Linux。 (2)Hadoop 版本:2.7.1或以上版本。(3)HBase版本:1.1.2或以上版本。(4) JDK 版本:1.7或以上版本。(5) Java IDE:Eclipse。

Hbase简介

1、HBase是一个高可靠性、高性能、面向列(列族存储)、可伸缩的分布式存储系统。 HBase利用Hadoop HDFS作为其文件存储系统,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据,HBase利用Zookeeper作为作为协同服务。 2、主要特点 列式存储 这里的列式存储其实说的是列族(ColumnFamily)存储Hbase是根据列族来存储数据的。...

qq_30122883的博客 664

大数据技术原理与应用实验2——熟悉常用的Hbase操作

编程实现以下指定功能,并用Hadoop提供的HBase Shell命令完成相同任务: (1) 列出HBase所有的表的相关信息,例如表名; (2) 在终端打印出指定的表的所有记录数据; (3) 向已经创建好的表添加和删除指定的列族或列; (4) 清空指定的表的所有记录数据; (5) 统计表的行数。

m0_52435951的博客 1万+

大数据编程实验二:熟悉常用的HDFS操作

实验目的1、理解HDFS在Hadoop体系结构中的角色2、熟悉使用HDFS操作常用的Shell命令3、熟悉HDFS操作常用的Java API实验平台1、操作系统:Windows2、Hadoop版本:3.1.33、JDK版本:1.8。

weixin_60530224的博客 2万+

HBase功能细节

1.Region定位 在Google的BigTable体系中,tablet的存储地址通过3层目录结构来定位的,如图所示: 注:tablet等同与HBase中的Region 图释说明: (1)METADATATable METADATATable是系统预定义的Table,当用户自定义表格被拆分成多个tablet之后,METADATA Table用来存

我要的飞翔的专栏 485

hbase的coprocessor使用

1.起因(Why HBase  Coprocessor) HBase作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执行求和、计数、排序等操作。比如,在旧版本的(计数据表的总行数,需要使用Counter方法,执行一次MapReduce Job才能得到。虽然HBase在数据存储层中集成了MapReduce,能够有效用于数据表的分布式计算。然而在很多情况下,做一些简单的

Hadoop、HBase、ElasticSearch、Storm、Kafka、Spark 8894

Hbase学习日记:四、Hbase架构

Hbase架构

Yal_insist的博客 882

Hbase 技术细节笔记(上)

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:张秀云  前言 最近在跟进Hbase的相关工作,由于之前对Hbase并不怎么了解,因此系统地学习了下Hbase,为了加深对Hbase的理解,对相关知识点做了笔记,并在组内进行了Hbase相关技术的分享,由于Hbase涵盖的内容比较多,因此计划分享2期,下面就是针对第一期Hbase技术分享整体而成,第一期的主要内容如下: 一、H...

weixin_33971205的博客 109

HBase与BigTable的比较(翻译)

原文链接: http://www.spnguru.com/?p=165这是对HBase vs. BigTable Comparison一篇翻译,网上很多blog都转载了,虽然是2009年的文章,现在看起来还是有价值的,所以这里再次转载一下。————————————– 毫无理由的分

朝着梦想 渐行前进 2248

HBase 面试题(一)

大数据面试题之HBase面试题

大数据流浪法师的学习笔记与分享 642

HBase原理

讨论QQ:1586558083目录系统架构物理存储整体的物理结构StoreFile 和 HFile 结构MemStore 和 StoreFileHbase WAL HLog预写Region 寻址机制老的 Region 寻址方式新的 Region 寻址方式 读写过程 读请求过程 写请求过程RegionServer 工作机制Region 分配RegionServ...

empyan的博客 170

python hbase_通过Python操作hbase api

#coding=utf-8#Author: ruin"""discrible:"""from thrift.transport importTSocketfrom thrift.protocol importTBinaryProtocolfrom thrift.transport importTTransportfrom hbase importHbaseimportstruct#Method f...

weixin_39922749的博客 182

Hbase的API

package cn.yc.com.base.data; /** * * ClassName: RecordBean * @Description: 实时访客Hbase表映射 * @author 余辉 * @date 2015-8-18 */ public class RecordBean { private String rowkey;

辉哥大数据 1329

HBase vs. BigTable Comparison - HBase对比BigTable

HBase is an open-source implementation of the Google BigTable architecture. That part is fairly easy to understand and grasp. What I personally feel is a bit more difficult is to understand how muc

技术笔记本 1873

HBase的两种协处理器

1.起因(Why HBase  Coprocessor) HBase作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执行求和、计数、排序等操作。比如,在旧版本的( 2.灵感来源( Source of Inspration) HBase协处理器的灵感来自于Jeff Dean 09年的演讲( P66-67)。它根据该演讲实现了类似于bigtable的协处理器,包

bbaiggey_bigdata的博客 1637

ADS测量二极管随着输入功率不同的阻抗值变化-HSMS2862

ADS测量二极管随着输入功率不同的阻抗值变化-HSMS2862

上一篇: HBase之体系结构(Architecture)
下一篇: HBase之Java API
JavaMan_chen
博客等级 码龄19年 329粉丝 82原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值