HDFS读写流程

news2024/11/25 18:30:53

读数据流程

在这里插入图片描述

  1. 客户端向NameNode请求文件的位置:客户端想要访问一个文件时,会向NameNode发送一个请求,要求获取该文件在HDFS上的位置信息。

  2. NameNode将位置信息返回给客户端:NameNode接收到客户端的请求后,会返回该文件所在的DataNode节点的IP地址和块ID等信息。

  3. 客户端连接DataNode获取数据:客户端根据NameNode返回的信息,连接包含所需数据块的DataNode并请求读取数据。

  4. DataNode返回数据给客户端:DataNode收到客户端的读取请求,从本地磁盘读取相应的数据块,并将其返回给客户端。

  5. 客户端合并数据:如果所请求的数据块不止一个,客户端可以根据需要将多个数据块的数据合并成一个完整的文件。

  6. 客户端关闭文件:当客户端完成对文件的访问后,它会通知HDFS以便释放相关资源。

hdfs在读取文件时,其中一个block坏掉了怎么办?

当 HDFS 读取数据时遇到了一个损坏的 block,处理这种情况的方法如下:

  1. HDFS 自动处理

如果 HDFS 发现某个 block 损坏了,它会自动尝试从其他的副本中读取相同的数据。HDFS 的默认行为是在损坏副本的基础上创建新的副本,以保证数据块数量达到预期。

  1. 人工处理

如果 HDFS 自动处理不能满足需求,可以手动处理。 首先需要确定到底哪个 block 已经损坏。可以使用以下方式:

  • 可以通过 Hadoop 自带的 checksum 功能计算每个 block 的校验和,并与存储在 NameNode 上的校验和进行比较。 如果两个校验和不匹配,那么就意味着文件的该 block 已经损坏了。
  • 还可以通过 DFS Health Reporter 和 DataNode Logs 来获取更多有关坏掉 block 的信息。

一旦知道了哪个 block 损坏了,我们需要采取适当的措施来纠正这个问题,例如:

  • 如果只有一个副本损坏了,在修复或替换该副本之前,应将其删除以确保读取数据时不会遇到任何错误。
  • 如果多个副本坏掉了,需要从备份中恢复该 block。
  • 如果不能从备份中恢复块,则需要采取其他措施,例如手动创建一些数据来替换该 block,或使用分散存储系统(如 RAID)来保护数据的完整性。

总之,在处理 HDFS 中损坏的 block 时,应先让系统尝试自动修正问题。 如果自动修复无法成功,则必须手动修复问题以确保 HDFS 文件系统的正常

写数据流程

在这里插入图片描述

  1. 客户端向NameNode请求将数据写入HDFS。
  2. NameNode检查目标文件是否存在,如果不存在,则创建一个新文件。
  3. 分配一组数据节点给该文件,并确定每个数据节点将负责存储哪些块。
  4. 地址返回给客户端。
  5. 客户端选择其中一个数据节点作为首选写入节点,并向其发送写入请求。
  6. 数据节点接收到写入请求后,将数据缓存在本地磁盘中,并确认客户端已经有相应的权限进行写入操作。
  7. 当数据量达到一定大小后,数据节点按照预设的块大小划分成多个块,每个块存储在一个DataNode上。
  8. 数据节点向客户端发送确认消息,表示可以开始向DataNode写入数据。
  9. 客户端从文件中读取数据并发送至首选写入节点。
  10. 写入节点将数据写入本地磁盘缓存,并向副本节点通知需要进行数据复制的指令。
  11. 副本节点复制数据到本地磁盘缓存,并将确认写入节点:数据块已成功复制。
  12. 所有数据块都已被写入数据节点,写入过程全部完成。
  13. 客户端接受写入确认消息并结束本次写入操作。

HDFS在写数据的时候,如果其中一个DataNode突然挂掉了怎么办?

