HBase内容分享(一):HBase简介

目录

Google的三驾马车

Hadoop与Hbase

什么是HBase

HBase的发展历程

HBase特性

容量巨大

类存储

稀疏性

扩展性

高可靠性

Hadoop

HDFS

HDFS基本架构

HDFS-块

HDFS-NameNode

HDFS-SecondaryNameNode

HDFS-DataNode

HDFS-读文件机制

HDFS-写文件机制

HDFS-副本机制

HDFS-容错

HBase系统架构

客户端

ZooKeeper

HMaster

RegionServer

Hbase相关概念

逻辑模型

物理模型

实际存储方式


Google的三驾马车

谈到Hadoop的起源,就不得不提Google的三驾马车:Google FS、MapReduce、BigTable。虽然Google没有公布这三个产品的源码,但是他发布了这三个产品的详细设计论文,奠定了风靡全球的大数据的基础!

GFS —2003 HDFS的理论基础 MapReduce—2004 MapReduce的理论基础 BigTable—2006 Hbase的理论基础

Hadoop与Hbase

01

什么是HBase

HBase(Hadoop Database)是一个开源的、面向列大数据存(Column-Oriented)、适合存储海量非结构化数据或半结构化数据的、具备高可靠性、高性能、可灵活储与管理扩展伸缩的、支持实时数据读写的非关系型分布式数据库。使用Java语言实现,运行在HDFS之上,将HDFS作为底层文件存储系统

HBase 是非关系型数据库,它不具备关系型数据库的一些特点,例如,它不要求数据之间有严格的关系,同时它允许在同一列的不同行中存储不同类型的数据。

HBase的发展历程

Apache HBase最初是Powerset公司为了处理自然语言搜索产生的海量数据而开展的项目

02

HBase特性

容量巨大

HBase的单表可以有百亿行百万列,可以在横向纵向两个维度对数据进OPTION行插入,具有很大弹性。

在限定某个列的情况下对于单表存储百亿或更多的数据都没有性能问题,并且自身能够周期性地将较小文件合并成大文件以减少对磁盘的访问

类存储

HBase是面向列(族)存储的,并且列(族)拥有独立索引,对数据的权限控制也是从列族层面来实现的。

03

稀疏性

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

扩展性

纵向扩展:不断优化主服务器的性能,提高存储空间和性能

横向扩展:不断向集群添加服务器来提供存储空间和性能

HBase是横向扩展的,理论上无限横向扩展

高可靠性

  • 基于HDFS的多副本机制
  • WAL(Write-Ahead-Log)预写机制
  • Replication 机制

WAL(Write-Ahead-Log)预写日志是在 HBase 服务器处理数据插入和删除的过程中用来记录操作内容的日志,保证了数据写入时不会因集群异常而导致写 入数据的丢失;而 Replication 机制是基于日志操作来做数据同步的。

Hadoop

Hadoop是一个分布式的基础架构,实现分布式的存储和分布式的计算,分别对应hadoop的两个核心设计--HDFS和Mapreduce,HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

HDFS

  • HDFS即Hadoop分布式文件系统(储与管理Hadoop Distributed File System)
  • 提供高可靠性和高吞吐量的文件存储服务
  • HDFS可以运行在低成本的硬件之上,通过软件设计来保证系统的可靠性
  • 具有容错性,高可靠性,高可扩展性,高吞吐率。

HDFS基本架构

HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。

01

HDFS-块

  • 块是文件存储处理的逻辑单元
  • HDFS的文件被分成块进行存储
  • HDFS块的默认大小是64MB

分块的好处

  • 支持大规模的文件存储,文件大小不受单点存储容量限制。
  • 简化了系统设计,每个节点存储多少个文件块很容易计算。
  • 适合数据备份,每个分块冗余的备份存储到多个节点。
  • 利于负载均衡,当某个节点处于繁忙状态时,客户端还可以从其他 节点获取这个块的副本。

块大小可自行设置,不能太大,也不宜过小。块太大,不利于副本的存储,块太小导致块数量过多,计算过程中占有的内存多

HDFS-NameNode

  • NameNode,也叫做名称节点。
  • NameNode是主服务器,负责存储文件的储与管理元数据
    • 元数据指的是目录,文件,权限等信息;
    • 文件分块,副本存储等信息(比如一个文件对应哪些块,每块存储节点的位置)
  • Namenode在数据访问时给客户端提供元数据信息,当客户端发起数据请求时,仅仅从NameNode中获取文件的元数据信息,具体的数据传输不经过NameNode,而是直接与具体的DataNode进行交互
  • 与Datanode交互,分配全局的数据存储节点
  • 两个核心的数据结构:fsimageeditlog
    • fsimage(映象文件):用于维护文件系统树以及文件树中所有的文件和文件储与管理 夹的元数据
    • editlog(事务日志):记录了所有针对文件的创建、删除、重命名等操作
  • NameNode启动
    • 在Namenode启动时,fsimage文件的内容会加载到内存中,之后一直处于只读状态,当需要修改元数据时,比如系统中新建了文件等,不能直接修改fsimage文件,而是将这些修改事务写到editlog文件中,editlog文件会定期的合并,形成新的fsimage文件来替代旧的fsimage文件,这个合并工作由另一个组件SecondaryNameNode来完成。

