HBase架构和部署(超级详细)

这篇具有很好参考价值的文章主要介绍了HBase架构和部署(超级详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

N.1 HBaes介绍

N.1.1 HBase简介

1)HBase是一个分布式的、面向列的开源数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

(1)关系型数据库:

————————————————————————

hbase 部署,# dataBase大全,hbase,架构,大数据

————————————————————————

(2)非关系型数据库:

————————————————————————

hbase 部署,# dataBase大全,hbase,架构,大数据

————————————————————————

2)行式存储倾向于结构固定,列式存储倾向于结构弱化。

3)行式存储一行数据只需一份主键,列式存储把一行拆多行数据每行都有主键。

4)面向列的存储和权限控制,列(簇)独立检索。

5)稀疏:对于为空(null)的列,并不占用存储空间,因此,表的设计的非常的稀疏。

N.2 HBase架构

1)首先我们要知道HBase储存底层就是HDFS存储。

(这里的单词前面H表示Hadoop的意思,也可以省略)

2)一个HRegionServer可以包含多个HRegion,每个HRegionServer维护一个HLog,和多个HRegion。RegionServer运行于DataNode上,数量可以与DatNode数量一致。

(1)HMater(只能有一个active)类似于NameNode;

(2)HRegionServer类似于DataNode;

(3)HRegion是一张分区表,类似DataNode的数据块的切片;

(4)Store是分区表的某一些字段,即数据块的部分列簇;

(5)HFile就是Store里面的数据,storeFile是对HFile的包装,可以简单认为HFile是表的列簇

行数据和块索等引组成。

(6)Hlog和MemStore,是给用户读写数据用的。

————————————————————————

hbase 部署,# dataBase大全,hbase,架构,大数据

————————————————————————

N.2.1 HMaster

1)功能:

(1)监控HRegionServer

(2)处理HRegionServer故障转移,迁移HRegionServer

(3)处理元数据的变更

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

(5)在空闲时间进行数据的负载均衡,管理HRegionServer的负载均衡,调整Region分布

(6)通过Zookeeper发布自己的位置给客户端

(7)HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行

N.2.2 HRegionServer

1)功能:

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

(2)负责存储HBase的实际数据

(3)处理分配给它的HRegion

(4)刷新缓存到HDFS  

(5)维护HLog

(6)执行压缩

(7)负责处理HRegion分片

2)组件:

(1) Write-Ahead logs

HBase的修改记录,当对HBase写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解 决这个问题,数据操作等先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。 

(2) HRegion(和split类似)

HBase表的分片,HBase表会数据过多会被切分成不同的HRegion并存储在HRegionServer中,在一个HRegionServer中可以有多个不同的HRegion。

(3) Store(column family)

HStore存储是HBase存储的核心了,其中由两部分组成,一部分是MemStore,一部分是StoreFiles

一个Store对应HBase表中的一个列簇(列簇有多个列组成, 表如果有很多个字段(列),就可能分成好多个列簇)。

(4)HLog

每个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类,在每次用户操作写入MemStore的同时, 也会写一份日志到HLog文件中(注意,日志不是那些真正的数据,记入了一些行为记录。HLog文件定期会滚动(多个小日志)出新的

(5) MemStore & StoreFiles

[1] MemStore

顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当日志信息保存在 Write-Ahead logs中之后,HRegsionServer会在内存中存储键值对。 

HStore存储是HBase存储的核心了,其中由两部分组成,一部分是MemStore,一部分是StoreFiles(即HFile,可以类似认为一个字段的所有数据,也可能是多个字段,主要看多少数据) MemStore是Sorted Memory Buffer,

[2] StoreFiles

用户写入的数据先log,后MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile),当StoreFile文件数量增长到一定阈值,会触发Compact合并操作,将多个StoreFiles合并成一个StoreFile,合并过程中会进行版本合并和数据删除,因此可以看出HBase其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBase I/O的高性能。(所以如果是写比较多的话,就使用一个Store好,即列簇少点,这样内存刷新落盘的次数比较少。如果是读多的话可以使用多个Store,即列簇多点,因为这样可以准确定位,避免全部扫描)。

compact机制则是把flush出来的小文件合并成大的Storefile文件。当单个StoreFile大小超过一定阈值后,会触发Split操作,同时把当前HRegion Split拆成2个HRegion被HMaster分配到相应的HRegionServer上,使得原先1个HRegion的压力得以分流到2个HRegion上

