分布式数据库HBase

文章目录


前言

一、HBase概述

1.1.1 什么是HBase

  • HBase是一个分布式的、面向列的开源数据库
  • HBase是Google BigTable的开源实现
  • HBase不同于一般的关系数据库, 适合非结构化数据存储
  • HBase是一种分布式、可扩展、支持海量数据存储的 NoSQL数据库。
  • HBase是依赖Hadoop的。为什么HBase能存储海量的数据?因为HBase是在HDFS的基础之上构建的,HDFS是分布式文件系统。
  • HBase在HDFS之上提供了高并发的随机写和支持实时查询,这是HDFS不具备的。
  • 基于「列式存储」,存储数据的“结构”可以地非常灵活。
1.1.2 BigTable
  • BigTable是Google设计的分布式数据存储系统,用来处理海量的数据的一种非关系型的数据库。
    • 适合大规模海量数据,PB级数据;
    • 分布式、并发数据处理,效率极高;
    • 易于扩展,支持动态伸缩
    • 适用于廉价设备;
    • 不适用于传统关系型数据的存储;
1.1.4 什么是非结构化数据存储
  • 结构化数据
    • 适合用二维表来展示的数据

  • 非结构化数据
    • 非结构化数据是数据结构不规则或不完整
    • 没有预定义的数据模型
    • 不方便用数据库二维逻辑表来表现
    • 办公文档、文本、图片、XML, HTML、各类报表、图像和音频/视频信息
1.1.5 HBase在Hadoop生态中的地位
  • HBase是Apache基金会顶级项目

  • HBase基于HDFS进行数据存储

  • HBase可以存储超大数据并适合用来进行大数据的实时查询

1.1.6 HBase与HDFS
  • HBase建立在Hadoop文件系统上, 利用了HDFS的容错能力
  • HBase提供对数据的随机实时读/写访问功能
  • HBase内部使用哈希表, 并存储索引, 可以快速查找HDFS中数据
1.1.7 HBase使用场景
  • 瞬间写入量很大
  • 大量数据需要长期保存, 且数量会持续增长
  • HBase不适合有join, 多级索引, 表关系复杂的数据模型
  • 适合场景(大型互联网公司都用HBase)
  • 表数据量大(至少亿级别以上) 写入量大(每天千万级别以上)
  •  append型业务(比如日志,聊天记录等)
  •  读取量相对少(读取:写入<=1/10)
  •  读取场景简单、不经常变化、无排序要求
  •  无跨行跨表事务要求

不适合场景

  • HBase仅支持行级事务(银行业务基本不用HBase)
  • 类似DW等全量读取(hive), 不太适合
     
1.2.4 HBase 与 传统关系数据库的区别
HBase关系型数据库
数据库大小PB级别GB TB
数据类型Bytes丰富的数据类型
事务支持ACID只支持单个Row级别全面的ACID支持, 对Row和表
索引只支持Row-key支持
吞吐量百万写入/秒数千写入/秒

二.HBase数据模型

       HBase的设计理念依据google的BigTable论文,论文中对于数据模型的首句介绍

Bigtable是一个稀疏的,分布式的,持久的多维排序的map。

       之后对于映射的解释如下:

该映射由行建,列建和时间戳索引;映射中的每个值都是一个未解释的字节数组。

       最终HBase关于数据模型和BigTable的对应关系如下:

HBase使用与BigTable非常相似的数据模型。用户将数据行存储在带标签的表中。数据行具有可排序的键和任意数量的列。该表存储稀疏,因此如果用户喜欢,同意表中的行可以具有疯狂变化的列。

      最终理解Hbase数据模型的关键在于稀疏,分布式,多维,排序的映射,期中映射map值代非关系型数据库的key-value结构。

2.1、HBase逻辑结构

逻辑结构分析:

  1.     Region:相当于表,数据量大的时候会进行切片,相当于数据库的水平分表分库。
  2.     store:每个Store其实就是一个列族的数据(所以我们可以说HBase是基于列族存储的)
  3.     列族(Column Family):在HBase里边,先有列族,后有列;可以简单理解为:列的属性类别。
  4.     列(Column Qualifier,列修饰符):在HBase中用列修饰符(Column Qualifier)来标识每个列。
  5.     行键(RowKey):定位一行数据的唯一值。

2.2.HBase物理存储结构

       物理存储结构即为数据映射关系,而在概念试图的空单元格,底层实际根本不存储。

2.3数据模型

1. 表(Table)
HBase采用表来组织数据,表由行和列组成,列划分为若干个列族。

2. 行(Row)
每个HBase表都由若干行组成,每个行由行键(Row Key)来标识。访问表中的行只有3种方式:通过单个行键访问;通过一个行键的区间来访问;全表扫描。

3. 列族(Colume)
一个HBase表被分组成许多“列族”的集合,它是基本的访问控制单元。列族需要在表创建时就定义好,数量不能太多(HBase的一些缺陷使得列族数量只限于几十个),而且不要频繁修改。存储在一个列族当中的所有数据,通常都属于同一种数据类型,这通常意味着具有更高的压缩率。