在HDFS写数据时,如果其中一个DataNode突然挂掉了,HDFS会自动检测到该节点不可用并尝试将数据复制到其他可用的DataNode上。这是由于HDFS中每个块都会被副本到多个节点上,通常默认情况下是三个副本。因此,在数据写入期间,如果其中一个DataNode发生故障,HDFS可以从其他 DataNode 取得副本数据进行恢复。

具体来说,HDFS有一个名为“replication factor”的概念,它显示了要在网络中存储特定块数据的副本数。当我们在HDFS写入数据时,数据会被分成固定大小的块并在不同的DataNode上进行复制。默认情况下,副本数是3,但是您也可以根据需要进行更改。

当DataNode节点出现问题时,HDFS会根据复制因子查找另外两个节点上的数据副本,以保证数据的完整性。在后续操作中,HDFS将停止向故障节点传输块数据,直到其恢复正常运行。

因此,即便在写入数据时有某些异常状况,最终HDFS也会确保数据安全地持久化到集群中去。

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

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

相关文章

【人脸检测0】视频分解图片与图片合成视频

一,引言 目标:这小节主要通过两个demo熟悉视频分解图片与图片合成视频的OpenCV的应用 环境:python3.6+OpenCV3.3.1 二,示例 Demo1:视频分解图片 目标: 1.指定文件夹中读取视频文件 2.将视频文件分解为图片 3.将图片保存在指定文件夹中 # -*-coding:utf-8-*- #auth…

Eureka配置文件详解

Eureka配置文件详解 文章目录 Eureka配置文件详解一、Eureka instance 配置项:二、Eureka Client 配置项三、Eureka Dashboard仪表板配置项四、Eureka Server配置项4.1 server与client关联配置4.2 server 自定义实现的配置4.3 server 与 remote 关联的配置4.4 serve…

《计算机图形学基础教程(孔令德)》期末考试-复习重点

文章目录 第一章(重点):考概念1. 计算机图形的两种表示方法 P52. 计算机图形学、模式识别、计算机视觉等等之间的关系 P63. 计算机图形学的研究内容 ( 笔记P7 )4. 发展历史 P75. 图形显示设备的发展 P96. 相关名词解释…

导入动画

资料 Rig Animation Unity性能优化 参数设置建议 Animation Type 不存在动画选择None;非人形动画选择Generic;人形动画可选择Generic或Humanoid。 需要反向动力学或动画重定向使用Humanoid,其他情况可使用Generic 骨骼数目相差不大时,Generci比Humano…

GWAS:表型的标准化(the normalization of phenotype)

GWAS表型的标准化方法一般有Quantile normalization、Inverse rank normalization、Z-score normalization等。 各自区别如下: 一、Quantile normalization 该方法将每个样本中表型值进行排序,然后将其规范化到一个标准分布,通常是正态分布…

uniapp多级联动选择器,区域选择组件分享

uniapp官方的多级联动选择器效果怎么样就不多说了,一言难尽。。。。 然后我对比了多个组件库,发现了uview组件库,里面有个picker选择器还可以,这是链接 但是在使用过程中也发现了该组件的一些问题 1、操作栏只能显示在顶部&…

MAC搭建M1环境的stable-diffusion

MAC M1 搭建 stable-diffusion 环境 文章目录 MAC M1 搭建 stable-diffusion 环境环境准备1. 硬件环境2. 系统环境3. 基础软件环境 主要参考资料操作步骤1. 下载git2. 下载conda3. 创建python环境4. 下载仓库5. 安装依赖6. 转换模型7. 验证和测试8. 构造Web界面9. 测试WebUI10.…

2023软件测试面试热点问题,3天刷完你的软件测试就牛了~

与开发工程师相比,软件测试工程师前期可能不会太深,但涉及面还是很广的。 在一年左右的实习生或岗位的早期面试中,主要是问一些基本的问题。 涉及到的知识主要包括MySQL数据库的使用、Linux操作系统的使用、软件测试框架问题、测试环境搭建问…

