`
asyty
  • 浏览: 348100 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HBase框架简介(整理)

阅读更多

 

 HBase存储架构图

Table & Region

Table逻辑上以Region的形式保存在RegionServer中。当Table随着记录数不断增加而变大后,会逐渐分裂成多份splits,成为regions,一个region[startkey, endkey]表示,不同的region会被Master分配给相应的RegionServer进行管理:

 

-ROOT- && .META. Table

HBase中有两张特殊的Table-ROOT-.META.

ü  .META.:记录了用户表的Region信息,.META.可以分裂成多个regoin

ü  -ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region

ü  Zookeeper中记录了-ROOT-表的location

META 表存储了所有的用户Region的信息,同时包括HReginServer对象的信息,其中有每一个行值的开始到结束的键值,一个表是否有效或失效,每一个HReginServer的地址,等等。META 表的大小随着用户Region的增加而增加。

ROOT表被限制在一个区域中,它指定了所有的META表信息。这些信息包括每一个META所处的区域和HReginServer信息。

ROOT表和META表每一行的大小大概是1KB左右。每一个区域的大小是256MB,这意味着ROOT表可以装载2.6 x 10META区域,转化成用户区域就是6.9 x 1010,转化成可以存储的字节数就是1.8 x 1019  

Zookeeper

ZookeeperHadoop的正式子项目,应该不属于HBaseZookeeper Quorum中除了存储了-ROOT-表的地址和HMaster的地址,HRegionServer也会把自己以Ephemeral方式注册到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的健康状态。此外,Zookeeper也避免了HMaster的单点问题,当HMaster挂了之后能协调产生新的HMaster,假如没有配置ZookeeperZookeeper的部分功能由Master自己完成,HBase还是存在单点问题。

 

Hbase Client

HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信,对于管理类操作,Client与HMaster进行RPC;对于数据读写类操作,Client与HRegionServer进行RPC。

假如配置中存在Zookeeper,Client访问用户数据之前需要首先访问zookeeper,一旦ROOT区域被找到以后,Client就可以通过扫描ROOT区域找到相应的META区域去定位实际提供数据的HReginServer。

当定位到提供数据的HReginServer以后,Client就可以通过这个HReginServer找到需要的数据了。

这些信息将会被Client缓存起来,当下次请求的时候,就不需要重复查找。

当这些区域中的某个区域不可用的时候,Client将会逆向执行上面的过程,直到找到实际提供数据的HReginServer为止。

Hbase Master

主要负责Table和Region的管理工作:

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

2)        管理HRegionServer的负载均衡,调整Region分布

3)        在Region Split后,负责新Region的分配

4)        在HRegionServer停机后,负责失效HRegionServer 上的Regions迁移

同时HBaseMaster还含有一个指向包含有ROOT区域的HReginServer地址。同时,HBaseMaster会监控每一台HReginServer的健康状况,如果某一台HReginServer不可用,它将会把不可用的HReginServer来提供服务的HLog和表由其他HReginServer来提供。

与 Bigtable不同的是,如果没有Zookeeper,HBaseMaster失效了,整个集群就会关闭。在Bigtable中,即使Master机器失效了,Tabletserver还是可以提供服务的。Bigtable使用了而外的锁管理机制,而我们的HBase使用的单点访问模式:所有的HReginServer都访问HBaseMaster。

HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。。HReginServer通过与HBaseMaster通信获取自己需要服务的数据表,并向HBaseMaster反馈自己的运行状况。

HRegionServer

HRegionServer管理了一系列HRegion对象,每个HRegion对应了Table中的一个Region,HRegion中由多个HStore组成。每个HStore对应了Table中的一个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的过程:

Write Requests

当一个写的请求到来的时候,它首先会写到一个叫做HLog的write-ahead-log中,再写入MemStore。每一个HStore只能有一个MemStore。

Read Requests

当一起读取的请求到来的时候,HReginServer会先在MemStore中寻找该数据,当找不到的时候,才会去在StoreFile中寻找。

Cache Flushes

当MemStore到达配置的大小以后,将会创建一个HFile,将其写到磁盘中去。这将减少HReginServer的内存压力。

在读和写的过程中,Cache flushes将会经常发生。当创建一个新的StoreFile的时候,读和写的操作会被挂起,知道新的StoreFile创建好,并被加入到HStroe的管理中后才可以使用。

Compactions

当一定数量的StoreFile超过一个配置的阀值之后,压缩操作就会开始执行。压缩操作的主要工作就是周期性地将一些StoreFile合并成一个StoreFile。

在执行压缩操作的过程中,HReginServer的读和写操作将被挂起,直到操作执行完毕。

Region Splits

当一个HStore所管理的StoreFile超过一个配置(当前是256MB)的值以后,将会执行Region的切分操作。Region的切分操作将原先的Region对半分割为2个新的Region。

在进行Region切分的操作过程中,读和写的操作将被挂起,直到完成为止。

转载请注明源:http://asyty.iteye.com/blog/1250273

分享到:
评论
2 楼 leibnitz 2014-07-17  
另外,你计算公式:
引用
ROOT表和META表每一行的大小大概是1KB左右。每一个区域的大小是256MB,这意味着ROOT表可以装载2.6 x 105 META区域,转化成用户区域就是6.9 x 1010,转化成可以存储的字节数就是1.8 x 1019  。

是针对 92.x吧?
而且你这个把256M看作是一个region的max size了,感觉也不对。它只是一个store file max size,如果 有多个呢?进一步,如果 有多个store呢?
waiting for u...
1 楼 leibnitz 2014-01-23  
引用
在进行Region切分的操作过程中,读和写的操作将被挂起,直到完成为止。

hbase不是有parent吗,觉得读过程无须block?

同理,compaction也是。

只是在flush时读写是要block

all right?

相关推荐

    Hadoop、HBase、Hive、Pig、Zookeeper资料整理

    标题 "Hadoop、HBase、Hive、Pig、Zookeeper资料整理" 涵盖了大数据处理领域中几个核心的开源项目,这些项目在分布式计算、数据存储和管理方面发挥着重要作用。以下是对这些技术的详细介绍: 1. **Hadoop**:Hadoop...

    (源码)基于Spring Boot和HBase的设备信息管理系统.zip

    本项目是一个基于Spring Boot框架和HBase数据库的设备信息管理系统。通过Spring Boot提供的高效开发环境和HBase的高性能分布式存储能力,实现了设备信息的快速存储、查询和更新。项目主要用于管理设备的详细信息,...

    hadoop和hbase安装操作手册

    随着大数据技术的发展,Hadoop和HBase作为处理大规模数据的关键技术框架,受到了越来越多的关注。本文档旨在为初次接触这些技术的学习者提供一份详尽的操作指南,帮助大家顺利安装并配置Hadoop和HBase环境。以下是...

    基于hadoop,hive,hbase的日志分析系统.zip

    Hadoop是Apache软件基金会开发的一个开源框架,主要用来处理和存储海量数据。它基于分布式文件系统HDFS(Hadoop Distributed File System),允许数据在多台服务器之间进行分布式存储,确保高可用性和容错性。Hadoop...

    第15章-Sqoop+Hive+Hbase+Kettle+R某技术论坛日志分析项目案例.docx

    - **Hadoop**:分布式计算框架,用于处理大规模数据集。 - **HBase**:基于Hadoop的NoSQL列式数据库,提供高效的随机读写能力。 - **Hive**:构建于Hadoop之上的数据仓库工具,简化了对Hadoop数据的查询和管理。 - *...

    大数据原理与应用期末知识整理(免费)

    1. 简介:Hadoop是由Doug Cutting开发的一个开源框架,主要用于大规模数据集的分布式存储和计算。 2. Hadoop生态系统:包括HDFS(Hadoop Distributed File System)用于分布式存储,MapReduce用于分布式计算,还有...

    hadoop学习整理的文档

    Hadoop是Apache软件基金会开发的一个开源分布式计算框架,主要用于处理和存储大规模数据。这个文档集合可能是针对Hadoop初学者或者希望深入理解Hadoop生态系统的专业人士所整理的学习资料。Hadoop的核心由两个主要...

    大数据分布式系统平台框架

    5. HBase:提供海量数据存储功能,是一种构建在HDFS之上的分布式、面向列的存储系统。 6. Sqoop:是一种用于在Hadoop和结构化数据存储(如关系数据库)之间高效传输批量数据的工具。 7. Storm:提供分布式、高性能、...

    java核心知识点整理

    【Java核心知识点整理】 在Java编程领域,掌握核心知识点对于成为一名高效的开发者至关重要。这里我们将深入探讨JVM(Java虚拟机)、集合、多线程并发、基础语法、Spring框架原理、微服务、网络通信、日志处理、...

    Java开发面试题整理含答案(计网、Java、操作系统、数据库、框架).zip

    Java前后开发面试题,大厂进阶之路,基于JavaGuide、Cyc大佬、牛客...包含计算机网络知识、JavaSE、JVM、Spring、Springboot、SpringCloud、Mybatis、多线程并发、netty、MySQL、MongoDB、Elasticsearch、Redis、HBASE

    JAVA核心知识点整理-最新版本

    本文将详细梳理Java的相关技术,特别关注JVM、基础语法、微服务、Spring框架、Kafka消息队列、Hbase分布式数据库以及Netty网络库等方面,这些都是面试中经常被问到的话题。如果你能对这些知识点有全面的了解,那么在...

    spark 优秀资源源码(个人整理)

    Spark是Apache基金会下的一个分布式计算框架,以其高效、易用和可扩展性而著名。它在大数据处理领域扮演着重要角色,尤其在实时处理、批处理以及机器学习等任务上表现出色。本资源集合中包含了Spark与ETL(数据提取...

    Hadoop期末整理.docx

    这个文档"**Hadoop期末整理.docx**"涵盖了Hadoop生态系统中的一些关键组件,包括HDFS、HBase、Hive、Sqoop和ZooKeeper。让我们深入探讨这些知识点。 1. **HDFS(分布式文件系统)**:Hadoop的基石,它是一种分布式...

    大数据技术原理及应用[整理].pdf

    Hive是一个建立在Hadoop基础之上的数据仓库,提供了一些用于数据整理、特殊查询和分析存储在Hadoop文件中的数据集的工具。Hive提供的是一种结构化数据的机制,支持类似于传统RDBMS中的SQL语言来帮助那些熟悉SQL的...

    JAVA核心知识点整理.pdf

    《JAVA核心知识点整理》这份资料全面涵盖了Java开发者在面试中可能会遇到的各种问题,从JVM深入剖析到Java集合、多线程开发,再到Spring框架、微服务架构、网络通信、日志管理,以及分布式系统中的关键组件如...

    大数据文档整理.zip

    本资料包“大数据文档整理.zip”包含了多个大数据相关的关键技术,包括Hadoop、Hive、Flume、Kafka、HBase、Kylin、Zookeeper、Sqoop以及ELK等。以下是对这些技术的详细介绍: 1. Hadoop:Hadoop是Apache基金会开源...

    JAVA核心面试知识整理.rar

    这个压缩包"JAVA核心面试知识整理.rar"包含了多个关键主题,让我们逐一深入探讨。 1. **JVM(Java虚拟机)**:JVM是Java程序运行的基础,它负责解析.class文件,执行字节码,并管理内存。理解JVM的工作原理,包括类...

Global site tag (gtag.js) - Google Analytics