HDFS-SecondaryNameNode

作用:定期的合并editslog和fsimage文件,合并过程会周期性的进行

02

  • Checkpiont:合并的时间点,默认3600秒,或editlog文件达到64M。

HDFS-DataNode

  • 分布式文件系统中的每一个文件,都被切分成若干个数据块,每一个数据块都被存储在不同的服务器上,此服务器称之为数据服务器,这就是DataNode(数据节点)
  • 负责存储数据块
  • 负责为客户端提供数据块的读写服务
  • 响应NameNode的相关指令,比如完成数据块的复制、删除等
  • 定期发送心跳信息给NameNode,告知NameNode当前节点存储的文件块信息

03

HDFS-读文件机制

04

HDFS-写文件机制

05

HDFS-副本机制

  • 默认副本数为3
  • 跨越多个机架
  • 默认副本策略:在HDFS默认3个副本情况下,会把第一个副本放到机架的一个节点上,第二副本放在同一个机架的另一个节点上,第三个节点放在不同的机架上。这种策略减少了跨机架副本的个数,提高了数据块的写性能,也允许一个机架出故障的情况。

HDFS-容错

  • HDFS具有较高的容错性,可以兼容廉价的硬件,它把硬件出错看作一种常态,而不是异常,并设计了相应的机制检测数据错误和进行自动恢复,主要包括以下几种情形:
    • 名称节点出错
    • 数据节点出错
    • 数据出错
  1. NameNode出错:用Secondary NameNode备份的fsimage恢复
  2. DataNode出错:DataNode与NameNode通过“心跳”报告状态,当DataNode失效后,副本数减少,而NameNode会定期检查各节点的副本数量, 检查出问题后会启动数据冗余机制。
  3. 数据出错:在文件被创建时,客户端就会对每一个文件块进行信息摘录,并保存总和校验码,读取时校验。

小结

HDFS:储与管理可以存储大容量的数据文件容错性,故障监测机制,随时发现集群故障节点高可扩展性

HBase系统架构

HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,底层基大数据存储与管理于Hadoop的HDFS来存储数据。 HBase的系统架构包括客户端、Zookeeper服务器、HMaster服务器、和RegionServer服务器这些组件。HBase集群也是主从模式,HMaster是主服务器,regionServer是从服务器,在集群中可允许有多个regionserver。

同时regionserver上有多个region,region是HBase中数据的物理分片。HBase的底层是HDFS的数据节点,HBase中的数据最终是存储在HDFS上的。

01

客户端

  • HBase系统的入口
    • 客户端是任务的发起者;它是整个储与管理HBase系统的入口,使用者直接通过客户 端来操作Hbase。
  • 通信功能
    • 客户端与HMaster进行管理类操作的通信;在获取RegionServer的信息后,直接与RegionServer进行数据读写类操作。
  • 客户端的多种形式
    • HBase 自带的HBase shell使用Java语言来实现的客户端

ZooKeeper

协调的任务

  • Master选举:通过选举机制保证同一个时刻只有一个HMaster处于活跃状态。
  • 系统容错:每个RegionServer在加入集群时都需要到Zookeeper中进行注册,创 建一个状态节点,Zookeeper会实时监控每个RegionServer的状态。
  • Region元数据管理:Region元数据被存储在Meta表中。Meta表是存在Zookeeper中。每次客户端发起新的请求时,需要查下Meta表来获取Region的位置。另外HMaster的地址也由zookeeper告知客户端。
  • Region状态管理:HBase 集群中region 会经常发生变更,变更的原因可能是系 统故障,或者是配置修改,还有region 的分裂和合并。只要region 发生变化,就 需要集群的所有节点知晓,否则就会出现异常。

HMaster

HMaster是HBase集群中的主服务器,负责监控集群中的所有大数据存RegionServer,并且是所有元数据更改的接口储与管理. HMaster主要负责表和region的管理工作

  1. 管理用户对表的增、删、改、查操作
  2. 管理RegionServer的负载均衡,调整region的分布
  3. Region的分配和移除
  4. 在RegionServer宕机或下线后,负责迁移RegionServer上的Region到其他的RegionServer上

HMaster故障不影响当前客户端对数据的访问。但需尽快恢复,避免后续操作的正确性

RegionServer

