我的编程空间,编程开发者的网络收藏夹
学习永远不晚

HDFS的读写流程是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

HDFS的读写流程是什么

今天小编给大家分享一下HDFS的读写流程是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

HDFS的读写流程是什么

1.读文件的流程

HDFS的读写流程是什么

如图所示,读文件的流程主要包括以下6个步骤:

  1. 打开分布式文件:调用分布式文件 DistributedFileSystem.open( ) 方法;
  2. 寻址请求:从 NameNode 处得到 DataNode 的地址,DistributedFileSystem使用 RPC 方式调用了NameNode,NameNode 返回存有该副本的DataNode 地址,DistributedFileSystem 返回了一个输入流对象(FSDataInputStream),该对象封装了输入流 DFSInputStream;
  3. 连接到DataNode:调用输入流 FSDataInputStream.read( ) 方法从而让DFSInputStream 连接到 DataNodes;
  4. 从 DataNode 中获取数据:通过循环调用 read( ) 方法,从而将数据从 DataNode 传输到客户端;
  5. 读取另外的 DataNode 直到完成:到达块的末端时候,输入流 DFSInputStream 关闭与 DataNode 连接, 寻找下一个 DataNode;
  6. 完成读取,关闭连接:即调用输入流 FSDataInputStream.close( );

2.写文件流程

HDFS的读写流程是什么
  1. 发送创建文件请求:调用分布式文件系统 DistributedFileSystem.create( )方法;
  2. NameNode 创建文件记录:分布式文件系统 DistributedFileSystem 发送 RPC 请求给 NameNode,NameNode 检查权限后创建一条记录,返回输出流 FSDataOutputStream,封装了输出流 DFSOutputDtream;
  3. 客户端写入数据:输出流 DFSOutputDtream 将数据分成一个个的数据包,并写入内部队列。DataStreamer 根据 DataNode 列表来要求 NameNode 分配适合的新块来存储数据备份。 一组 DataNode 构成管线(管线的 DataNode 之间使用 Socket 流式通信);
  4. 使用管线传输数据:DataStreamer 将数据包流式传输到管线第一个DataNode,第一个 DataNode 再传到第二个DataNode,直到完成;
  5. 确认队列:DataNode 收到数据后发送确认,管线的 DataNode 所有的确认组成一个确认队列。所有 DataNode 都确认,管线数据包删除;
  6. 关闭:客户端对数据量调用 close( ) 方法。将剩余所有数据写入DataNode管线,联系NameNode并且发送文件写入完成信息之前等待确认;
  7. NameNode确认:
  8. 故障处理:若过程中发生故障,则先关闭管线,把队列中所有数据包添加回去队列,确保数据包不漏。为另一个正常 DataNode 的当前数据块指定一个新的标识,并将该标识传送给 NameNode,一遍故障 DataNode 在恢复后删除上面的不完整数据块。从管线中删除故障 DataNode 并把余下的数据块写入余下正常的 DataNode。NameNode 发现复本两不足时,会在另一个节点创建一个新的复本;

在数据的读取过程中难免碰到网络故障,脏数据,DataNode 失效等问题,这些问题 HDFS 在设计的时候都早已考虑到了。下面来介绍一下数据损坏处理流程:

  • 当 DataNode 读取 block 的时候,它会计算 checksum。
  • 如果计算后的 checksum,与 block 创建时值不一样,说明该 block 已经损坏。
  • Client 读取其它 DataNode上的 block。
  • NameNode 标记该块已经损坏,然后复制 block 达到预期设置的文件备份数 。
  • DataNode 在其文件创建后验证其 checksum。

以上就是“HDFS的读写流程是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

HDFS的读写流程是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

HDFS的读写流程是什么

今天小编给大家分享一下HDFS的读写流程是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.读文件的流程如图所示,读文件
2023-06-27

HDFS中读写流程是怎么样的

这篇文章给大家分享的是有关HDFS中读写流程是怎么样的的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。文件读流程也包含该列表各block的分布在Datanode地址的列表当然读操作对于Client端是透明的,感觉就
2023-06-02

Hadoop中HDFS文件读写流程是怎么样的

这篇文章主要介绍了Hadoop中HDFS文件读写流程是怎么样的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、文件读流程说明读取操作是对于Cient端是透明操作,感觉是连续
2023-06-03

hadoop的读写流程是什么

