`
须等待
  • 浏览: 212828 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Hbase 学习笔记(四): Hbase的架构和实现原理

阅读更多

一、架构思路

    Hbase是基于Hadoop的项目,所以一般情况下我们使用的直接就是HDFS文件系统,这里我们不深谈HDFS如何构造其分布式的文件系统,只需要知道虽然Hbase中有多个RegionServer的概念,并不意味着数据是持久化在RegionServer上的,事实上,RegionServer是调度者,管理Regions,但是数据是持久化在HDFS上的。明确这一点,在后面的讨论中,我们直接把文件系统抽象为HDFS,不再深究。

 

    Hbase是一个分布式的数据库,使用Zookeeper来管理集群。在架构层面上分为Master(Zookeeper中的leader)和多个RegionServer,基本架构如图:


    在Hbase的概念中,RegionServer对应于集群中的一个节点,而一个RegionServer负责管理多个Region。一个Region代表一张表的一部分数据,所以在Hbase中的一张表可能会需要很多个Region来存储其数据,但是每个Region中的数据并不是杂乱无章的,Hbase在管理Region的时候会给每个Region定义一个Rowkey的范围,落在特定范围内的数据将交给特定的Region,从而将负载分摊到多个节点上,充分利用分布式的优点。另外,Hbase会自动的调节Region处在的位置,如果一个RegionServer变得Hot(大量的请求落在这个Server管理的Region上),Hbase就会把Region移动到相对空闲的节点,依次保证集群环境被充分利用。

 

二、存储模型

    有了架构层面的保证,接下来的事情就只是关注于数据的具体存储了。这里就是每个Region所承担的工作了。我们知道一个Region代表的是一张Hbase表中特定Rowkey范围内的数据,而Hbase是面向列存储的数据库,所以在一个Region中,有多个文件来存储这些列。Hbase中数据列是由列簇来组织的,所以每一个列簇都会有对应的一个数据结构,Hbase将列簇的存储数据结构抽象为Store,一个Store代表一个列簇。



     所以在这里也可以看出为什么在我们查询的时候要尽量减少不需要的列,而经常一起查询的列要组织到一个列簇里:因为要需要查询的列簇越多,意味着要扫描越多的Store文件,这就需要越多的时间。

 

    我们来深入Store中存储数据的方式。Hbase的实现是用了一种LSM 树的结构,LSM树是由B+树改进而来,所以我们首先来简单的看看B+树。


 

    这是一颗简单的B+树,含义不言而喻,这里不多分析,但是这种数据结构并不适合Hbase中的应用场景。这样的数据结构在内存中效率是很高的,但是Hbase中数据是存储在文件中的,如果按照这样的结构来存储,意味着我们每一次插入数据都要由一级索引找到文件再在文件中间作操作来保证数据的有序性,这无疑是效率低下的。所以Hbase采用的是LSM树的结构,这种结构的关键是,每一次的插入操作都会先进入MemStore(内存缓冲区),当MemStore达到上限的时候,Hbase会将内存中的数据输出为有序的StoreFile文件数据(根据Rowkey、版本、列名排序,这里已经和列簇无关了因为Store里都属于同一个列簇)。这样会在Store中形成很多个小的StoreFile,当这些小的File数量达到一个阀值的时候,Hbase会用一个线程来把这些小File合并成一个大的File。这样,Hbase就把效率低下的文件中的插入、移动操作转变成了单纯的文件输出、合并操作。

 

    由上可知,在Hbase底层的Store数据结构中,每个StoreFile内的数据是有序的,但是StoreFile之间不一定是有序的,Store只需要管理StoreFile的索引就可以了。这里也可以看出为什么指定版本和Rowkey可以加强查询的效率,因为指定版本和Rowkey的查询可以利用StoreFile的索引跳过一些肯定不包含目标数据的数据。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 6.8 KB
  • 大小: 5.8 KB
  • 大小: 5.8 KB
  • 大小: 4.7 KB
分享到:
评论

相关推荐

    Hadoop之HBase学习笔记

    【标题】"Hadoop之HBase学习笔记"主要聚焦于Hadoop生态中的分布式数据库HBase。HBase是一个基于Google Bigtable理念设计的开源NoSQL数据库,它运行在Hadoop之上,提供高性能、高可靠性以及可水平扩展的数据存储能力...

    HBase学习笔记(个人整理)

    【HBase基本概念】 HBase,全称为Hadoop Database,是一种分布式的、可扩展的、版本化的、面向列的Java实现的开源键值数据库。它建立在Apache Hadoop...理解和熟练运用HBase,对于大数据开发者和架构师来说至关重要。

    HBase自学笔记

    #### 四、HBase架构 - **客户端**:用户与HBase交互的接口。 - **主服务器 (HMaster)**:负责协调整个集群的活动,包括Region的分配和故障恢复。 - **区域服务器 (HRegionServer)**:负责存储和管理实际的数据。...

    HBase完整学习笔记

    【HBase完整学习笔记】 HBase是一款开源的分布式NoSQL数据库,主要设计用于处理海量结构化数据,尤其适合大数据分析场景。它与传统的关系型数据库(如Oracle、MySQL)不同,采用列式存储方式,这使得HBase在压缩...

    hbase_常用配置参数_以及学习笔记讲解_以及各种原理图.zip

    在这个“hbase_常用配置参数_以及学习笔记讲解_以及各种原理图.zip”压缩包中,包含了一系列关于HBase关键概念、配置参数和原理的资料,通过以下几部分来详细介绍这些内容: 1. **HBase架构原理**: HBase采用列式...

    Hbase学习笔记

    Hbase为Hadoop生态的存储引擎,为大数据系统提供了在线存储能力,为海量数据存储提供了很好的支撑。hbase系统架构也非常值得学习和借鉴,值得学习研究。

    hadoop,hive,hbase学习资料

    【标题】:“hadoop,hive,hbase学习资料”是一份综合性的学习资源,涵盖了大数据处理领域中的三个核心组件——Hadoop、Hive和Hbase。这些工具在大数据处理和分析中发挥着至关重要的作用。 【描述】:描述指出这份...

    hbase 相关的笔记

    **HBase:分布式大数据存储系统** HBase,全称为Apache HBase,是构建在Hadoop文件系统(HDFS)之上的...这份"Hbase相关的笔记"很可能包含了关于HBase的基础概念、架构、操作和优化等内容,是深入学习HBase的好资源。

    hbase简介共8页.pdf.zip

    【标题】:“HBase简介共8页.pdf.zip”是一个压缩文件,其中包含了关于HBase的详细介绍,一共8页内容。...通过深入学习这些内容,你将能够全面理解HBase的原理和实践,从而在实际项目中有效利用HBase解决大数据问题。

    hbase-1.2.6-bin+src.tar.rar

    通过深入学习和实践"Hbase-1.2.6-bin+src.tar.rar"中的源码和工具,我们可以更好地理解和掌握HBase的工作原理,提高大数据处理的能力。同时,持续关注社区更新和最佳实践,以适应不断发展的技术需求。

    hbase第04天

    "图画.png"可能是对HBase架构或者工作流程的可视化展示,帮助我们直观理解HRegionServer、HMaster、Zookeeper等组件的作用,以及数据在Region、StoreFile之间的分布和交互。 "08.HBase[1].pptx"可能是课程的幻灯片...

    大数据学习笔记

    四、Sqoop的基本原理和常用命令 Sqoop是一个用于在Hadoop和结构化数据存储之间进行数据传输的工具,提供了高性能的数据传输能力。Sqoop的基本原理是基于Hadoop的MapReduce框架,使用HDFS作为存储层,提供了高性能的...

    zookeeper+hbase快速入门全套笔记

    ### Zookeeper快速入门知识点 #### 一、Zookeeper基本功能及应用场景 Zookeeper是一个分布式的、开放源码的协调服务,用于大型应用中...无论是学习还是实际工作中,掌握Zookeeper的基本原理和操作都是非常必要的。

    Java后端学习笔记。包括Linux、maven、git、互联网架构、大数据体系等.zip

    这份"Java后端学习笔记"涵盖了Linux、Maven、Git、互联网架构和大数据体系等多个关键知识点,是提升Java开发者技能的重要资料。 首先,让我们深入了解一下这些主题: 1. **Linux**:作为服务器操作系统,Linux在...

    Hadoop,SPRK开发学习笔记

    本文将围绕“Hadoop,SPARK开发学习笔记”这一主题,深入探讨Hadoop的组件HDFS(分布式文件系统)、HBase(分布式数据库)和Hive(数据仓库工具),以及Spark的核心特性与开发实践。 首先,Hadoop是Apache基金会的...

    Java最全的架构笔记(共六百多页).zip

    这份名为“Java最全的架构笔记(共六百多页).zip”的压缩包文件,显然是一个详尽的Java架构学习资源,包含了多个专题系列,旨在帮助开发者深入理解和掌握Java技术栈及其在大规模系统中的应用。以下是根据描述中提到...

    数据仓库实战:Hive、HBase、Kylin、ClickHouse

    在学习与实践软件分布式架构过程中的,笔记与代码的仓库;主要包含分布式计算、分布式系统、数据存储、虚拟化、网络、操作系统等几个部分。所谓的分布式系统,其主要由网络、分布式存储与分布式计算等部分构成,...

    学习笔记zzzzz.zip

    压缩包内的“学习笔记”可能包括以下内容:Hadoop安装与配置教程,HDFS的基本操作和管理,MapReduce编程模型的实例解析,Hadoop集群的优化策略,以及YARN、HBase、Hive和Pig的使用方法等。这些笔记可以帮助读者深入...

    Hadoop学习笔记.pdf

    学习Hadoop不仅要关注当前的架构和组件,还需要持续跟踪其发展动态,以便更好地把握和应用这项技术。对于初学者而言,了解Hadoop的基本架构和组件,理解其设计哲学和适用场景,是入门的关键步骤。随着技术的深入学习...

Global site tag (gtag.js) - Google Analytics