————————————————————————

hbase 部署,# dataBase大全,hbase,架构,大数据

————————————————————————

(6)HFile

这是在磁盘上保存原始数据的实际的物理文件,

是实际的存储文件。HFile存储在StoreFile中,一对一关系,相当于包装了一下。

可以简单认为HFile是表的几行数据。storefile包装的一行数据。

Hfile的结构:dataBlock的大小是64KB;

————————————————————————

hbase 部署,# dataBase大全,hbase,架构,大数据

————————————————————————

N.2.3 Compact

1)Compact的作用:

在Memstore超过一定的阈值的时候,就要新开一个进程将Memstore flush到storefile中,新的Memstore继续写入接受到的数据,当storefile越来越多时,就会降低读的性能,为了提高读的性能,可以对这些storefile进行compact操作,形多个storefile合并成一个大的storefile,那么compact就需要对HBase的数据进行多次的重新读写,这将产生大量的IO操作,所以Compact操作就是以IO操作来换取后面读的性能。当storefile数量超过3时,会启动compaction过程将它们合并为⼀个storefile

2)Compaction 分类:

在完成 Compaction 后,HFile 文件数量减少,文件大小减小,能够显著提高读数据的效率。其中 (1)Compaction 方式又分为两种:

[1] MinorCompaction小合并

只对部分的StoreFile(HFile)做合并成一个StoreFile(HFile),对TTL(TimeToLive存活时间)过期数据设置过期清理,不会对文件内容进行清除操作工作。

[2] MajorCompaction大合并

是对所有StoreFile(HFile)合并为一个大文件,并且清除删除、过期、多余版本的数据在企业中,MajorCompaction 时间会持续比较长,整个过程会消耗大量系统资源,对上层业务有比较大的影响,一般也是配置了一个datacube.hregion.majorcompaction=0,这是配置major的合并周期(默认为7天),很多集群配置成一天,如果配置成0即关闭Major合并。

N.2.4 HBase数据恢复原理

0)HLog的整个生命历程可以使用下面一张图来表示

————————————————————————

hbase 部署,# dataBase大全,hbase,架构,大数据

————————————————————————

1)第一步 HLog滚动 

HBase后台启动了一个线程会每隔一段时间(由参数’hbase.regionserver.logroll.period’决定,默认1小时)进行日志滚动,即新生成一个新的日志文件。可见,HLog日志文件并不是一个大文件,而是会产生很多小文件,最早的部分日志完全可以被删掉。而删除数据最好是一个文件整体删除,因此设计了日志滚动机制(滚动出多个日志),方便日志的整体删除。

2)Hlog回滚机制(数据恢复)

HMaster首先会处理遗留的 HLog文件,将其中不同HRegion的Log数据进行拆分,然后再将失效的HRegion重新分配,领取 到这些HRegion的HRegionServer在Load HRegion的过程中,会发现有历史HLog需要处理,重新将HLog中的数据加载到MemStore中,然后flush到StoreFiles,完成数据恢复

3)第二步 HLog失效 

(1)上文提到,很多日志在之后会因为失效进而可以被删除,并且删除操作是以文件为单元执行的。那怎么判断一个日志文件里面的数据失效了呢?首先从原理上讲一旦数据从Memstore中落盘,对应的日志就可以被删除,因此一个文件所有数据失效,只需要看该文件中最大sequenceID对应的数据是否已经落盘就可以,HBase会在每次执行flush的时候纪录对应的最大的sequenceid(不同HRegion的sequenceid相互独立),如果前者小于后者,则可以认为该日志文件失效(前者小于后者是操作成功的标志,如果不成功,重新进行任务,直到前者小于后者,该日志失效。

(2)可以"类似"的认为sequenceID相当于文本的偏移量一样,文本最后的偏移量一定是最大的, 如果写完后把实际的偏移量与最大的比较下,若实际偏移量等于最大偏移量的说明写成功了。一旦判断失效就会将该文件从Write-Ahead logs文件夹移动到OldWrite-Ahead logs文件夹。 

4)第三步 HLog删除 