2022电工杯数学建模B题解题思路(5G 网络环境下应急物资配送问题)

一、前言 本文是对2022年第十四届 “电工杯” 高校数学建模挑战赛B题:5G 网络环境下应急物资配送问题的解题思路,希望能够对正在学习数学建模或者研究该类问题的读者提供帮助。作者在当届的比赛中,获得了本科组三等奖的成绩&#xff…

【新星计划·2023】Linux是什么?它与Windows有什么区别?

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、Linux是什么? 二、Linux的应用领域 1、服务器领域 2、嵌入式领域 3、虚拟化 三、Linux的未来 1、云计算 2、大数…

Nmap中NSE数据文件分析

Nmap中NSE数据文件分析 1.Nmap中数据文件所在的位置2.暴力穷举时所使用的用户名和密码列表数据文件3.Web应用审计数据文件http-fingerprints.luahttp-sql-errors.lsthttp-web-files-extensions.lsthttp-devframework-fingerprints.luahttp-folders.txtvhosts-default.lstwp-plu…

S32K146入门 遇到 DefaultISR

S32K146入门 遇到 DefaultISR 1、芯片型号没有选对,pin管脚匹配不对 比如我使用的是S32K146HFMLQ,100pin,就要选择对应的型号 2、时钟配置不对 开发板是外部晶振8M,类型要选对。 我选择外部时钟给信号,导致一直出…

Linux使用NDK编译libtiff库并移植到Android平台

1.系统要求: ubuntu 20.04 LTS桌面版本 2.下载libtiff源码: 打开libtiff官方网站 ,打开libtiff源码仓库 http://www.simplesystems.org/libtiff/ 复制下载仓库地址: 克隆源码到本址: git clone --recursive https://gitlab.com/libtiff/libtiff.git 进入源码目录 3.安装…

软件测试需不需要懂代码?

无论是刚入测试行业的萌新,还是已经在测试行业闯荡了两三年的小司机们,都会琢磨一个问题:如果要持续发展下去,我要不要懂代码? 在软件测试初级阶段,不需要编程能力。但是任何一个职业,都会追求…

leetcode90. 子集 II(java)

子集II leetcode90. 子集 II题目描述解题思路代码演示 回溯算法专题 leetcode90. 子集 II 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/subsets-ii 题目描述 给你一个整数数组 nums ,其中可能包含重复元素…

00后确实卷,公司新来的卷王,我们这帮老油条还真干不过.....

都说00后躺平了,但是有一说一,该卷的还是卷。 这不,前段时间我们公司来了个00后,工作都没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了…

Java集合Map接口的实现类(HashMap、LinkedHashMap等面试题)的结构

HashMap /** 一、Map的实现类的结构:* |----Map:双列数据,存储key-value对的数据 ---类似于高中的函数:y f(x)* |----HashMap:作为Map的主要实现类;线程不安全的,效率高;存储null的key和value|…

AIGC之文本内容生成概述(上)

由于本文内容稍微长了一点点,所以分成了上下两篇文章来介绍,本文是上篇,下篇将会在后续发布。关于自然语言的生成方面,这一块的内容太多了,本文也只是穿针引线,帮大家理清学习路线而已,更多的内…

关于ROS/ROS2 bag包的名称修改问题

1 问题的提出 在ROS/ROS2中,ROS 的 bag包的名称通常会包含录制的具体时间:YYYY-MM-DD-小时-分钟-秒钟,但是这样可读性不强,而且过一段时间,就不知道这个包是关于什么内容的了。如果需要修改bag包的名称,该…

从0开始,手写MySQL事务

说在前面:从0开始,手写MySQL的学习价值 尼恩曾经指导过的一个7年经验小伙,凭借精通Mysql, 搞定月薪40K。 从0开始,手写一个MySQL的学习价值在于: 可以深入地理解MySQL的内部机制和原理,Mysql可谓是面试的…