12 HBase核心功能模块。

Hadoop 框架包含两个核心组件:

HDFS 和 MapReduce 其中

HDFS                是文件存储系统,负责数据存储;

MapReduce     是计算框架,负责数据计算

Hbase 数据库核心组件4个。

客户端Client、协调服务模块ZooKeeper、 主节点HMaster 和 Region节点 HRegionServer.

CLient                是整个Hbase系统的入口。使用者通过客户端操作 HBase。客户端使用 Hbase 的 RPC 机制与 HMaster 和 RegionServer 进行通信。 对于管理类操作, Client 与 HMaster 进行 RPC 通信; 对于读写类操作, Client 与 RegionServer 进行 RPC 交互。 这里客户端可以是多个, 并不限定是原生JAVA接口, 还有 Thrift、Avro、Rest等客户端模式,甚至 MapReduce 也可以算是一种客户端

Zookeeper         Quorum(队列)负责管理 HBase 中多 HMaster的选举、服务器之间状态同步等。  具体讲:存储 HBase 元数据信息、实时监控 RegionServer、存储所有 Region 的寻址入口,保证HBase 集群中只有一个 HMaster节点。

HMaster            HMaster 主要负责 Table 和 Region 的管理工作:HBase中可以启动多个 HMaster,通过 Zookeeper 的选举机制保证总有一个 Master 正常运行并提供服务, 其他 HMaster 作为备选时刻准备提供服务。

管理用户对 Table 的增、删、改、查、操作。

管理 RegionServer 的负载均衡, 调整 Region 分布。

在 Region 分裂后, 负责新 Region 的分配

在 RegionServer 死机后,负责失效 RegionServer 上的 Region 迁移。

Region 节点 HRegionServer 主要负责响应用户 I/O 请求, 向 HDFS 文件系统中读写数据,是 HBase 中最核心的模块。 HRegionServer 内部管理了一系列 HRegion 对象, 每个HRegion对应了 Table中的一个 Region。 HRegion由多个HStore组成,每个HStore 对应了 Table 中的一个 Column Family 的存储。 可以看出每个 Column Family 其实就是一个集中的存储单元,因为最好将具备共同 I/O 特性的列放在一个 Column Family 中, 这样能保证读写的高效性。 HRegionServer 的组成结构如图

HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了Table中的一个Region,HRegion中由多个HStore组成。每个HStore对应了Table中的一个Column Family的存储,可以看出每个Column Family其实就是一个集中的存储单元,因此最好将具备共同IO特性的column放在一个Column Family中,这样最高效。

HStore存储是HBase存储的核心了,其中由两部分组成,一部分是MemStore,一部分是StoreFiles。MemStore是Sorted Memory Buffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile),当StoreFile文件数量增长到一定阈值,会触发Compact合并操作,将多个StoreFiles合并成一个StoreFile,合并过程中会进行版本合并和数据删除,因此可以看出HBase其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBase I/O的高性能。当StoreFiles Compact后,会逐步形成越来越大的StoreFile,当单个StoreFile大小超过一定阈值后,会触发Split操作,同时把当前Region Split成2个Region,父Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer上,使得原先1个Region的压力得以分流到2个Region上。下图描述了Compaction和Split的过程:

