热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hbase系列(一)基本概念

Hbase系列(一)基本概念HBase是Apache旗下一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。利用HBase技术可在廉价PC服务器上搭建起大规模的存储化集群。使用H
Hbase 系列(一)基本概念

HBase 是 Apache 旗下一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。利用 HBase 技术可在廉价 PC 服务器上搭建起大规模的存储化集群。使用 HBase 可以对数十亿级别的大数据进行实时性的高性能读写,在满足高性能的同时还保证了数据存取的原子性。

一、HBase 基本概念

大数据具有以下特征:volume(体量大)、variety(样式多)、velocity(速度快)、valueless(价值密度低)

Hbase(Hadoop Database)是一个高可靠、高性能、面向列、可伸缩的分布式数据库,利用 Hbase 技术可在廉价 PC 上搭建起大规模结构化存储集群。 Hbase 参考 Google 的 Big Table 建模,使用类似 GFS 的 HDFS 作为底层文件存储系统,在其上可以运行 Mapreduce 批量处理数据,使用 Zookeeper 作为协同服务组件。

二、HBase 与 Hadoop

《Hbase 系列(一)基本概念》

HBase 底层依赖 Hadoop,所以选择 Hadoop 版本对 HBase 部署很关键(https://blog.csdn.net/sunny05296/article/details/54089194)

三、HBase 四大核心组件

Hadoop 框架包含两个核心组件: HDFS 和 Mapreduce,其中 HDFS 是文件存储系统,负责数据存储; Mapreduce 是计算框架,负责数据计算。它们之间分工明确、低度耦合、相关关联。对于 Hbase 数据库的核心组件,即核心功能模块共有 4 个,它们分别是:客户端 Client、协调服务模块 Zookeeper、主节点 Master 和 Region 节点 Region Server,这些组件的描述和相互之间的关联关系如图所示。

《Hbase 系列(一)基本概念》

3.1 客户端

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

3.2 客户端协调服务组件 Zookeeper

Zookeeper Quorum(队列)负责管理 Hbase 中多 Master 的选举、服务器之间状态同步等。再具体一些就是, Hbase 中 Zookeeper 实例负责的协调工作有:存储 Hbase 元数据信息、实时监控 Region Server、存储所有 Region 的寻址入口,当然还有最常见的功能就是保证 Hbase 集群中只有一个 Master 节点。

3.3 主节点 HMaster

HMaster 没有单点问题,在 Hbase 中可以启动多个 HMaster,通过 Zookeeper 的 Master 选举机制保证总有一个 Master 正常运行并提供服务,其他 HMaster 作为备选时刻准备(当目前 HMaster 出现问题时)提供服务。 HMaster 主要负责 Table 和 Region 的管理工作。

  • 管理用户对 Table 的增、删、改、査操作。
  • 管理 Region Server 的负载均衡,调整 Region 分布。
  • 在 Region 分裂后,负责新 Region 的分配。
  • 在 Region Server 死机后,负责失效 Region Server 上的 Region 迁移。

3.4 Region 节点 HRegionServer

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

如图2所示, Hstore 存储是 Hbase 存储的核心,由两部分组成: MemStore 和 StoreFile。 MemStore 是 Sorted Memory Buffer,用户写入的数据首先会放入 MemStore 中,当 MemStore 满了以后会缓冲(flush)成一个 StoreFile(底层实现是 HFile),当 StoreFile 文件数量增长到一定阈值,会触发 Compact 操作,将多个 StoreFiles 合并成一个 StoreFile,在合并过程中会进行版本合并和数据删除,因此可以看出 HBase 其实只有增加数据,所有的更新和删除操作都是在后续的 Compact 过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了 HBase I/O 的高性能。

《Hbase 系列(一)基本概念》

StoreFiles 在触发 Compact 操作后,会逐步形成越来越大的 StoreFile,当单个 StoreFile 大小超过一定阈值后,会触发 Split 操作,同时把当前 Region 分裂成 2 个 Region,父 Region 会下线,新分裂的 2 个子 Region 会被 Master 分配到相应的 HRegionServer 上,使得原先 1 个 Region 的压力得以分流到 2 个 Region 上。

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

每天用心记录一点点。内容也许不重要,但习惯很重要!


推荐阅读
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 在 CentOS 7 环境中使用 MySQL 5.6 镜像启动数据库时遇到权限问题,本文将详细探讨并提供解决方案。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • Nacos 0.3 数据持久化详解与实践
    本文详细介绍了如何将 Nacos 0.3 的数据持久化到 MySQL 数据库,并提供了具体的步骤和注意事项。 ... [详细]
  • Docker 环境下 MySQL 双主同步配置指南
    本文介绍了如何在 Docker 环境中配置 MySQL 的双主同步,包括目录结构的创建、配置文件的编写、容器的创建与设置以及最终的验证步骤。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
author-avatar
阳光而灿烂61
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有