热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

什么是HBase?

 HBase介绍   一、什么是HBase?1.HBase–HadoopDatabase,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库 2.HBASE是Googl
 HBase 介绍

 

  一、什么是HBase

1.HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库 

2. HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable使用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统;Google运行MAPREDUCE来处理Bigtable中的海量数据,HBASE同样利用Hadoop MapReduce来处理HBASE中的海量数据;Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为协同服务。

3.HBase是一个分布式存储、数据库引擎,可以支持千万的QPS、PB级别的存储,这些都已经在生产环境验证,并且在广大的公司已经验证。特别是阿里(淘宝、天猫、蚂蚁金服)、小米米聊、小米云、小米推送服务)、京东、滴滴内部都有数千、上万台的HBase集群。Hbase PMC。阿里1个。 Hbase Committer。阿里4个,小米4个。 2016年双11,HBase承载访问量达到了上百GB/秒(写入)与上百GB/秒(读取),相当于全国人民一秒收发一条短信,在业务记录、安全风控、实时计算、日志监控、消息聊天等多个场景发挥重要价值。

   二、哪些是HBase的特点?

1.存储数据量大:一个表可以有上亿行,上百万列。

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

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

4.无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。

5.数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。

6.数据类型单一:HBase中的数据都是字符串,没有类型。

   三、HBase与传统数据库的比较

    MySQL:关系型数据库,主要面向OLTP(面向交易的处理过程),支持事务,支持二级索引,支持sql,支持主从、支持存储引擎)。

HBase:基于HDFS,支持海量数据读写(尤其是写),支持上亿行、上百万列的,面向列的分布式NoSql数据库。天然分布式,主从架构,不支持事务,不支持二级索引,不支持sql, 不支持条件查询和Order by等查询。

1.数据存储方式

MySQL中要提前定义表结构,也就是说表共有多少列(属性)需要提前定义好,并且同时需要定义好每个列所占用的存储空间。数据以行为单位组织在一起的,假如某一行的某一列没有数据,也需要占用存储空间。

HBase则是以列为单位存储数据,每一列就是一个key-value,HBase的表列(属性)不用提前定义,而且列可以动态扩展,比如人员信息表中需要添加一个新的“address”字段,MySQL需要提前alter表,HBase的话直接插入即可。

2. 数据类型:

HBase只有简单的字符类型,它只保存字符串。而关系数据库有丰富的类型和存储方式。

3. 数据操作:

HBase只有很简单的插入、查询、删除、清空等操作,表和表之间是分离的没有复杂的表和表之间的关系,而传统数据库通常有各式各样的函数和连接操作。  

  4.超大数据量

        当数据量越来越大,RDBMS数据库撑不住了,就出现了读写分离策略,通过一个Master专门负责写操作,多个Slave负责读操作,服务器成本倍增。随着压力增加,Master撑不住了,这时就要分库了,把关联不大的数据分开部署,一些join查询不能用了,需要借助中间层。随着数据量的进一步增加,一个表的记录越来越大,查询就变得很慢,于是又得搞分表,比如按ID取模分成多个表以减少单个表的记录数。经历过这些事的人都知道过程是多么的折腾。采用HBase就简单了,只需要加机器即可,HBase会自动水平切分扩展,跟Hadoop的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce)。

四、HBase基本术语的理解

     1.Row Key:可以看成表中每条记录的主键,方便快速查找。

2.Column family:拥有一个名称,包含一个或多个相关的列称为列族。

3.Column:属于某一个Column family,包含在某一列中。

4.Cell:通过Row Key、Column family和Column 可以定位到该cell。

5.Version number:cell 中存放了多个版本的内容,每个row key 唯一,默认系统时间戳

 

五、HBase的体系架构都有哪几部分?

 

 

 

 

 

 

 

1.Client使用HBase RPC机制与HMaster和HRegionServer进行通信

Client与HMaster进行管理类操作

Client与HRegionServer进行数据读写类操作也可以看做是整个HBase集群的入口

 

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

