热门标签 | 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


推荐阅读
  • 分布式一致性算法:Paxos 的企业级实战
    一、简介首先我们这个平台是ES专题技术的分享平台,众所周知,ES是一个典型的分布式系统。在工作和学习中,我们可能都已经接触和学习过多种不同的分布式系统了,各 ... [详细]
  • 开发心得:利用 Redis 构建分布式系统的轻量级协调机制
    开发心得:利用 Redis 构建分布式系统的轻量级协调机制 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 【漫画解析】数据已删,存储空间为何未减?揭秘背后真相
    在数据迁移过程中,即使删除了原有数据,存储空间却未必会相应减少。本文通过漫画形式解析了这一现象背后的真相。具体来说,使用 `mysqldump` 命令进行数据导出时,该工具作为 MySQL 的逻辑备份工具,通过连接数据库并查询所需数据,将其转换为 SQL 语句。然而,这种操作并不会立即释放存储空间,因为数据库系统可能保留了已删除数据的碎片信息。文章进一步探讨了如何优化存储管理,以确保数据删除后能够有效回收存储空间。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 在搭建Hadoop集群以处理大规模数据存储和频繁读取需求的过程中,经常会遇到各种配置难题。本文总结了作者在实际部署中遇到的典型问题,并提供了详细的解决方案,帮助读者避免常见的配置陷阱。通过这些经验分享,希望读者能够更加顺利地完成Hadoop集群的搭建和配置。 ... [详细]
  • 构建高可用性Spark分布式集群:大数据环境下的最佳实践
    在构建高可用性的Spark分布式集群过程中,确保所有节点之间的无密码登录是至关重要的一步。通过在每个节点上生成SSH密钥对(使用 `ssh-keygen -t rsa` 命令并保持默认设置),可以实现这一目标。此外,还需将生成的公钥分发到所有节点的 `~/.ssh/authorized_keys` 文件中,以确保节点间的无缝通信。为了进一步提升集群的稳定性和性能,建议采用负载均衡和故障恢复机制,并定期进行系统监控和维护。 ... [详细]
  • 【并发编程】全面解析 Java 内存模型,一篇文章带你彻底掌握
    本文深入解析了 Java 内存模型(JMM),从基础概念到高级特性进行全面讲解,帮助读者彻底掌握 JMM 的核心原理和应用技巧。通过详细分析内存可见性、原子性和有序性等问题,结合实际代码示例,使开发者能够更好地理解和优化多线程并发程序。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 本文详细介绍了HDFS的基础知识及其数据读写机制。首先,文章阐述了HDFS的架构,包括其核心组件及其角色和功能。特别地,对NameNode进行了深入解析,指出其主要负责在内存中存储元数据、目录结构以及文件块的映射关系,并通过持久化方案确保数据的可靠性和高可用性。此外,还探讨了DataNode的角色及其在数据存储和读取过程中的关键作用。 ... [详细]
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
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社区 版权所有