首页 > 其他分享 >hdfs的分布式存储原理

hdfs的分布式存储原理

时间:2024-10-19 20:53:47浏览次数:3  
标签:hdfs 存储 副本 文件 edits namenode block 分布式

1.想要把一个大文件存储到hdfs,首先进行划分,将文件划分为一个一个的block,这个block默认为512MB,可修改.

2.备份(也就是副本)

将文件划分后,一个block丢失则原来的大文件没有用了.为了确保文件的安全性,hdfs提供了副本,也就是备份,将文件划分之后hdfs默认将每一个block备份到其他不同datanode上(默认是备份两个不同datanode,可修改),这样一个block丢失可以将备份的复制到原位置,确保了hdfs文件系统的安全性

3.hdfs的副本数修改:

     方式一:文件是hdfs.site.xml,默认是三个副本,基本无需修改

 <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>

     方式二:上传文件是自定义副本数量

         命令:       hadoop fs -D dfs.replication=2 -put test.txt /tmp/

                  -D表示执行文件系统命令时自行加入配置项

          这时副本数根据配置文件来,我也没搞懂

4.查看副本,文件状态

   命令:   hdfs fsck path [-files [-blocks [-locations]]]

5。block配置,也在hdfs.site.xml文件

1684354456B=256MB,这是默认,可以自行修改

6.namenode元数据,元数据文件(edits)

    一:edits文件,记录hdfs的每一次记录

    二:FSImage文件(edits文件的合并)

    三:配置,配置文件在hdfs.site.xml

查看元数据:(里面有edits文件与fsimage文件)

    四:元数据合并控制参数

      (1)定时过程:基于:dfs.namenode.checkpoint.period,默认 3600( 秒 )即1小时             dfs.namenode.checkpoint.txns,默认1000000,即 100W 次事务.只要有一个达到条件就执行。

      (2)检查是否达到条件,默认60秒检查一次,基于:dfs.namenode.checkpoint.check.period.默认60 (秒),来决定.

    五:合并由secondarynamenode处理

namenode运行客户所操作的命令后,生成edits文件,操作的文件或文件夹放入namenode与datanode,而namenode的fsimage文件由secondarynamenode把namenode的edits文件拿过来进行合并,再返回到namenode里.

没有secondarynamenode就没有fsimage文件

7.数据的写入流程:

    一. 客户端向NameNode发起请求

     二. NameNode审核权限、剩余空间后 ,满足条件允许写入, 并告知客户端写入的DataNode地址

     三. 客户端向指定的DataNode发送数据包

     四. 被写入数据的 DataNode 同时完成数据副本的复制 工作,将其接收的数据分发给其它DataNode

     五. 写入完成,客户端通知NameNode,NameNode做元数据记录工作

8.数据的读流程:

     一、客户端向NameNode申请读取某文件

     二 、 NameNode判断客户端权限等细节后,允许读取,并返回此文件的block列表

     三、 客户端拿到block列表后自行寻找DataNode读取即可

     namenode就是干分析与记录的事儿,datanode完全是存放数据的,secondarynamenode就是把namenode生产出来的edits文件合并为fsimage文件,增加整个系统的性能

标签:hdfs,存储,副本,文件,edits,namenode,block,分布式
From: https://blog.csdn.net/m0_72898512/article/details/143082648

相关文章

  • MySQL数据库中存储图片和读取图片的操作
    文章目录方法一:将图片以BLOB类型存储在数据库中MySQL语句实现Python实现方法二:将图片存储在文件系统中,并在数据库中存储路径MySQL语句实现Python实现总结在MySQL数据库中存储图片通常有两种主要方式:将图片以二进制数据(BLOB类型)直接存储在数据库中,或者将图......
  • ton合约中的变量需要在运行结束之后才能存储到合约中
    receive(msg:BatchSyncOrderMsg){self.requireOwner();//EnsurethecalleristhecontractownerletroundInfo:RoundInfo=self.rounds.get(msg.round)!!;//Fetchtheinformationforthespecifiedroundrequire(!(roundInfo.finish),"......
  • 存储
    卷容器中的文件在磁盘上是临时存放的,这给在容器中运行较重要的应用带来一些问题。当容器崩溃或停止时会出现一个问题。此时容器状态未保存,因此在容器生命周期内创建或修改的所有文件都将丢失。在崩溃期间,kubelet会以干净的状态重新启动容器。当多个容器在一个Pod中运行并......
  • Redis 集群:高效缓存与数据存储的利器
    在当今的互联网时代,数据的存储和处理速度至关重要。Redis作为一种高性能的内存数据库,广泛应用于各种场景。而Redis集群则进一步提升了Redis的可用性、扩展性和性能。本文将为你详细介绍Redis集群的简介以及三种模式。一、Redis集群简介Redis集群是由多个Redis......
  • 如何理解分布式事务
    在分布式系统环境中,分布式事务是一个关键的技术挑战。那么,什么是分布式事务呢?让我们一起来深入理解。一、分布式事务的定义分布式事务是指在分布式系统中,为了保证数据的一致性,涉及多个节点的事务操作。在传统的单体应用中,事务通常由数据库管理系统来处理,保证了数据的一致......
  • 云存储图片生成缩略图开发
    作者:狼哥团队:坚果派团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁夏等地,目前已开发鸿蒙原......
  • 分布式集群商城应用部署
    一、准备工作1.节点规划节点部署Ip主机名节点192.168.119.147db1数据库集群主节点192.168.119.153db2数据库集群从节点192.168.119.154MycatMycat中间件服务节点192.168.119.165Zookeeper1,kafka集群节点192.168.119.158Zookeeper2,kafka......
  • Zabbix模板数据存储在哪里?
    Zabbix的模板数据存储在数据库的哪一个表里面?以MySQL数据库为例,在数据库zabbix中,其实模板数据存储在hosts这个表里面,而不是存在hosts_templates表里面。很多人一看到templates关键字,容易先入为主的以为这个表会存储模板的相关数据。但是实际上,hosts_templates表用于存储主机和模板......
  • k8s-Longhorn系统配置 20241017 -分布式存储
    目录一Longhorn存储部署1.1Longhorn概述1.2Longhorn部署1.5动态sc创建1.6测试PV及PVC1.7Ingress暴露Longhorn1.8确认验证附加Helm部署附0.1helm安装附0.2helm安装 回到顶部一Longhorn存储部署1.1Longhorn概述Longhorn是用于Kubernetes的......
  • 《使用Gin框架构建分布式应用》阅读笔记:p77-p87
    《用Gin框架构建分布式应用》学习第5天,p77-p87总结,总计11页。一、技术总结1.Go知识点(1)context2.on-premisessoftwarep80,AcontainerislikeaseparateOS,butnotvirtualized;itonlycontainsthedependenciesneededforthatoneapplication,whichmakesthe......