HDFS读写数据流程和NameNode工作机制

news/2024/5/20 5:09:38 标签: hdfs, hadoop, 大数据

HDFS文件系统写数据

1.步骤

文件上传步骤:

  1. 向NameNode请求上传文件+文件路径(验证请求身份,写权限)
  2. 响应可以上传文件
  3. 请求上传第一个Block(0-128M), 请返回DataNode
  4. 返回dn1,dn2,dn3节点,表示采用这三个节点存储数据

NameNode节点选择存储节点的原则:

  • 节点最近原则
  • 负载均衡

2.节点距离计算

在HDFS写数据的过程中,NameNode会选择距离待上传数据最近距离的DataNode接收数据,也就是节点最近原则

节点距离 = 两个节点到达最近的共同祖先的距离总和

集群、机架、主机通过类似树型的结构连接在一起,共同祖先节点的计算方法一样。

3.机架感知

NameNode接收到客户端发送过来的写数据请求后,会选择三个节点:

  1. 本地节点
  2. 其他机架的一个节点
  3. 其他机架的另一个节点
    选择哪个节点的这个过程被称为机架感知,为何是这个策略呢?

感知策略
这个感知策略兼顾了数据的可靠性和效率,将数据分散在两个不同的机架,保证数据更可靠,其次第三个节点由于在同一个机架中,传输效率更高。

HDFS文件系统读数据

1.步骤

  1. 客户端向Name请求下载文件+文件地址(验证身份权限,权限)
  2. NameNode向客户端返回目标文件的元数据
  3. 客户端向DataNode请求读数据
  4. DataNode向客户端传输数据

2.读数据具体方式

实际上是串行读取方式,先读取完某个数据块后再读取另一个DataNode里面的数据。由于每个节点有3个备份,具体选择哪一个节点来进行读取主要使用节点最近原则和负载均衡原则。当某个节点读取数量超过一定数量时就更换为另一个节点。

NameNode和2NN工作机制

1.思考一下NameNode放在哪里比较好?

  1. 内存:好处是计算速度快,坏处是可靠性差。
  2. 磁盘:好处是可靠性高,坏处是计算速度慢
  3. 内存+磁盘:需要在内存中计算完,然后再持久化到磁盘中,两个位置都需要计算,效率更低。磁盘中存放的是fsImage镜像文件,如果是随机读写,效率很低。追加读写效率会更高
    • 随机读写
      • 需要读取历史数据
      • 修改后覆盖历史数据
    • 追加读写
      • 不读取历史数据
      • 直接修改操作追加到文件末尾

2.第三种方式如何协调运行

  1. 客户端的增删改请求都会追加到edits_improgress中。
  2. 2NN会不定期向NameNode发送CheckPoint请求,CheckPoint触发条件有两种:
    • 定时时间到
    • Edits中的数据满了
  3. NameNode接受请求后edits追加信息会进行滚动操作,生成一个新的edits2文件,滚动期间的增删改操作会进入到edits2文件中。
  4. edits2文件生成后,2NN会将镜像文件和edits2都拷贝到2NN中,然后加载到内存中进行合并,并生成一个新的镜像文件fsimage.chkpoint, 并拷贝回NameNode中。

在这里插入图片描述

3.文件结构

在linux文件目录中,NN文件都存放在/opt/module/hadoop-3.1.3/data/dfs/name/current/路径下, 主要存放了如下文件

  • fsimage镜像文件
    • hdfs oiv -p 文件类型 -i 镜像文件 -o: 必须先将镜像文件转换为特定格式后才能查看
    • fsimage文件存储了文件的inode节点,包含文件名以及文件之间的父子关系
    • fsimage文件没有存放dataNode节点的存储位置,开机时dataNode会主动向对应的NameNode告知其位置
  • edits追加文件
    • 同理edits文件也需要转换类型后才能查看,命令为edits_inprogress_0000000000000000517
    • NameNode保存着最新的修改信息,2NN没有。
  • seen_txid追加次数
  • VERSION版本信息(ClusterID集群ID):必须集群ID一致,NameNode才能找到相应的DataNode.

http://www.niftyadmin.cn/n/4978982.html

相关文章

js常用方法总结

1、slice 和 splice slice表示截取,slice(start,end),不改变原数组,返回新数组。 splice表示删除,splice(start,length,item),会改变原数组,从某个位置开始删除多个元素,并可以插入新的元素。…

ip_vs 原理解析 (四)hook 后的开始 NF_INET_LOCAL_IN

文章目录 ip_vs hook 后NF_INET_LOCAL_IN 本章重点: k8s 如何利用 ip_vs 实现源 IP 会话亲和性。 ip_vs hook 后 NF_INET_LOCAL_IN 根据优先级依次是 ip_vs_reply4,ip_vs_remote_request4 ip_vs_reply4| -- ip_vs_out| -- skb_to_full_sk(skb&#xf…

【微信红包】Axure聊天发红包原型图,含流程图和PRD产品文档

作品概况 页面数量:共 60 页 兼容软件:Axure RP 9/10,不支持低版本 应用领域:聊天软件、社交软件 作品申明:页面内容仅用于功能演示,无实际功能 作品特色 本作品为「发红包」的原型设计图&#xff0c…

Unity实现倒计时和获取系统时间

一:创建UGUI 1.创建Canvas画布组件,调节Canvas画布的分辨率等其他设置。我们可以把视图设置为2D模式下。 2.创建Text文本组件,取名为Timer计时器,我们调整Text文本组件的大小,用锚点设置Text文本组件的位置,并且设置好Text文本组件的颜色。 3.我们再创建一个Text文…

回归预测常见评估指标R2_Score能否为负数

文章目录 R2 —— 评估回归的方法什么是R2参考文献R2 —— 评估回归的方法 回归是将函数拟合到数据的方法。例如,我们能够通过卫星统计沃尔玛门口停车场的汽车数量,也可以通过其收益报告了解沃尔玛在对应时段的销售额。于是,你想建立一个汽车数量与沃尔玛季度收益的函数关系…

centos安装Nginx配置Nginx

1. 查看操作系统有没有安装Nginx which nginx 2. 使用epel的方式进行安装(方法二) 先安装epel sudo yum install yum-utils 安装完成后,查看安装的epel包即可 sudo yum install epel 3 开始安装nginx 上面的两个方法不管选择哪个&…

叠螺式污泥脱水机的要点及价格分析

诸城市鑫淼环保小编带大家了解一下叠螺式污泥脱水机的要点及价格分析 设备工作步骤 叠螺脱水机在工作时分为3个步骤,分别是稀释、脱水、自洗濯: 1、稀释:当螺旋推进轴迁移转变时,设在推进轴核心的多重固活叠片挪动,在重…