在理解了上述HStore的基本原理后,还必须了解一下HLog的功能,因为上述的HStore在系统正常工作的前提下是没有问题的,但是在分布式系统环境中,无法避免系统出错或者宕机,因此一旦HRegionServer意外退出,MemStore中的内存数据将会丢失,这就需要引入HLog了。每个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类,在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中(HLog文件格式见后续),HLog文件定期会滚动出新的,并删除旧的文件(已持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会通过Zookeeper感知到,HMaster首先会处理遗留的 HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取 到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。

来自为知笔记(Wiz)

时间: 2024-10-10 09:22:01

12 HBase核心功能模块。的相关文章

Vega Prime核心功能模块介绍

Vega Prime具有典型面向对象特点,其核心功能模块都是以类的形式定义的,并存在一定的继承关系,对基本功能进行扩充. vp***表示vp模块中的函数和类,这一层完全可以由Lynx Prime来操作完成: vs***表示vsg模块中的函数和类,是vp的关键核心: vr***表示render层,是硬件接口层,可以理解为对OpenGL或DirectX的封装层: vu***表示一些内存管理.辅助.数学.工具类,对vega prime的其它功能进行了完善. 1.内核vpKernel vpKernel继

Nginx 功能模块

一.Nginx 核心功能模块 (1) Nginx 核心功能模块负责 Nginx 的全局应用,主要对应主配置文件的 Main 区块和 Events 区块(2) Nginx 核心功能模块官网:http://nginx.org/en/docs/ngx_core_module.html 二.Nginx http 模块 Nginx http 功能模块 模块说明 ngx_http_core_module 包括一些核心的 http 参数配置,对应 Nginx 的配置为 HTTP 区块部分 ngx_http_a

电商网站中添加商品到购物车功能模块2017.12.8

前言: 电商网站中添加商品到购物车功能模块实现: 根据前一篇博客的介绍,我们看到淘宝网站为了保证购物车数据的同步,直接是强制用户必须登录才可以将商品加入购物车.而京东网站是用户在未登录的状态下也可以将商品加入到购物车,此时这个是保存在了cookie中,然后用户登录后,根据商品的id判断商品是否存在,将两个购物车的商品合并,形成最终的购物车商品. 本篇文章分两个模块,分别看下这两个功能是如何实现的: 1.必须在用户登录的前提下,才可以将商品加入到购物车列表 我们今天先看下淘宝网站的状态下的添加商品

python基础学习12(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #python class #面向对象编程oop思想,3个特性:封装.继承.多态,在其他方面的功能,比如重载,模拟等,也可以自定义自己需要的类 #在python中,面向对象主要2个:类和类实例 #类与实例 #类与实例有关

Spring 核心功能演示

Spring 核心功能演示 Spring Framework 简称 Spring,是 Java 开发中最常用的框架,地位仅次于 Java API,就连近几年比较流行的微服务框架 SpringBoot,也是基于 Spring 实现的,SpringBoot 的诞生是为了让开发者更方便地使用 Spring,因此 Spring 在 Java 体系中的地位可谓首屈一指. 当然,如果想要把 Spring 所有功能都讲的一清二楚,远远不是一两篇文章能够做到的,但幸运的是,Spring 的基础资料可以很轻易的搜

智点财务软件的功能模块介绍

智点财务软件由多个功能模块构成,包括:总账.工资管理.固定资产.资产负债表.损益表等.各模块间相对独立,各自具有完善和系统的功能,又有机地结合为一体. 智点财务软件是一个企业经营管理平台,用以解决不同满足各级管理者对信息化的不同要求:为高层经营管理者提供大量收益与风险的决策信息,辅助企业制定长远发展战略:为中层管理人员提供企业各个运作层面的运作状况,帮助做到各种事件的监控.发现.分析.解决.反馈等处理流程,帮助做到投入产出最优配比:为基层管理人员提供便利的作业环境,易用的操作方式实现工作岗位.工

10天学会phpWeChat——第二天:hello world!我的第一个功能模块

今天我们开始进入<10天学会phpWeChat>系列教程的第二天:创建我的第一个hello world! 功能模块. 1.登录后台,进入 系统设置--自定义模块,如图: 自定义模块参数说明: 上级模块:上级模块一共三个选项:会员member (一般很少会在其下面建立模块).pc电脑端(建立Pc访问的官网.单页.商城模块等).wechat微信公共号端(建立微信公共号端访问的微官网.微资讯.微商城等) 这里我们可以根据实际需求选择,此处示例我们选择wechat. 模块名称:模块的中文名称,命名没特

【JAVAWEB学习笔记】网上商城实战5:后台的功能模块

今日任务 完成后台的功能模块 1.1      网上商城的后台功能的实现: 1.1.1    后台的功能的需求: 1.1.1.1  分类管理: [查询所有分类] * 在左侧菜单页面中点击分类管理: * 提交到Servlet: * 查询所有的分类: * 显示到页面中: [添加分类] * 在分类列表页面中点击[添加]按钮. * 提交到Servlet跳转到添加页面. * 输入信息点击[确定]按钮. * 提交到Servlet完成保存分类的功能. [修改分类] * 在分类列表页面中点击[编辑]链接: *

JavaScript ES6 核心功能一览

JavaScript 在过去几年里发生了很大的变化.这里介绍 12 个你马上就能用的新功能. JavaScript 历史 新的语言规范被称作 ECMAScript 6.也称为 ES6 或 ES2015+ . 自从 1995 年 JavaScript 诞生以来,它一直在缓慢地发展.每隔几年就会增加一些新内容.1997 年,ECMAScript 成为 JavaScript 语言实现的规范.它已经有了好几个版本,比如 ES3 , ES5 , ES6 等等. 如你所见,ES3,ES5 和 ES6 之间分