4. 列限定符
列族里的数据通过列限定符(或列)来定位。列限定符不用事先定义,也不需要在不同行之间保持一致。列限定符没有数据类型,总被视为字节数组byte[]。

5. 单元格
在HBase表中,通过行、列族和列限定符确定一个“单元格”(Cell)。单元格中存储的数据没有数据类型,总被视为字节数组 byte[]。每个单元格中可以保存一个数据的多个版本,每个版本对应一个不同的时间戳。

6. 时间戳
每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引。每次对一个单元格执行操作(新建、修改、删除)时,HBase都会隐式地自动生成并存储一个时间戳。

三.HBase架构角色

(1) Master实现类为HMaster,负责监控集群中所有的 RegionServer 实例。主要作用如下:“管理元数据表格 hbase:meta,接收用户对表格创建修改删除的命令并执行

(2)监控region 是否需要进行负载均衡,故障转移和region 的拆分。e通过启动多个后台线程监控实现上述功能

        周期性监控region 分布在regionServer 上面是否均衡,由参数 hbase.balancer.period 控周期时间,默认5 分钟。

定期检查和清理hbase:meta中的数据。meta表内容在进阶中介绍。

把master 需要执行的任记录到预写日志WAL中,如果 master 宕机,让 backupMaster读取日志继续干。
(2) Region Server
Region Server 实现类为 HRegionServer,主要作用如下:

  • 负责数据 cell 的处理,例如写入数据 put,查询数据 get 等
  • 拆分合并region 的实际执行者,有 master 监控,有regionServer 执行。

(3)Zookeeper
HBase 通过 7ookeeper 来做 master 的高可用、记录 RegionServer 的部署信息、并且存储有meta 表的位置信息。
HBase 对于数据的读写操作时直接访问 Zookeeper 的,在2.3 版本出 Master Registry模式,客户可以直接访间 master。使月此功能,会加大对 master 的压力,减轻对 Zokeeper的压力。
(4) HDFS
HDFS 为 Hbase 提供最终的底层数据存储服务,同时为 HBase 提供高容错的支持。

扩展知识

一.Dubboy框架(远程过程调用)

1.分布式系统中的相关概念

传统项目和互联网项目

大型互联网项目的架构目标

集群和分布式

进行集群的服务器-可以进行负载均衡,实现了高性能、高可用的目标

 同时进行集群和分布式的服务器-除了集群实现的功能和目标,还可以实现可伸缩、高可扩展的目标

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/203353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux中的输入输出重定向

目录 1.输出重定向 > 2.追加重定向 >> 3.标准 正确/错误 输出重定向 4.输入重定向 < 5.标准输入 0 1.输出重定向 > 将命令执行之后的结果不打印出来&#xff0c;可以输入在另外一个文件当中。 如&#xff0c;我查看文件a.txt 的前3行&#xff0c;然后不显…

如何从eureka-server上进行服务发现,负载均衡远程调用服务

在spring cloud的maven的pom文件中添加eureka-client的依赖坐标 <!--eureka-client依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependen…

gitLab 和Idea分支合并

以下二选1即可完成分支合并建议第一种简单有效 Idea合并方式 切换到被合并的分支&#xff0c;如我想把0701的内容合并到dev&#xff0c;切换到dev分支&#xff0c;然后再点击merge然后选择要合并的分支&#xff0c;即可,此时git上的代码没有更新只是把代码合到本地需要pull才…

【Flink on k8s】- 5 - 简要介绍 Flink

目录 1、了解流计算框架 1.1 分代 1.2 流计算框架对比 2、Flink 的应用场景 2.1 Data anal

互联网大规模数据挖掘的目录

目录 目  录 第1章  数据挖掘基本概念  1 1.1  数据挖掘的定义  1 1.1.1  统计建模  1 1.1.2  机器学习  1 1.1.3  建模的计算方法  2 1.1.4  数据汇总  2 1.1.5  特征抽取  3 1.2  数据挖掘的统计限制  4 1.2.1  整体情报预警  4 1.2.2 …

盲盒小程序搭建:实现盲盒消费新体验

近几年来&#xff0c;潮玩市场中的盲盒逐渐席卷了年轻一代人的生活&#xff0c;吸引了不少消费者。盲盒的不确定性给消费者带来了惊喜和快乐&#xff0c;盲盒的商业价值也是逐渐增加&#xff0c;预计2024年盲盒市场规模将突破300亿元。 但在当下互联网快速发展的时代下&#x…

python/matlab图像去雾/去雨综述

图像去雾和去雨是计算机视觉领域的两个重要任务&#xff0c;旨在提高图像质量和可视化效果。本文将综述图像去雾和去雨的算法、理论以及相关项目代码示例。 一、图像去雾算法 基于暗通道先验的方法&#xff1a; 这是广泛应用于图像去雾的经典算法之一。该方法基于一个观察&…

Ubuntu22.04通过Maas和Juju部署openstack charm