HMaster后台会启动一个线程每隔一段时间(由参数’hbase.master.cleaner.interval’,默认1分钟)会检查一次文件夹OldWALs下的所有失效日志文件,确认是否可以被删除,确认之后执行删除操作。

那问题来了,刚才不是已经确认可以被删除了吗?这里基于两点考虑, 到达两次失效失效,HLog会进行删除。

(1)对于使用HLog进行主从复制的业务来说,HLog失效 确认并不完整,需要继续确认是否该HLog还在应用于主从复制;

(2)对于没有执行主从复制的业务来讲,HBase依然提供了一个过期的TTL(由参数’hbase.master.logcleaner.ttl’决定,默认10分钟),也就是说OldWALs里面的文件最多依然再保存10分钟。

N.3 HBase部署

0)前提环境

安装 Java、SSH 和 HadoopHDFS 以后。

如果hbase单机安装是可以不安装hadoop的,但是如果要分布式安装,就需要安装haoop.

1)HBase的解压

解压HBase到指定目录:

tar -zxvf /softWare/hbase-1.3.1-bin.tar.gz -C /softWare

配置环境变量

2) HBase的配置文件

(1)hbase-env.sh修改内容:

export JAVA_HOME=/softWare/jdk1.8.0_144

export HBASE_MANAGES_ZK=false

(2)hbase-site.xml修改内容:

        <property>  

                 <name>hbase.rootdir</name>  

                 <value>hdfs://bigData111:9000/hbase</value>  

        </property>

        <property>

                 <name>hbase.cluster.distributed</name>

                 <value>true</value>

        </property>

        <property>

                 <name>hbase.master.port</name>

                 <value>16000</value>

        </property>

        <property>  

                 <name>hbase.zookeeper.quorum</name>

                <value>bigData111:2181,bigData1112:2181,bigData1113:2181</value>

        </property>

        <property>  

                 <name>hbase.zookeeper.property.dataDir</name>

         <value>/softWare/zookeeper-3.4.10/zkData</value>

        </property>

<property>

<name>hbase.master.maxclockskew</name>

<value>180000</value>

</property>

(3)conf/regionserver文件添加域名:

bigdata111

bigdata112

bigdata113

3)配置环境变量

vi /etc/profile

export HBASE_HOME=/softWare/hbase-1.3.1

export PATH=$HBASE_HOME/bin:$PATH

source /etc/profile

4) HBase远程scp到其他集群

scp -r /softWare/hbase-1.3.1/ bigdata112:/softWare/

scp -r /softWare/hbase-1.3.1/ bigdata113:/softWare/

5)HBase服务的启动

(1)启动方式1:

bin/hbase-daemon.sh start master

bin/hbase-daemon.sh start regionserver

尖叫提示:如果集群之间的节点时间不同步,会导致regionserver无法启动,抛出ClockOutOfSyncException异常。

(2)启动方式2:

start-hbase.sh

对应的停止服务:

stop-hbase.sh

6)查看Hbse页面

http://bigData111:16010查看能否进入hbase页面

http://bjigData111:50070查看是否生成目录hbase

7) Zookeeper中hbase的节点的存储信息(此步骤可略)

(1)rs:regionserver节点信息,命令 ls /hbase/rs

(2)table-lock:hbase的除meta以外的所有表,ls /hbase/table-lock

(3)Table:hbase的所有的表,ls /hbase/table

(4)注:HBase运行了一段时出现自动停止进程,情况如下:

[1] 时间没有同步(解决:将时间同步起来)

[2] zookeeper异常

(5)解决:删除zookeeper的HBase节点、删除hdfs的 /HBse的目录,

删除每个HBase的每一个log日志,重新启动

(6)特别注意,开启HBase进程,电脑最好不要待机,会导致自动关闭进程,一旦出现了一次,要么重新安装要么按方法二处理。文章来源地址https://www.toymoban.com/news/detail-765199.html

