当前位置: 首页 > news >正文

【大数据技术Hadoop+Spark】HBase分布式数据库架构、特点、数据存储方式、寻址机制详解(图文解释)

一、HBase简介

HBase起源于2006年Google发表的BigTable论文。HBase是一个高可靠性、高性能、面向列、可伸缩的分布式数据库,利用HBase可在廉价PC服务器上搭建起大规模结构化存储集群。HBase的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。

二、HBase架构

HBase构建在Hadoop HDFS之上,Hadoop HDFS为HBase提供了高可靠的底层存储支持,Hadoop MapReduce为HBase提供高性能的计算能力,Zookeeper为HBase提供稳定服务和容错机制。HBase的整体架构如下所示。

主要节点及其作用如下图所示

 

 

 

 

 

 三、HBase的特点

1)容量巨大:单表可以有百亿行、数百万列。

2)无模式:同一个表的不同行可以有截然不同的列。

3)面向列:HBase是面向列的存储和权限控制,并支持列独立索引。

4)稀疏性:表可以设计得非常稀疏,值为空的列并不占用存储空间

5)扩展性:HBase底层文件存储依赖HDFS,它天生具备可扩展性

6)高可靠性:HBase提供了预写日志(WAL)和副本(Replication)机制,防止数据丢失

7)高性能:底层的LSM(Log-Structured Merge Tree)数据结构和Rowkey有序排列等架构上的独特设计,使得HBase具备非常高的写入性能。

四、HBase数据存储方式

Region在行方向上的存储方式

HBase表的数据按照行键RowKey的字典序进行排列,并且切分多个HRegion存储,存储方式如下所示。

 HRegion的切分方式

每个Region存储的数据是有限的,如果当Region增大到一个阀值(128)时,会被等分切成两个新的Region,切分方式如下所示。

 HRegion的分布方式

一个HRegion Server上可以存储多个Region,但是每个Region只能被分布到一个HRegion Server上,分布方式如下。

五、HBase寻址机制

当HBase表查询数据遵循的是寻址机制,接下来,通过一张图来学习一下HBase的寻址机制,具体如下所示。

Zookeeper中存储的是ROOT表的数据,而ROOT表中存储的是META表的Region信息,也就是所有RegionServer的地址。 

 六、HBase与传统数据库的区别

存储模式

传统数据库中是基于行存储的;而HBase是基于列进行存储的。

表字段

传统数据库中的表字段不超过30个;而HBase中表字段不作限制

可延伸性

传统数据库中的列是固定的,需要先确定列有多少才会增加数据去存储;而HBase是根据数据存储的大小去动态的增加列,列是不固定的。

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章:

  • K8s——Service、代理模式演示(二)
  • 哈希表及其与Java类集的关系
  • CSS基础总结(二)
  • 《Python多人游戏项目实战》第三节 在窗口上显示玩家ID以及对话内容
  • SpringBoot【配置文件】
  • 王卫点赞友商?北京快递保卫战,顺丰彰显大格局大气度
  • 95 C语言初阶练习题
  • Class Charset
  • 深度学习目标检测:YOLOv5实现红绿灯检测(含红绿灯数据集+训练代码)
  • SpringBoot+Vue实现前后端分离的小而学在线考试系统
  • Redis常见面试题(二)
  • Servlet应用(Request+response对象)
  • 蓝桥杯嵌入式 cubeMX生成代码解读
  • 微软确认配置错误导致65,000多家公司的数据泄露
  • 冰刃(IceSword)的使用方法(基础篇)
  • ----------
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 78. Subsets
  • Akka系列(七):Actor持久化之Akka persistence
  • Android交互
  • Angular 4.x 动态创建组件
  • CSS 提示工具(Tooltip)
  • iOS 系统授权开发
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Java 23种设计模式 之单例模式 7种实现方式
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Spring Cloud中负载均衡器概览
  • spring security oauth2 password授权模式
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 软件开发学习的5大技巧,你知道吗?
  • 移动端 h5开发相关内容总结(三)
  • 责任链模式的两种实现
  • ​Linux·i2c驱动架构​
  • #考研#计算机文化知识1(局域网及网络互联)
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $jQuery 重写Alert样式方法
  • (2015)JS ES6 必知的十个 特性
  • (C++)八皇后问题
  • (C++17) std算法之执行策略 execution
  • (Ruby)Ubuntu12.04安装Rails环境
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)计算机毕业设计大学生兼职系统
  • (循环依赖问题)学习spring的第九天
  • (转)大型网站的系统架构
  • (转载)Linux网络编程入门
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .Net程序帮助文档制作
  • @ComponentScan比较
  • @DataRedisTest测试redis从未如此丝滑
  • @hook扩展分析