目录 官方文档材料准备软件硬件 模板机和虚拟网络安装MAAS官方文档MAAS节点配置安装MAAS浏览器登录MAAS进行配置 激活DHCP 官方文档 https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/2023.1/ 这是一个通过Maas面板即可部署openstack的方式&#xff0…

利用 Python进行数据分析实验(一)

一、实验目的 使用Python解决简单问题 二、实验要求 自主编写并运行代码&#xff0c;按照模板要求撰写实验报告 三、实验步骤 本次实验共有5题&#xff1a; 有四个数字&#xff1a;1、2、3、4&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f;各是多少&…

解决IDEA Failed to connect to github.com port 443: Timed out 问题

1. Timed out 报错 fatal: unable to access https://github.com/xxxx/xxxx.git/: Failed to connect to github.com port 443: Timed out解决 设置代理 git config --global http.proxy 127.0.0.1:1080 #为全局的 git 项目都设置代理git config --local http.proxy 127.…

java面试题-ArrayList 和 LinkedList 的区别是什么

远离八股文&#xff0c;面试大白话&#xff0c;通俗且易懂 看完后试着用自己的话复述出来。有问题请指出&#xff0c;有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来&#xff0c;大家一起解决。 java面试题汇总-目录-持续更新中​​​​​​​ ArrayLi…

大数据生态架构:探索未来科技的无限可能。

1、大数据生态圈技术框架 大数据生态圈技术是指在大数据领域中&#xff0c;涉及到的技术体系。目前大数据生态圈中的核心技术总结下来分为以下9类&#xff1a; 数据采集技术框架数据存储技术框架数据处理技术框架数据分析技术框架数据可视化技术框架数据安全技术框架数据治理…

华为数通---使用基本ACL限制Telnet登录权限案例

组网需求 如下图所示&#xff0c;PC与设备之间路由可达&#xff0c;用户希望简单方便的配置和管理远程设备&#xff0c;可以在服务器端配置Telnet用户使用AAA验证登录&#xff0c;并配置安全策略&#xff0c;保证只有符合安全策略的用户才能登录设备。 配置通过Telnet登录设备…

机器学习之布谷鸟搜索算法(Cuckoo Search Algorithm,CSA)剖析

概念 布谷鸟搜索算法(Cuckoo Search Algorithm,CSA)是一种模拟自然界中布谷鸟种群行为的优化算法。这个算法的灵感来自布谷鸟的繁殖行为:布谷鸟会将自己的蛋放入别的鸟巢中,鸟主人可能会发现假蛋并将它们丢弃,而布谷鸟的蛋则有可能得以孵化。 这个算法的基本思想是模拟布…

学习极市开发平台

这是官网的链接&#xff1a;极市开发者平台-计算机视觉算法开发落地平台-极市科技 (cvmart.net) 第一次用这个平台有很多问题&#xff0c;首先在使用这个平台之前&#xff0c;我大部分时候使用的是百度的飞浆平台&#xff0c;也就是BML&#xff0c;去训练一些深度学习的模型。 …

防抖和节流

防抖&#xff08;Debouncing&#xff09;&#xff1a; 防抖是指在事件被触发后&#xff0c;等待一定的时间间隔&#xff0c;如果在这个时间间隔内再次触发该事件&#xff0c;则重新计时。只有当事件停止触发一段时间后&#xff0c;才会执行相应的操作。防抖常用于优化输入框的搜…

Elasticsearch,Kibana集成,x-pack鉴权配置

Elasticsearch,Kibana集成 Java8环境部署[CentOS7] cd /usr/local/src wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gztar -xzvf jdk-8u201-linux-x64.tar.gz -C /usr/local#配置环境变量 vim /etc/profile #文末添加 export JAVA_HOME/us…

强敌环伺:金融业信息安全威胁分析——钓鱼和恶意软件

门口的敌人&#xff1a;分析对金融服务的攻击 Akamai会定期针对不同行业发布互联网状态报告&#xff08;SOTI&#xff09;&#xff0c;介绍相关领域最新的安全趋势和见解。最新的第8卷第3期报告主要以金融服务业为主&#xff0c;分析了该行业所面临的威胁和Akamai的见解。我们发…

2023年11月Web3行业月度发展报告区块链篇 |陀螺研究院

11月&#xff0c;在宏观转好以及事件带动下&#xff0c;加密市场逐渐回暖。上月现货ETF带来的市场情绪持续增强&#xff0c;美方监管利好消息不断&#xff0c;零售投资者入场信号明显&#xff0c;持仓在10枚BTC以下的小规模投资者持仓持续上涨&#xff0c;推动BTC保持坚挺。利好…

sed 流式编辑器

使用方式&#xff1a; 1&#xff0c;前置指令 | sed 选项 定址符指令 2&#xff0c;sed 选项 定址符指令 被处理文档 选项&#xff1a; -n 屏蔽默认输出 -i写入文件 -r支持扩展正则 指令&#xff1a; p输出 d删除 s替换 sed -n 1p user //输出第1行 sed -n…