首页 > 其他分享 >Hadoop之HDFS读写流程

Hadoop之HDFS读写流程

时间:2024-09-10 18:52:43浏览次数:3  
标签:HDFS 读取 读写 Hadoop Client DataNode NameNode block 客户端

HDFS读写流程

1.写入的流程

1.Client客户端发送上传请求,通过RPC与NameNode建立通信,NameNode检查该用户是否有上传权限,以及上传的文件是否在HDFS对应的目录下重名,如果这两者有任意一个不满足,则直接报错,如果两者都满足,则返回给客户端一个可以上传的信息;

2.Client根据文件的大小进行切分,默认128M一块,切分完成之后给NameNode发送请求第一个block块上传到哪些服务器上;

3.NameNode收到请求之后,根据网络拓扑和机架感知以及副本机制进行文件分配,返回可用的DataNode的地址;

注:Hadoop在设计时考虑到数据的安全与高效, 数据文件默认在HDFS上存放三份, 存储策略为本地一份,同机架内其它某一节点上一份, 不同机架的某一节点上一份。

4.客户端收到地址之后与服务器地址列表中的一个节点如A进行通信,本质上就是RPC调用,建立pipeline,A收到请求后会继续调用B,B在调用C,将整个pipeline建立完成,逐级返回Client;

5.Client开始向A上发送第一个block(先从磁盘读取数据然后放到本地内存缓存),以packet(数据包,64kb)为单位,A收到一个packet就会发送给B,然后B发送给C,A每传完一个packet就会放入一个应答队列等待应答;

6.数据被分割成一个个的packet数据包在pipeline上依次传输,在pipeline反向传输中,逐个发送ack(命令正确应答),最终由pipeline中第一个DataNode节点A将pipelineack发送给Client;

7.当一个block传输完成之后, Client再次请求NameNode上传第二个block,NameNode重新选择三台DataNode给Client。

2、读取流程

1.Client向NameNode发送RPC请求。请求文件block的位置;

2.NameNode收到请求之后会检查用户权限以及是否有这个文件,如果都符合,则会视情况返回部分或全部的block列表,对于每个block,NameNode都会返回含有该block副本的DataNode地址;这些返回的DataNode地址,会按照集群拓扑结构得出DataNode与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的DataNode状态为STALE,这样的排靠后;

3.Client选取排序靠前的DataNode来读取block,如果客户端本身就是DataNode,那么将从本地直接获取数据(短路读取特性);

4.底层上本质是建立Socket Stream(FSDataInputStream),重复的调用父类DataInputStream的read方法,直到这个块上的数据读取完毕;

5.当读完列表的block后,若文件读取还没有结束,客户端会继续向NameNode 获取下一批的block列表;

6.读取完一个block都会进行checksum验证,如果读取DataNode时出现错误,客户端会通知NameNode,然后再从下一个拥有该block副本的DataNode 继续读;

7.read方法是并行的读取block信息,不是一块一块的读取;NameNode只是返回Client请求包含块的DataNode地址,并不是返回请求块的数据;

8.最终读取来所有的block会合并成一个完整的最终文件;

标签:HDFS,读取,读写,Hadoop,Client,DataNode,NameNode,block,客户端
From: https://blog.csdn.net/wadjdkdkdjjd/article/details/141987894

相关文章

  • Python存储与读写二进制文件
    技术背景一般情况下我们会选择使用明文形式来存储数据,如json、txt、csv等等。如果是需要压缩率较高的存储格式,还可以选择使用hdf5或者npz等格式。还有一种比较紧凑的数据存储格式,就是直接按照二进制格式存储。这种格式下,存储的数据之间没有间隔符,在没有压缩的情况下应该是......
  • 分享一个基于python的电子书数据采集与可视化分析 hadoop电子书数据分析与推荐系统 sp
    ......
  • Python读写Excel的各种库
    各库的基本信息库名官网/文档地址说明pandaspandasisafast,powerful,flexibletool.用于读写Excel和数据分析(需其他读写引擎)openpyxlAPythonlibrarytoread/writexlsx/xlsmfiles用于读写OOXML格式文件,读写xlsx格式的首选xlsxwriterAPythonm......
  • Python存储与读写二进制文件
    技术背景一般情况下我们会选择使用明文形式来存储数据,如json、txt、csv等等。如果是需要压缩率较高的存储格式,还可以选择使用hdf5或者npz等格式。还有一种比较紧凑的数据存储格式,就是直接按照二进制格式存储。这种格式下,存储的数据之间没有间隔符,在没有压缩的情况下应该是体积最......
  • 2.HDFS
    HDFS一.HDFS概述1.HDFS的产生背景和定义(1)HDFS产生背景随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到 更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系 统来管理多台机器上的文件,这就是分布式管理系统.HDFS只是分布式文 件管理系统中的一种......
  • Hadoop(二)Hadoop概述
    概述Hadoop是什么Hadoop是一个由Apache基金会所开发的分布式系统基础架构分布式系统:多台服务器共同完成一个任务(例如多台计算机共同存储一份大数据)主要解决:海量数据的存储和海量数据的分析计算问题广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈Hadoop的优势......
  • Hadoop(一)大数据概论
    大数据概念大数据:指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。按顺序给出数据存储单位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB......
  • hadoop基础知识分享(一)
    Hadoop概述Hadoop是一个适合海量数据的分布式存储和分布式计算的平台。Hadoop的处理思想是“分而治之”。Hadoop主要包含三个核心组件:HDFS:分布式存储框架,适合海量数据存储MapReduce:分布式计算框架,适合海量数据计算YARN:资源调度平台,负责给计算框架分配计算资源Hadoop组......
  • Hadoop学习总结
    在深入学习Hadoop的过程中,我逐渐探索了其高级特性和性能优化的技巧,发现这些方法对提升数据处理的效率和集群的稳定性至关重要。Hadoop,作为一个强大的大数据处理框架,其核心组件包括HDFS(分布式文件系统)和YARN(YetAnotherResourceNegotiator)。在掌握了基本的使用方法后,我开始关注如......
  • Hadoop集群搭建----Hadoop安装与配置
    (1)上传Hadoop安装包:Hadoop安装包上传到虚拟机/erport/software目录Hadoop版本:hadoop-3.3.1.tar.gz(2)解压安装Hadoop:tar-zxvfhadoop-3.3.1.tar.gz-C/erport/servers/(3)配置Hadoop环境变量:vim/etc/profile生效:source/etc/profile(4)验证Hadoop环境:hadoopversion......