IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 分布式数据库HBase -> 正文阅读

[大数据]分布式数据库HBase

HBase简介

?

HBase是BigTable的一个开源实现,而BigTable的出现是为了解决谷歌公司内部大规模网页搜索的问题。


?页面的搜索阶段:

1先建立整个网页的搜引,然后设计网页的爬虫,不断爬取数据,将爬好的数据保持到BigTable中,在BigTable上运行MapReduce生成网页的搜引,方便我们访问

2.用户通过搜索引擎发生请求,通过网页搜引访问相关网页

3. BigTable的诞生:

·主要用于满足互联网搜索引擎的基本需求

·用于网页搜索

·用于谷歌的项目

·用于视频,社交,博客网站等


分布式存储系统BigTable不是把底层磁盘做为存储,而是架构在谷歌分布式文件系统GFS上,通过GFS存储相关数据,通过Chubby实行协同管理服务


HBase和BigTable的底层技术关系
BigTableHBase
文件存储系统GFSHDFS
海量数据处理MapReduceHadoop MapReduce
协同管理服务ChubbyZookeeper

HBase产品出现的原因:

·Hadoop无法满足大数据实时处理需求,传统关系型数据库的扩展能力非常有限

·HBase的分层操作全都基于机器操作,便利效率高



HBase数据模型

HBase是一个稀疏的多维度的排序的映射表

?单元格:具体存储数据的地方

时间戳:数据更新后通过时间戳来区分


数据坐标:数据查找


行式数据库和列式数据库:

传统行式存储
11111111111111111111111111111111111111
22222222222222222222222222222222
3333333333333333333333333333333333

数据存储按行从左到右存储数据,数据压缩率低,试用于事务型操作

列式数据库

11111111 22222222 33333333 11111111 222222222 333333333

????????????????????????列式存储,按一个列去存储,可以带来很高的书局压缩率 ,多用于分析型



HBase的实现原理? ? ?

1.HBase 的功能组件:

客户端并不是直接从Master服务器上读取数据,而是在获得Region在存储位置信息后,直接从Region服务器是读取。HBase客户端并不依赖于Master而是借助于Zookeeper来获得Region的位置信息。


2.两个核心概念表和Region:在一个HBase中,存储了许多表,表的行非常大,需要分布式存储到多台机器上。根据行键的值对表的行进行分区,每一个分区构成一个Region,Region包含了位于某个值域区间的所有数据,这些Region会被分发到不同的Region服务器上

?初始时,每个表只包含一个Region,随着数据的不断插入,Region会持续扩大,当大到一定的阈值就会自动等分成两个新的Region。每个Region的默认大小为100~200MB,不同的Region会被分配到不同的Region服务器上,当同一个Region不会被拆分到多个Region服务器上,每一个Region服务器负责管理一个Region集合,通常在每个Region服务器上会放置10~1000个Region


3.实现Region定位:HBase采用B+树的三层结构来保存Region位置信息。每一个Region都有一个RegionID来标识它的唯一性,一个Region标识符都可以表示为:表明+开始主键+RegionID。

有了Region标识符,通过一张包含Region标识符和Region两项内容的映射表就可以知道Region被保存在哪个Region服务器中,这个映射表称为元数据表,又称.META.表

.META.的数目会很多,通过一个映射表来访问多个.META.表,这个新的映射表称之为根数据表,又名-ROOT-表,-ROOT-不可再分,只有一个

三层结构各层次的名称和作用
层次名称作用
第一层次ZooKeeper文件记录了-ROOT-表的位置信息
第二层次-ROOT-表记录了.MEAT.表的信息,通过-ROOT-可以访问到.MEAT.表的数据
第三层次.META.表记录了用户数据表的Region的位置信息

?客户端访问数据前,先访问ZooKeeper获取-ROOT-表的位置信息,然后访问-ROOT-表,获得.META.表的信息,接着访问.META.表,找到Region在哪个Region服务器上,最后到该Region服务器是读取数据



HBase运行机制? ? ?

HBase运行机制包括HBase系统架以及Region服务器,Store和Hlog的工作原理


一.HBase系统架构:包括客户端,ZooKeeper服务器,Master主服务器,Region服务器。HBase一般采用HDFS作为底层数据存储系统

?1.客户端:客户端包括访问HBase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据访问过程

?2.ZooKeeper服务器:(1)ZooKeeper服务器可以监控每一个Region服务器的状态并通知Master,这样Master就可以通过ZooKeeper感知各个Region的运行状态

(2)ZooKeeper服务器可以帮助选举出一个Master做为集群的总管

(3)ZooKeeper服务器中保持了-ROOT-表的地址和Master主服务器的地址,客户端可以通过访问ZooKeeper获得-ROOT-表的地址,从而找到所需的数据

3.Master主服务器:主要负责表和Region的管理工作

????????·管理用户对表的增加,删除,修改,查询等操作

? ? ? ? ·实现不同Region服务器之间的负载均衡

? ? ? ? ·在Region分裂或合并后,负责重新调整Region的分布

? ? ? ? ·对发生故障失效的Region服务器上的Region进行迁移

4.Region服务器:负责维护分配给自己的Region并响应用户的读写请求



Region服务器的工作原理

Region服务器内部管理了一系列Region对象和一个HLog文件,HLog记录所有的更新操作;每一个Region对象由多个Store组成,每一个Store又包含一个MemStore和若干个StoreFile,其中MemStore是在内存中的缓存,保存最近更新的数据,StoreFile是磁盘中的文件

?1.用户读写数据的过程:用户写数据时,会被分配到相应的Region服务器去执行,数据会被写入到MenStore和HLog;用户读取数据时,Region服务器首先访问menStore缓存,如果数据不在缓存中,才会到磁盘上面的StoreFile中寻找

2.缓存的刷新:MenStore的缓存容量有限,系统会周期性的调用Region.flushcache()把MenStore缓存里面的内容写到磁盘的StoreFile中,清空缓存,并在HLog文件中写入标记,用来表示缓存中的内容以及被写入StoreFile文件中

3.StoreFile的合并:系统调用Store.compatc()把多个StoreFile文件合并成一个大文件


Store的工作原理

Store是Region的服务器的核心,每个Store对应了表中的一个一列族的存储,包含一个MemStore缓存和若干个StoreFile文件。MemStore是排序的内存缓冲区,当用户写入数据时,系统首先把数据放入MenStore缓存,当MenStore缓存满时,就会刷新到磁盘中一个StoreFile文件中,随着StoreFile文件数量不断增加,多个StoreFile文件会合并成一个大的StoreFile文件,当一个StoreFile文件大小超过一定阈值时,就会触发文件分裂操作,当前的父Region会分裂成两个子Region,父Region会下线,而子Region会被分配到相应的Region服务器上


Hlog工作原理

考虑到MemStore的数据会因为服务器故障而丢失,HBase采用Hlog来保证系统发生故障时能够恢复到正确的状态,HBase为每一个Region服务器分配了一个Hlog文件,它是一种预写式日志,用户更新数据时首先记入日志才能写入MemStore缓存,并且直到Memstore缓存内容对应的日志已经被写入磁盘之后,该缓存内容才会被刷新写入磁盘

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:04:09  更:2022-10-31 12:07:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:26:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码