Hadoop的读写流程主要分为两部分:HDFS的读写流程和MapReduce的读写流程。HDFS的读写流程:写入流程:当客户端需要向HDFS写入数据时,首先会将数据划分为块(通常为128MB)并进行复制,然后通过HDFS客户端将数据块传输给
hadoop的读写流程是什么
2024-03-04

HDFS读流程的示例分析

这篇文章给大家分享的是有关HDFS读流程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.客户端或者用户通过调用FileSystem对象的Open()方法打开需要读取的文件,这时就是HDSF分布式系统所
2023-06-02

HDFS文件读流程的示例分析

这篇文章主要介绍了HDFS文件读流程的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。用图来理解:详解HDFS读的过程:1.Client客户端发出请求open到Dist
2023-06-03

超详细的HDFS读写流程详解(最容易理解的方式)

HDFS采用的是master/slaves这种主从的结构模型管理数据,这种结构模型主要由四个部分组成,分别是Client(客户端)、Namenode(名称节点)、Datanode(数据节点)和SecondaryNameNode。HDFS作为hadoop的分布式
超详细的HDFS读写流程详解(最容易理解的方式)
2022-04-03

HDFS文件写流程的示例分析

小编给大家分享一下HDFS文件写流程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!图理解:详解HDFS写的过程:1.Client客户端发出请求open到
2023-06-03

如何解析HDFS的写文件流程

这篇文章给大家分享的是有关如何解析HDFS的写文件流程的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。文件是如何写入HDFS的 ?下面我们来先看看下面的“写”流程图: 假如我们有一个文件test.t
2023-06-03

hbase读取数据的流程是什么

HBase读取数据的流程如下:客户端向HBase集群发送读取请求,请求包括表名、行键和列族等信息。HMaster接收到请求后,根据表名和行键确定数据所在的RegionServer。RegionServer根据请求中的行键查找对应的HFi
hbase读取数据的流程是什么
2024-03-05

java中IO流读写乱码是什么原因?

为什么IO流读写中可能会出现乱码问题??是什么原因?1、编码和解码规则不一致2、这个字符编码不支持某种语言(ex:中文)那我们应该怎么去尽可能的避免出现乱码的情况呢??1、编码 : String - byte[] String中有对应的方法: ①:
java中IO流读写乱码是什么原因?
2019-08-14

Node中的可读流是什么

这篇文章主要介绍了Node中的可读流是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Node中的可读流是什么文章都会有所收获,下面我们一起来看看吧。1. 基本概念1.1. 流的历史演变流不是 Nodejs
2023-07-05

Java IO流创建读取与写入操作是什么

这篇文章主要讲解了“Java IO流创建读取与写入操作是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java IO流创建读取与写入操作是什么”吧!概念IO流可以初步的理解为数据间的传输
2023-06-30

hdfs命令指的是什么

这篇文章主要讲解了“hdfs命令指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“hdfs命令指的是什么”吧!hdfs命令是指Hadoop hdfs系统的
2023-03-15

qt多线程读写文件的方法是什么

在Qt中,可以使用QThread类来实现多线程读写文件。首先,创建一个自定义的QThread子类,重写其run()函数,该函数会在子线程中执行。在run()函数中,可以使用标准的C++文件读写操作。例如,以下是一个简单的示例,将在子线程中读
2023-09-22

linux多进程读写文件的方法是什么

Linux中多进程读写文件的方法有以下几种:1. 使用文件锁(File Locking):可以使用文件锁来确保在任意时刻只有一个进程能够读取或写入文件。常见的文件锁包括共享锁和独占锁,可以通过调用fcntl()函数来实现。2. 使用信号量(
2023-09-27

hadoop和hdfs的区别是什么

Hadoop是一个开源的分布式计算框架,可以实现对大规模数据的存储和处理,而HDFS(Hadoop Distributed File System)是Hadoop中的一部分,是用来存储数据的分布式文件系统。具体来说,Hadoop是一个包含
hadoop和hdfs的区别是什么
2024-03-14

HDFS的工作原理是什么

这篇文章将为大家详细讲解有关HDFS的工作原理是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。HDFS的工作原理HDFS支持在计算节点之间快速传输数据。在开始阶段,它与MapReduce紧密耦合——M
2023-06-05

mysql读写分离的作用是什么

这篇文章将为大家详细讲解有关mysql读写分离的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、说明是让主数据库处理事务性增、改、删操作,而从数据库处理SELECT查询操作。数据
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录