RegionServer主要负责响应用户的请求,向HDFS中读写数据。一般在分布式集群当中,RegionServer大数据存储与管理运行在DataNode服务器上,实现数据的本地性。每个RegionServer包含多个region,它负责的功能有:

  1. 处理客户端读写请求。
  2. 处理分配给它的region。
  3. regionserver接收到客户端的写数据操作后,将数据缓存至 HDFS中。
  4. 处理Region分片:切片在运行过程中变得过大的Region。
  5. 执行压缩。

Hbase相关概念

  1. 表( table ):HBase采用表来组织数据;同一个表的数据通常是相关的。
  2. 行( row ):每个表都由行组成,每个行由行键( row key )来标识,行键可以是任意字符串;数据存储时,按照行键的字典顺序排序。在检索时,可以通过单个row key来访问数据。
  3. 列族( column family ):一个table有许多个列族,列族是列的集合,属于表结构,也是表的基本访问控制单元;列族支持动态扩展,用户可以很轻松的添加一个列族或列,无须预定义列的数量以及类型。
  4. 列标识(column qualifier):列族中的数据通过列标识column qualifier来进行定位,通常以Column Family:Column Qualifier来确定列族中的某列,注意列族与列表之间用冒号来隔开。另外列标识是可以根据需要动态添加的。
  5. 时间戳( timestamp ):时间戳用来区分数据的不同版本;即每个单元格保存着同一份数据的多个版本,默认情况下,每一个单元格中的数据插入时都会用时间戳来进行版本标识。读取单元格数据时,如果时间戳没有被指定,则默认返回最新的数据,写入新的单元格数据时,如果没有设置时间戳,默认使用当前时间。
  6. 单元格( cell ):在table中,通过行、列族、列、时间戳来确定一个单元格,单元格中存储的数据没有数据类型,以二进制字节来存储,每个单元格保存着同一份数据的多个版本,不同时间版本的数据按照时间的顺序排序,最新时间的数据排在最前面。通过<RowKey,Column Family: Column Qualifier,Timestamp>元组来访问单元格。

逻辑模型

01

关系型数据库特点:

  • 表结构预先定义;
  • 同一列的数据类型相同;
  • 空值占用存储空间

HBase特点:

  • 只需要定义表名和列族可以动态添加列族和列
  • 数据都是字符串类型
  • 空值不占用存储空间

物理模型

02

实际存储方式

03

04

表中的数据按照行键的字典序分成多个region存在不同的regionserver

05

