精华内容
下载资源
问答
  • hbase-hbase体系架构

    2020-07-01 04:12:51
  • HBase体系结构

    2014-11-12 17:20:10
    HBase体系结构 HBase的服务器体系结构遵从简单的主从服务器架构,它由HRegion Server群和HBase Master服务器构成。HBase Master负责管理所有的HRegion Server,而HBase中的所有RegionServer都是通过ZooKeeper来协调...

    HBase体系结构

    HBase的服务器体系结构遵从简单的主从服务器架构,它由HRegion Server群HBase Master服务器构成。HBase Master负责管理所有的HRegion Server,而HBase中的所有RegionServer都是通过ZooKeeper来协调,并处理HBase服务器运行期间可能遇到的错误。HBase Master Server本身并不存储HBase中的任何数据,HBase逻辑上的表可能会被划分成多个Region,然后存储到HRegion Server群中。HBase Master Server中存储的是从数据到HRegion Server的映射。因此HBase体系结构如下图所示。

    1) Client
    HBase Client使用HBase的RPC机制与HMaster和HRegion Server进行通信,对于管理类操作,Client与HMaster进行RPC;对于数据读写类操作,Client与HRegionServer进行RPC。
    2)Zookeeper
    Zookeeper Quorum中除了存储了-ROOT-表的地址和HMaster的地址,HRegionServer会把自己以Ephemeral方式注册到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的健康状态。此外,Zookeeper也避免了HMaster的单点问题。
    3)HMaster
    每台HRegionServer都会与HMaster进行通信,HMaster的主要任务就是要告诉每台HRegion Server它要维护哪些HRegion。
    当一台新的HRegionServer登录到HMaster时,HMaster会告诉它等待分配数据。而当一台HRegion死机时,HMaster会把它负责的HRegion标记为未分配,然后再把它们分配到其他的HRegion Server中。
    HBase已经解决了HMaster单点故障问题(SPFO),并且HBase中可以启动多个HMaster,那么它就能够通过Zookeeper来保证系统中总有一个Master在运行。

    构建多Hmaster时首先确保你的单Hmaster集群构建正确并且完美启动。
    剩下的工作很简单。
    在另一台HMaster的机器上配置hbase.master为这台机子的hostname并且启动hmaster即可,这样这台hmaster会自动去连接已启动的zookeeper与HRegionServer。
    启动脚本:在bin目录下,输入./hbase-daemon.sh start master即可。
    要停Hmaster时,直接kill -9 id  

    HMaster在功能上主要负责Table和Region的管理工作,具体包括:

    • 管理用户对Table的增删改查操作
    • 管理HRegionServer的负载均衡,调整Region分布
    • 在Region Split后,负责新Region的分配
    • 在HRegionServer停机后,负责失效HRegionServer上的Region迁移

    4)HRegion
    当表的大小超过设置值得时候,HBase会自动地将表划分为不同的区域,每个区域包含所有行的一个子集。对用户来说,每个表是一堆数据的集合,靠主键来区分。从物理上来说,一张表被拆分成了多块,每一块就是一个HRegion。我们用表名+开始/结束主键来区分每一个HRegion,一个HRegion会保存一个表里面某段连续的数据,从开始主键到结束主键,一张完整的表格是保存在多个HRegion上面。

    上图表示当Table随着记录数不断增加而变大后,会逐渐分裂成多份splits,成为regions,一个region由[startkey, endkey]表示,不同的region会被Master分配给响应的RegionServer进行管理。

    5)HRegionServer
    所有的数据库数据一般都是保存在Hadoop分布式文件系统上面的,用户通过一系列HRegion服务器获取这些数据,一台机器上面一般只运行一个HRegionServer,且每一个区段的HRegion也只会被一个HRegion服务器维护。如下图所示HRegion Server数据存储关系图。

    HRegion Server主要负责响应用户的IO请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了Table中的一个Region,HRegion中由多个HStore组成。每个HStore对应了Table中的一个Column Family的存储,可以看出每个ColumnFamily其实就是一个集中的存储单元,因此最好将具备共同IO特性的column放在一个Column Family中,这样最高效。
    HStore存储时HBas存储的核心了,其中由两部分组成,一部分是MemStore,一部分是StoreFilesMemStore*是Sorted Memory Buffer,用户写入数据首先会放入MemStore,当MemStore满了以后会flush成一个*StoreFile(底层是HFile),当StoreFile文件数增长到一定阈值,会触发Compact合并操作,将多个StoreFile合并成一个StoreFile,合并过程中会进行版本合并和数据删除,因此可以看出HBase其实只有增加数据,所有的更新和删除操作都是后续的compact过程中进行的,这使得用户的写操作只要进入内存中就可以立刻返回,保证了HBase IO的高性能。当StoreFiles Compact后,会逐步形成越来越大的StoreFile,当单个StoreFile大小超过一定的阈值后,会触发Split操作,同时,会把当前的Region Split成2个Region,父Region会下线,新Split出的2个孩子Region会被HMaster分配到响应的HRegion Server上,使得原先1个Region的压力得以分流道2个Region上。下图描述了Compaction和Split的过程。

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

    • HFile HBase中的KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级的包装,即StoreFile底层就是HFile。
    • HLogFile,HBase中WAL(Write Ahead Log)的存储格式,物理上是Hadoop的Sequence File

    7)ROOT表和META表
    用户表的Regions元数据被存储在.META.表中,随着Region的增多,.META.表中的数据也会增大,并分裂成多个Regions。为了定位.META.表中各个Regions的位置,把.META.表中的所有Regions的元数据保存在-ROOT-表中,最后由Zookeeper记录-ROOT-表的位置信息。所有客户端访问用户数据前,需要首先访问Zookeeper获得-ROOT-的位置,然后方位-ROOT-表获得.META.表的位置,最后根据.META.表中的信息确定用户数据存放的位置,-ROOT-表永远不会被分割,它只有一个Region,这样可以保证最多需要三次跳转就可以定位任意一个Region。为了加快访问速度,.META.表的Regions全部保存在内存中,如果.META.表中的每一行在内存中占大约1KB,且每个Region限制为128M,下图中的三层结构可以保存Regions的数目为(128M/1KB)*(128/1KB)=2^34个。

    HBase数据模型

    HBase是一个类似于BigTable的分布式数据库,它是一个稀疏的长期存储的(存在硬盘上)、多维度的、排序的映射表。这张表的索引是行关键字、列关键字和时间戳。HBase的数据都是字符串,没有类型。
    用户在表格中存储数据,每行都有一个可排序的主键和任意多的列。由于是系数存储,所以同一张表里面的每行数据都可以由截然不同的列。
    列名字的格式是“<family>:<qualifier>”(<列簇>:<限定符>),都是有字符串组成的。每一张表有一个列簇(family)集合,这个集合是固定不变的,只能通过改变表结构来改变。但是限定符(qualifier)的值相对于每一行来说都是可以改变的。HBase把用一个列簇里面的数据存储在同一个目录底下,并且HBase的写操作时琐行的,每一行来说都是一个原子元素,都可以加锁。HBase所有数据库的更新都有一个时间戳标记,每个更新都是一个新的版本,HBase会保留一定数量的版本,这个值是可以设定的,客户端可以选择获取距离某个时间点最近的版本单元的值,或者一次获取所有版本单元的值。

    1)逻辑模型
    可以将表想象成一个大的映射关系,通过行健、行健+时间戳或者行健+列(列簇:列修饰符),就可以定位特定数据。由于HBase是稀疏存储数据的,所以某些列可以空白的。如下表,给出的是 www.cnn.com 网站的数据存放逻辑视图,表中仅有一行数据,行的唯一标识为"com.cnn.www" ,对这行数据的每一次逻辑修改都有一个时间戳关联对应。表中共有四列:contents:html、anchor:cnnsi.com、anchor:my.lock.ca、mime:type,每一行以前缀的方式给出其所属的列簇。

    行健是数据行在表中的唯一标识,并作为检索记录的主键。在HBase中访问表中的行只有三种方式:通过当个行健访问;给定行健的范围访问;全表扫描。行健可以任意字符串(最大长度64KB)并按照字典序进行存储。对那些经常一起读取的行,需要对key值精心设计,以便它们能放在一起存储。

    2)概念模型
    HBase是按照列存储的稀疏行/列矩阵,物理模型实际上就是把概念模型中的一行进行切割,并按照列族存储,这点在进行数据设计和程序开发的时候必须牢记。上面的逻辑视图在物理存储的时候应该表现下面的样子:

    从上图可以看出空值是不被存储的,所以查询时间戳为t8的“contents:html”将返回null,同样查询时间戳为t9,"anchor:my.lock.ca"的项也返回null。如果没有指明时间戳,那么应该返回指定列的最新数据,并且最新的值在表格里也是最先找到的,因为他们是按照时间排序的。所以,如果查询“contents”而不指明时间戳,将返回t6的数据,这种存储结构还有一个优势就是可以随时向表中的任何一个列族添加新列,而不需要事先说明。

    HBase安装

    HBase的安装也有三种模式:单机模式、伪分布模式和完全分布式模式,在这里只介绍完全分布模式。前提是Hadoop集群和Zookeeper已经安装完毕,并能正确运行。 
    第一步:下载安装包,解压到合适位置,并将权限分配给hadoop用户(运行hadoop的账户)
    这里下载的是hbase-0.94.6,Hadoop集群使用的是1.0.4,将其解压到/usr/local下并重命名为hbase

    sudo cp hbase-0.94.6. tar .gz /usr/local
    sudo tar -zxf hbase-0.94.6. tar .gz
    sudo mv hbase-0.94.6 hbase
    sudo chown -R hadoop:hadoop hbase

    第二步:配置相关的文件
    (1)配置hbase-env.sh,该文件在/usr/local/hbase/conf
    设置以下值:

    export JAVA_HOME= /usr/local/java/jdk1 .6.0_27    #Java安装路径
    export HBASE_CLASSPATH= /usr/local/hadoop/conf    #HBase类路径
    export HBASE_MANAGES_ZK= true    #由HBase负责启动和关闭Zookeeper

    (2)配置hbase-site.xml,该文件位于/usr/local/hbase/conf

    < property >
                < name >hbase.master</ name >
                < value >master:6000</ value >
        </ property >
        < property >
                < name >hbase.master.maxclockskew</ name >
                < value >180000</ value >
        </ property >
        < property >
                < name >hbase.rootdir</ name >
                < value >hdfs://master:9000/hbase</ value >
        </ property >
        < property >
                < name >hbase.cluster.distributed</ name >
                < value >true</ value >
        </ property >
        < property >
                < name >hbase.zookeeper.quorum</ name >
                < value >master</ value >
        </ property >
        < property >
                < name >hbase.zookeeper.property.dataDir</ name >
                < value >/home/${user.name}/tmp/zookeeper</ value >
        </ property >
        < property >
                < name >dfs.replication</ name >
                < value >1</ value >
        </ property >

    其中,hbase.master是指定运行HMaster的服务器及端口号;hbase.master.maxclockskew是用来防止HBase节点之间时间不一致造成regionserver启动失败,默认值是30000;hbase.rootdir指定HBase的存储目录;hbase.cluster.distributed设置集群处于分布式模式;hbase.zookeeper.quorum设置Zookeeper节点的主机名,它的值个数必须是奇数;hbase.zookeeper.property.dataDir设置Zookeeper的目录,默认为/tmp,dfs.replication设置数据备份数,集群节点小于3时需要修改,本次试验是一个节点,所以修改为1。

    (3)配置regionservers,该文件位于/usr/local/hbase/conf
    设置所运行HBase的机器,此文件配置和hadoop中的slaves类似,一行指定一台机器,本次试验仅用一台机器,设置master即可。

    (4)设置HBase环境变量,文件位于/etc/profile
    在文件末尾添加:

        #hbase Env
    export HBASE_HOME= /usr/local/hbase
    export PATH=$PATH:$HBASE_HOME /bin

    使之生效:source /etc/profile
    第三步:运行测试

    启动hadoop后,在终端输入start-hbase.sh,查看运行的进程:

    关闭:stop-hbase.sh

    展开全文
  • ​ 从上面的可以看出,整个HBase组件是建立在HDFS的基础之上,利用zookeeper进行管理整个集群 集群中存在一个HMaster和多个HRegionServer,HMaster是用来进行与zookeeper进行通信,管理整个HRegionSer..


    在这里插入图片描述

     
    简 介:HBase是谷歌BigData论文的一个代码实现,在大数据处理领域应用广泛。本文意在记录自己近期学习过程中的所学所得,如有错误,欢迎大家指正。
     
    关键词:大数据组件、HBase、NoSQL

    一、HBase详细架构图

    image-20210622164916178

    ​ 从上面的图可以看出,整个HBase组件是建立在HDFS的基础之上,利用zookeeper进行管理整个集群

    集群中存在一个HMaster和多个HRegionServer,HMaster是用来进行与zookeeper进行通信,管理整个HRegionServer的负载均衡,调整HRegion的分配。

    如果说当前的HMaster死掉之后,剩余的机器会进行抢夺机会,谁拿到了谁就会成为下一个HMaster。

    二、组件

    HLog:每个HRegionServer可以看到里面维护着一个HLog,HLog的作用就是说将一系列的写操作进行保存,如果某一时刻服务器宕机,我们可以再次读取HLog中的操作进行数据还原,重新将数据写回HDFS。

    HRegion:它可以理解为每张表的一部分,因为HBase是用来存储大数据的,所以我们的表一定会很大,如果表过于大不便于操作,效率较低,所以需要将大表进行切分,切分成多个HRegion,可以说包含多个rowKey的数据。

    Store:HBase是NoSQL数据库,它不像mysql这种有着强烈的列关系,它是以列族进行区分,每个列族下包含着多个列,可以说每个Store就代表着一个列族。

    Mem Store:它是内存缓冲区,我们在像HBase中写入数据时,有时会发现数据不能够实时的写入HDFS中,但是此时是可以扫描到的,原因是此时数据被写入到内存,还没有被刷写到HDFS系统中,只有当Mem Store中的数据达到一定阈值时,才会触发向HDFS中写数据的事件。

    StoreFile:上面说Mem Store会一定时机地刷写一次数据,那么每一次刷写就会形成一个StoreFile文件,刷写多次就会形成多个文件,而StoreFile的地层是以HFile进行存储。

    文件,而StoreFile的地层是以HFile进行存储。

    HFile:HFile是一种数据存储格式,StoreFile就是以该形式进行存储,它是一种以keyValue的形式进行存储。

    展开全文
  • [HBase] HBase体系结构

    2012-12-18 14:50:28
    HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现,类似Google Bigtable...

    HBase简介

    HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

    HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。

    上图描述了Hadoop EcoSystem中的各层系统,其中HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。

    此外,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。

    HBase访问接口

    1.       Native Java API,最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据

    2.       HBase Shell,HBase的命令行工具,最简单的接口,适合HBase管理使用

    3.       Thrift Gateway,利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问HBase表数据

    4.       REST Gateway,支持REST 风格的Http API访问HBase, 解除了语言限制

    5.       Pig,可以使用Pig Latin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapReduce Job来处理HBase表数据,适合做数据统计

    6.       Hive,当前Hive的Release版本尚没有加入对HBase的支持,但在下一个版本Hive 0.7.0中将会支持HBase,可以使用类似SQL语言来访问HBase

    HBase数据模型

    Table & Column Family

    Row Key Timestamp Column Family
    URI Parser
    r1 t3 url=http://www.taobao.com title=天天特价
    t2 host=taobao.com  
    t1    
    r2 t5 url=http://www.alibaba.com content=每天…
    t4 host=alibaba.com  

    Ø  Row Key: 行键,Table的主键,Table中的记录按照Row Key排序

    Ø  Timestamp: 时间戳,每次数据操作对应的时间戳,可以看作是数据的version number

    Ø  Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。

    Table & Region

    当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

    Client访问用户数据之前需要首先访问zookeeper,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的位置去访问,中间需要多次网络操作,不过client端会做cache缓存。

    MapReduce on HBase

    在HBase系统上运行批处理运算,最方便和实用的模型依然是MapReduce,如下图:

    HBase Table和Region的关系,比较类似HDFS File和Block的关系,HBase提供了配套的TableInputFormat和TableOutputFormat API,可以方便的将HBase Table作为Hadoop MapReduce的Source和Sink,对于MapReduce Job应用开发人员来说,基本不需要关注HBase系统自身的细节。

    HBase系统架构

    Client

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

    Zookeeper

    Zookeeper Quorum中除了存储了-ROOT-表的地址和HMaster的地址,HRegionServer也会把自己以Ephemeral方式注册到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的健康状态。此外,Zookeeper也避免了HMaster的单点问题,见下文描述

    HMaster

    HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行,HMaster在功能上主要负责Table和Region的管理工作:

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

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

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

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

    HRegionServer

    HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。

    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,完成数据恢复。

    HBase存储格式

    HBase中的所有数据文件都存储在Hadoop HDFS文件系统上,主要包括上述提出的两种文件类型:

    1.       HFile, HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile

    2.       HLog File,HBase中WAL(Write Ahead Log) 的存储格式,物理上是Hadoop的Sequence File

    HFile

    下图是HFile的存储格式:

    首先HFile文件是不定长的,长度固定的只有其中的两块:Trailer和FileInfo。正如图中所示的,Trailer中有指针指向其他数据块的起始点。File Info中记录了文件的一些Meta信息,例如:AVG_KEY_LEN, AVG_VALUE_LEN, LAST_KEY, COMPARATOR, MAX_SEQ_ID_KEY等。Data Index和Meta Index块记录了每个Data块和Meta块的起始点。

    Data Block是HBase I/O的基本单元,为了提高效率,HRegionServer中有基于LRU的Block Cache机制。每个Data块的大小可以在创建一个Table的时候通过参数指定,大号的Block有利于顺序Scan,小号Block利于随机查询。每个Data块除了开头的Magic以外就是一个个KeyValue对拼接而成, Magic内容就是一些随机数字,目的是防止数据损坏。后面会详细介绍每个KeyValue对的内部构造。

    HFile里面的每个KeyValue对就是一个简单的byte数组。但是这个byte数组里面包含了很多项,并且有固定的结构。我们来看看里面的具体结构:

    开始是两个固定长度的数值,分别表示Key的长度和Value的长度。紧接着是Key,开始是固定长度的数值,表示RowKey的长度,紧接着是RowKey,然后是固定长度的数值,表示Family的长度,然后是Family,接着是Qualifier,然后是两个固定长度的数值,表示Time Stamp和Key Type(Put/Delete)。Value部分没有这么复杂的结构,就是纯粹的二进制数据了。

    HLogFile

    上图中示意了HLog文件的结构,其实HLog文件就是一个普通的Hadoop Sequence File,Sequence File 的Key是HLogKey对象,HLogKey中记录了写入数据的归属信息,除了table和region名字外,同时还包括 sequence number和timestamp,timestamp是“写入时间”,sequence number的起始值为0,或者是最近一次存入文件系统中sequence number。

    HLog Sequece File的Value是HBase的KeyValue对象,即对应HFile中的KeyValue,可参见上文描述。

    结束

    本文对HBase技术在功能和设计上进行了大致的介绍,由于篇幅有限,本文没有过多深入地描述HBase的一些细节技术。目前一淘的存储系统就是基于HBase技术搭建的,后续将介绍“一淘分布式存储系统”,通过实际案例来更多的介绍HBase应用。


    出自:http://www.searchtb.com/2011/01/understanding-hbase.html

    展开全文
  • HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现,类似Google Bigtable...
  • HBase 系统架构

    2015-01-19 11:46:06
     使用HBase RPC机制与HMaster和HRegionServer进行通信   Client与HMaster进行通信进行管理类操作   Client与HRegionServer进行数据读写类操作   Zookeeper:   Zookeeper Quorum存储-ROOT-表地址、...
  • hbase 系统结构

    2014-10-15 22:04:25
    HBase 系统架构    组成部件说明   Client:   使用HBase RPC机制与HMaster和HRegionServer进行通信   Client与HMaster进行通信进行管理类操作   Client与HRegionServer进行数据读写类操作  ...
  • hbase学习笔记(1)——hbase体系结构

    千次阅读 2013-01-08 18:13:17
    HBase体系结构 HBase的服务器体系结构遵从简单的主从服务器架构,它由HRegion Server群和HBase Master Server构成。 HBase Master Server负责管理所有的HRegion Server,而HBase中所有的服务器都是通过...
  • Hbase体系结构理解

    2015-02-11 01:10:54
    1. Hbase的集群架构 首先hbase是hadoop的一个组件.而hadoop内部有很多的组件,这些组件几乎都依赖于hadoop最... hbase其实就是一个非关系型的数据库系统,可以将他和关系型数据库mysql类比一下,可能会便于理解。 ...
  • HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建大规模结构化的存储集群。HBase的目标是存储并处理大型数据,具体来说是仅需使用普通的硬件配置,就能够处理...
  • HBase(六): HBase体系结构剖析(上) Posted on 2016-09-10 19:37 天戈朱 阅读(3567) 评论(2) 编辑 收藏  HBase隶属于hadoop生态系统,它参考了谷歌的BigTable建模,实现的编程语言为 Java, 建立在hdfs之上,...
  • HBase(七): HBase体系结构剖析(下) Posted on 2016-09-10 22:18 天戈朱 阅读(1019) 评论(0) 编辑 收藏 目录: write Compaction splite read Write: 当客户端发起一个Put请求时,首先根据RowKey寻址,...
  • HBase体系结构(转)

    2017-07-28 15:53:00
    HBase的服务器体系结构遵循简单的主从服务器架构,它由HRegion服务器(HRegion Server)群和HBase Master服务器(HBase Master Server)构成。HBase Master服务器负责管理所有的HRegion服务器,而HBase中所有的服务器...
  • HBase体系结构剖析--上

    2017-11-22 16:40:55
     HBase隶属于hadoop生态系统,它参考了谷歌的BigTable建模,实现的编程语言为 Java, 建立在hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。它仅能通过主键(row key)和主键的range来检索...
  • HBase体系结构剖析--下

    2017-11-24 11:45:45
    目录: writeCompactionspliteread Write: ...当客户端发起一个Put请求时,首先根据RowKey寻址,从hbase:meta表中查出该Put数据最终需要去的HRegionServer客户端将Put请求发送给相应的HRegionSer

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,251
精华内容 17,300
关键字:

hbase体系结构图