到了这里,关于HBase架构和部署(超级详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HBase基础知识(一):HBase简介、HBase数据模型与基本架构

    HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。 逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像是一个 multi-dimensionalmap 。 1.2.1HBase逻辑结构 字典序:按位比较。 下图是一张表

    2024年02月03日
    浏览(40)
  • HBase【部署 01】CentOS 7.5 部署 hbase-2.4.5 单机版standalone模式(详细安装+配置+增删改查测试脚本)(附开源镜像站地址)

    HBase的 官网 内容还是挺多的,下载安装包还是使用 清华大学开源软件镜像站 会快一些 ⚡️ 本文的安装文件为:hbase-2.4.5-bin.tar.gz HBase 是一个构建在 Hadoop 文件系统之上的面向列的数据库管理系统。运行时不仅需要 Hadoop 还依赖 JDK 环境,HBase 2.0+ 以上版本不再支持 JDK 1.7 ,需

    2024年04月11日
    浏览(47)
  • 大数据课程G2——Hbase的基本架构

    文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州 ⚪ 掌握Hbase的基本架构; ⚪ 掌握Hbase的读写流程; ⚪ 掌握Hbase的设计与优化; 1. 在HBase 中,会将一个表从行键方向上进行切分,切分成1个或者多个HRegion。 2. 切分之后,每一个HRegion都会交给某一个HRegionServe

    2024年02月14日
    浏览(32)
  • 大数据HBASE的详细使用

    摘要:本文将深入探讨大数据HBASE的使用步骤,帮助读者了解和掌握这一强大的分布式数据库系统的基本概念和操作技巧。通过本文的阅读,读者将能够熟悉HBASE的基本设置,了解其核心概念,掌握基本的查询和管理操作,并理解其在大数据环境中的应用场景。 HBASE是一种开源

    2024年02月10日
    浏览(37)
  • 大数据NoSQL数据库HBase集群部署

    目录 1.  简介 2.  安装 1. HBase依赖Zookeeper、JDK、Hadoop(HDFS),请确保已经完成前面 2. 【node1执行】下载HBase安装包 3. 【node1执行】,修改配置文件,修改conf/hbase-env.sh文件 4. 【node1执行】,修改配置文件,修改conf/hbase-site.xml文件 5. 【node1执行】,修改配置文件,修改conf/regi

    2024年02月08日
    浏览(54)
  • 开源大数据集群部署(十四)Ranger集成Hbase

    作者:櫰木 在hd1.dtstack.com主机上执行 在hmaster和back master上进行安装和执行 解压ranger-2.3.0-hbase-plugin 配置ranger hbase插件的install.properties 初始化ranger hbase 重启hbase服务 Ranger admin页面配置hbase 访问地址:http://hd1.dtstack.com:6080/ 用户密码:admin/rangerAdmin123 测试连通性,连接成功后保

    2024年03月21日
    浏览(46)
  • HBase在大数据集群的安装部署及整合Phoenix

    前提:需要保证三台虚拟机hadoop102-104已经部署好基本配置。未完成的可以参考:https://blog.csdn.net/weixin_73195042/article/details/135886619 上传HBase安装包到/opt/software文件夹内 配置环境变量 在末尾添加 使用 source 让配置的环境变量生效 将环境变量分发到其他虚拟机上,并且也要sour

    2024年04月27日
    浏览(50)
  • 《Hadoop核心技术》Hbase集群部署,创建表,删除表,插入数据,查询数据

    额前言:         我是一名正在学习《Hadoop核心技术》的学生,今天跟大家分享一下在虚拟机上在Hadoop集群中用Hbase进行简单的增删查 可以进行随机访问的存取和检索数据的存储平台         HBase 是一个开源的、分布式的、版本化的 NoSQL 数据库(也即非关系型数据库

    2024年02月03日
    浏览(53)
  • 大数据开源框架环境搭建(五)——Hbase完全分布式集群的安装部署

    目录 实验环境: 实验步骤: 〇、Zookeeper安装配置: 一、安装前注意事项 二、HBase安装  三、Hbase集群配置 1.配置hbase-env.sh文件,位于Hbase安装目录/conf/ 2.配置hbase-site.xml文件,位于Hbase安装目录/conf/ 3.配置regionservers 4.新建 backup-masters文件,添加备份HMaster机器名 四、将配置好

    2024年02月08日
    浏览(45)
  • HBase架构篇 - Hadoop家族的天之骄子HBase

    HBase 的数据存储在表中。表名是一个字符串。表由行和列组成。 HBase 的行由行键(rowkey)和 n 个列(column)组成。行键没有数据类型,可以看作是字节数组,类似于关系型数据库的主键索引,在整个 HBase 表中是唯一的,按照字母顺序排序。 HBase 的列族由多个列组成,相当于

    2023年04月20日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包