管理用户对表的增删改查操作

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

Region Split后,负责新Region的分布

在HRegionServer停机后,负责失效HRegionServer上Region迁移

3.Zookeeper:维护HBase集群,Master与RegionServers启动时会向Zookeeper注册。集群内可以有多个Master,但是ZK保证只有一个对外提供服务,其他做Stand by,出现宕机有相应的选举机制选出新Master

4.Region Server:对于一个RegionServer而言,其包括了多个Region。RegionServer的作用是维护Master分配给他的region,以及实现读写IO操作。Client通过ZK寻址,最终也是直接连接RegionServer实现读取数据。

5.Region:table在行的方向上分隔为多个region,不同的region可以分别在不同的Region Server上。随着数据不断插入表,region不断增大,当region的某个列族达到一个阈值时就会分成两个新的region。

对Region的解析:

(1)Store:每一个region由一个或多个store组成,一个store存放一个列族,如果有几个ColumnFamily,也就有几个Store。一个Store由一个memStore和0或者 多个StoreFile组成。HBase以store的大小来判断是否需要切分region。

(2)MemStore:存放在内存中,保存修改的数据。当memStore的大小达到一个阀值(默认128MB)时,memStore会被flush到StoreFile。

(3)StoreFile:MemStore快照后存储在StoreFile中,其底层是以HFile的格式保存。

(4)HFile:HFile是Hadoop的二进制格式文件,就是按照一定的结构存储信息。

(5)HLog(WAL log):WAL意为write ahead log,用来做灾难恢复使用。每个RegionServer中都会有一个HLog的实例,会将RegionServer的所有更新操作记录在HLog中,一旦regionServer宕机,就可以从log中进行恢复。

HBase基本体系架构从宏观上理解:Client作为API接口,访问HBase;Master是整个集群的大脑,负责维护RegionServer;RegionServer管理若干个Region,并实现与Client的数据通信;Region是逻辑上分布式存储和负载均衡的最小单元;Zookeeper实现对集群的监护和HA。

从微观上理解Region,一个table会至少有一个Region,随着数据量的增大,Region实现分裂。Region内部由多个Store构成,每个Store存储一个列族。Store又由MemStore、StoreFile构成,MemStore内存写到一定程度后落磁盘到StoreFile。

读流程

 

1) Client访问Zookeeper,查找-ROOT-表,获取.META.表信息;

2) 从.META.表查找,获取存放目标数据的Region信息,从而找到对应的RegionServer;

3) 通过RegionServer获取需要查找的数据;

4) RegionServer的内存分为MemStore和BlockCache两部分,MemStore主要用于写数据,BlockCache主要用于读数据。读请求先到MemStore中查数据,查不到就到BlockCache中查,再查不到就会到StoreFile上读,并把读的结果放入BlockCache。

寻址过程:client—>Zookeeper—>ROOT表—>.META. 表—>RegionServer—>Region—>client


推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
  • Hadoop源码解析1Hadoop工程包架构解析
    1 Hadoop中各工程包依赖简述   Google的核心竞争技术是它的计算平台。Google的大牛们用了下面5篇文章,介绍了它们的计算设施。   GoogleCluster:ht ... [详细]
  • 我们在之前的文章中已经初步介绍了Cloudera。hadoop基础----hadoop实战(零)-----hadoop的平台版本选择从版本选择这篇文章中我们了解到除了hadoop官方版本外很多 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • 我们有(据我所知)星型模式SQL数据库中的数据文件。该数据库有5个不同的文件,扩展名为 ... [详细]
  • 本文介绍了一个误删Oracle数据文件导致数据库无法打开的问题,并提供了解决方式。解决方式包括切换到mount状态、离线删除报错的数据文件等。 ... [详细]
  • 11月26日,由中国计算机协会(CCF)主办,CCF大数据专家委员会协办,CSDN承办的Hadoop与大数据技术大会(Hadoop&BigDataTechnology ... [详细]
author-avatar
晕晕的劳拉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有