原文地址:https://blog.csdn.net/qq_45038038/article/details/134832886

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读301次。你可以使用Thrift客户端来测试HBase Thrift服务。例如,在Python中,你可以使用。请确保你的HBase伪集群已正确配置并且Thrift服务已经启动。这将在你的伪集群中启动HBase Thrift服务。库或者直接使用Thrift接口。进入HBase的安装目录,找到。请根据需要进行相应的配置。这将停止Thrift服务。_hbase 单机 thrift 配置
文章浏览阅读565次。hive和hbase数据迁移_hive转hbase
文章浏览阅读707次。基于单机版安装HBase,前置条件为Hadoop安装完成,安装Hadoop可以参考链接,Hadoop单机安装。地址:https://dlcdn.apache.org/hbase/2.4.13/hbase-2.4.13-src.tar.gz2.解压缩文件3.进入到conf目录下4.修改配置文件 hbase-env.sh示例:示例:6.修改配置文件 hbase-site.xml示例:8.访问页面访问你所以在服务器的16010端口,查看页面以上就是单机版安装HBase的内容,后续_hbase 2.4.13下载
文章浏览阅读301次。linux集群搭建-HBase_linux中在/home目录下创建目录hbase
文章浏览阅读933次。中没有库的概念,说一个数据说的是哪一个名称空间下的那一张表下的哪一个行键的哪一个列族下面的哪一个列对应的是这个数据。注意:put数据需要指定往哪个命名空间的哪个表的哪个rowKey的哪个列族的哪个列中put数据,put的值是什么。注意:put数据需要指定往哪个命名空间的哪个表的哪个rowKey的哪个列族的哪个列中put数据,put的值是什么。注意:put数据需要指定往哪个命名空间的哪个表的哪个rowKey的哪个列族的哪个列中put数据,put的值是什么。操作Hbase系统DDL,对名称空间等进行操作。_hbase中报错undefined method for main:object
文章浏览阅读1k次,点赞16次,收藏21次。整理和梳理日常hbase的监控核心指标,作为经验沉淀_hbase 对应promethus指标名
文章浏览阅读1.5k次,点赞45次,收藏20次。今天把之前学习Hbase的入门基础知识笔记翻出来了,为了不忘记也是帮助身边的小伙伴,我把他又整理了下放了出来给大家,希望对HBASE一知半解的小伙伴,能够对Hbase有一个清晰的认识,好了废话不多说,进入正题。以上内容就是初的识HBase 入门知识,包含了hbase的由来,特性,物理存储,逻辑存储模型,以及优缺点,应用场景这些内容,相信后面在使用或更深入的研究Hbase打下了良好的基础,后面的更深入的学习内容,看计划安排在后面的文章中进行更新。
文章浏览阅读655次。HDFS,适合运行在通用硬件上的分布式文件系统,是一个高度容错性的系统,适合部署在廉价的机器上。Hbase,是一个分布式的、面向列的开源数据库,适合于非结构化数据存储。MapReduce,一种编程模型,方便编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。Chukwa,是一个开源的用于监控大型分布式系统的数据收集系统。_开源非结构化数据存储
文章浏览阅读1.9k次。mongodb和hbase的区别和应用场景_hbase和mongodb的区别
文章浏览阅读1.2k次。Hbase入门篇01---基本概念和部署教程_hbase教程
文章浏览阅读1.6k次,点赞19次,收藏25次。hbase相关内容
文章浏览阅读942次,点赞16次,收藏20次。在hbase1.x中transition是令广大大数据运维人员头疼的一个话题,因为,region 的状态转移涉及到了三个核心组件,分别为:hbase master,zookeeper和hbase 的regionserver,这三个组件中的某一个region的状态都是一致的情况下,这个region 才算是正常,状态转移过程及其复杂,hbase 集群很容易出现RIT。好消息是,hbase2.x中有个工具HBCK2,这个工具可不是简单的hbase1.x中hbck 的升级,变化有点大,详细变化请参考帮助文档(
文章浏览阅读1k次。在HBase中,Region分裂是一种自动的机制,用于在Region大小达到一定阈值时将其分裂成两个Region,以便更好地管理数据。HBase中的Region大小是可以配置的,通过设置HBase表的最小和最大Region大小来控制。需要注意的是,禁止Region分裂后,当表的大小达到一定阈值时,数据将不再分裂成新的Region,因此需要根据实际需求进行调整。需要注意的是,禁止Region分裂后,当表的大小达到一定阈值时,数据将不再分裂成新的Region,因此需要根据实际需求进行调整。_hbase region大小
文章浏览阅读737次。可以看出,HBase作为数据仓库的一种补充,可以用于存储和管理大量数据,以便快速地分析和查询。是一种基于数据库的形式,用于存储和管理大量数据,以便快速地分析和查询。例如,可以使用HBase存储一些用户行为数据,然后进行分析,以便更好地了解用户行为和需求。其次,需要配置HBase相关的环境变量,例如JAVA_HOME、HBASE_HOME等。HBase可以用于存储结构化和非结构化数据,包括文本、图像、视频等。例如,可以使用HBase存储一些传感器数据,然后进行实时分析和处理。一、HBase集群环境搭建。_用hbase 搭建数仓
文章浏览阅读1.9k次。Data。_springboot整合hbase
文章浏览阅读880次,点赞23次,收藏20次。etc/abrt下的两个文件,分别是:abrt-action-save-package-data.conf 和 abrt.conf,修改内容如下。我们后面排查的时候去查看/run/cloudera-scm-agent/process/2325-hbase-REGIONSERVER下是否有。发现有个hs_err_pid15967.log JVM生成的错误日志,那么把这个日志下载查看,返现日志这么写的。接下来就等下一次hbase的节点挂了之后查看转储文件,转储文件在/var/sqool/abrt下。_regionserver 退出 没有错误日志
文章浏览阅读1.7k次。以下命令都需要在Hbase Shell中运行:Hbase信息status:服务器状态version:版本表操作查看所有表:list表基本信息:describe "表名称"查看表是否存在:exists '表名称'创建表:create '表名称', '列族1', '列族2', '列族3'删除表:首先禁用表:disable '表名称'然后删除表:drop '表名称'修改表:表数据操作查看所有数据:scan "表名称"..._hbase sehll怎么看登录的是哪个hbase
文章浏览阅读885次,点赞18次,收藏21次。在HBase中执行查询操作通常使用HBase Shell或编程语言API(如Java或Python)来执行。使用编程语言API,您可以使用相应的HBase客户端库来执行查询操作。这是一个简单的Java代码示例,演示了如何使用HBase Java API进行单行查询。这些示例仅为基本查询操作,HBase Shell还提供其他高级查询功能,如按时间戳过滤,使用正则表达式进行查询等。请注意,这只是HBase查询的基本示例,您可以根据实际需求和HBase的数据模型进行更复杂的查询操作。
文章浏览阅读7.3k次,点赞7次,收藏28次。找到hbase的bin目录并进入,执行启动hbase hmaster命令。问题原因 hmaster挂了 ,需要重新启动hmaster才行。hbase shell输入命令出现如下问题。_keepererrorcode = nonode for /hbase/master
文章浏览阅读1.3k次。三次信息化浪潮。_大数据应用开发技术笔记