2023.12.12 HDFS的三大机制,数仓的关系,维度建模

目录

一.HDFS的架构

二.块和副本

三.块副本机制

四.三大机制

五.edits和fsimage文件

六.内存/文件元数据

七.元数据存储的原理

八.关系建模

九.维度建模

        星型模型:只有一个事实表,只有一个分析的主题, 那一张事实表被多个维度表插着,维度表之间没有任何关联(前期)

        雪花模型:只有一个事实表,被多个维度表插着,维度表之间有关联,但这样会特别乱,需要避免

        星座模型:有多个事实表,也就意味着有了多个分析的主题,事实表被多个维度插着,条件吻合的情况下事实表之间是可以共享维度表.(中后期)


一.HDFS的架构

1.Client

发请求就是客户端.

文件切分,文件上传HDFS的时候,Client 将文件文件切分成一个一个的Block,然后进行存储,

与NameNode交互,获取文件的位置信息.

与DataNode交互,读取或者写入数据.

Client提供一些命令来管理和访问HDFS,比如启动或者关闭HDFS.

2.NameNode

就是master,他是一个主管,管理者.

处理客户端写入请求.

管理HDFS元数据(文件路径,文件的大小,文件的名字,文件权限,文件切割后的快BLOCK信息)

配置3副本备份策略.

3.DataNode

就是Slave 奴隶. NameNode 下达命令,DataNode执行实际的操作.

存储实际的数据块(block).

执行数据块的读/写操作

定时向namenode汇报block信息.

4.Secondary Namenode

并非NameNode的备份节点.当NameNode挂掉的时候,他并不能马上替换NameNode并提供服务.

只是辅助NameNode,对HDFS元数据进行合并,合并后再交给NameNode.

在紧急情况下,可辅助NameNode部分数据.

二.块和副本

block块:HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件,他将文件拆分成一系列的数据块进行存储,这个数据块被称为block,除了最后一个,所有的数据块都是同样大小的.

block块的大小默认为128M(为了容错,文件的所有block都会有副本,每个文件的数据块大小和副本系数都是可配置的)

副本系数默认3个

三.块副本机制

因为分布式存储会存在文件大小不一,不利于统一管理.

所以设定统一的管理单位,block块,块的统一大小128M,是为了方便统一管理

副本默认3个的原因:为了保证数据的安全性,通过多个副本备份解决,每个block块都有2个备份,每个副本都复制到其他服务器一份,每个块都有两个备份在其他服务器上,保证了数据的安全性.

四.三大机制

副本机制:为了保证数据安全和效率,block块信息存储多个副本,第一副本保存在客户端所在服务器,第二副本保存在和第一副本不同机架服务器上,第三副本保存在和第二副本相同机架不同服务器.

负载均衡机制:namenode为了保证不同的datanode中block块信息大体一致,分配存储任务的时候会优先保存在距离较近并且余量较大的datanode上.

心跳机制:datanode每隔三秒向namenode汇报自己的状态信息,如果某个时刻,datanode连续10次不汇报了,namenode会认为datanode有可能宕机了,namenode每5分钟发送一次确认消息,连续两次都没有收到恢复,就可以确认datanode宕机了.

机架感知机制:如何选择写入副本的datanode?

1.第一个副本选择本地机架,距离近,上传速度快.

2.第二个副本选择远程机架的随机节点,保证数据的可靠性.

3.第三个副本第二个副本所在机架的随机节点,而不是其他机架,是可以同时兼顾可靠性和效率的.

五.edits和fsimage文件

namenode管理元数据:基于edits和fsimaga的配合,完成整个文件系统文件的管理,每次对HDFS的操作,均被edits文件记录,edits达到大小上线后,开启新的edits记录,定期进行edits的合并操作

        如果当前没有fsimage文件,则将全部edits合并为第一个fsimage文件

        如当前已经存在fsimage文件,将全部edits和已存在的fsimage进行合并,形成新的fsimage

        edits编辑文件:记录hdfs的每次操作

        fsimage镜像文件:记录某一时间节点前的当前文件系统全部文件的状态和信息.

    Seconddary NameNode辅助合并元数据:SecondaryNameNode会定期从namenode拉取数据(edits和fsimage)然后合并完成后提供给NameNode使用.

        检查点的两个指标:默认3600秒,1小时   ,还有100w次事务,60秒检查一次,只要有一个达到条件就执行拉取合并

六.内存/文件元数据

namenode和secondarynamenode:  配合完成对元数据的保存

元数据: 内存元数据 和 文件元数据 两种分别在内存和磁盘上

内存元数据: namnode运行过程中产生的元数据会先保存在内存中,再保存到文件元数据中。
内存元数据优缺点: 优点: 因为内存处理数据的速度要比磁盘快。  缺点: 内存一断电,数据全部丢失

文件元数据: Edits 编辑日志文件和fsimage 镜像文件
Edits编辑日志文件: 存放的是Hadoop文件系统的所有更改操作(文件创建,删除或修改)的日志,文件系统客户端执行的更改操作首先会被记录到edits文件中
Fsimage镜像文件: 是元数据的一个持久化的检查点,包含Hadoop文件系统中的所有目录和文件元数据信息,但不包含文件块位置的信息。文件块位置信息只存储在内存中,是在 datanode加入集群的时候,namenode询问datanode得到的,并且不间断的更新

fsimage和edits关系: 两个文件都是经过序列化的,只有在NameNode启动的时候才会将fsimage文件中的内容加载到内存中,之后NameNode把增删改查等操作记录同步到edits文件中.使得内存中的元数据和实际的同步,存在内存中的元数据支持客户端的读操作,也是最完整的元数据。

七.元数据存储的原理

1.namenode第一次启动的时候先把最新的fsimage文件加载到内存中,同时把edits文件也加载到内存中.

2.客户端发起指令,namenode每次接收到指令操作后先把新的操作放到内存中,

3.然后把刚才内存中新的指令操作写入到edits_inprogress文件中.

4.edits_inprogress文件中数据到达了一定的阈值时候,把文件中历史操作记录写入到序列化的edits备份文件中

5,当seconddaryNamenode检测到自己距离上一次检查点已经过了一小时或者事务达到了100万次,secondarynamenode就向老大询问是否对edits和fsimage文件进行合并操作.

6.老大告知可以进行合并

7.secondary将老大累计的所有edits和最新的fsimage下载到本地,并加载到内存中进行合并

8.secondary把刚才合并后的fsimage拷贝给namenode

9.老大把拷贝的过来的最新的fsimage文件,重新命名为fsimage,覆盖原来的文件.

八.关系建模

九.维度建模

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白白的wj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值