HDFS文件读取和文件写入_Michealkz的博客-CSDN博客


本站和网页 https://blog.csdn.net/qq_43081842/article/details/94476427 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

HDFS文件读取和文件写入_Michealkz的博客-CSDN博客
HDFS文件读取和文件写入
Michealkz
于 2019-07-02 20:05:22 发布
1551
收藏
分类专栏:
Hadoop系列
版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43081842/article/details/94476427
版权
Hadoop系列
专栏收录该内容
13 篇文章
2 订阅
订阅专栏
HDFS的文件写入和文件读取过程详解
文件写入过程:
详细步骤解析:
client发起文件上传请求,通过RPC与NameNode建立通讯,NameNode检查目标文件是否已存在,父目录是否存在,返回是否可以上传;client请求第一个block该传输到哪些DataNode服务器上;NameNode根据配置文件中指定的备份数量及机架感知原理进行文件分配,返回可用的DataNode的地址如:A,B,C; 注:Hadoop在设计时考虑到数据的安全与高效,数据文件默认在HDFS上存放三份,存储策略为本地一份,同机架内其它某一节点上一份,不同机架的某一节点上一份。client请求3台DataNode中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用B,然后B调用C,将整个pipeline建立完成,后逐级返回client;client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位(默认64K),A收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答。数据被分割成一个个packet数据包在pipeline上依次传输,在pipeline反方向上,逐个发送ack(命令正确应答),最终由pipeline中第一个DataNode节点A将pipelineack发送给client;当一个block传输完成之后,client再次请求NameNode上传第二个block到服务器。
文件读取过程:
详细步骤解析:
Client向NameNode发起RPC请求,来确定请求文件block所在的位置;NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode 都会返回含有该 block 副本的 DataNode 地址; 这些返回的 DN 地址,会按照集群拓扑结构得出 DataNode 与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的 DN 状态为 STALE,这样的排靠后;Client 选取排序靠前的 DataNode 来读取 block,如果客户端本身就是DataNode,那么将从本地直接获取数据(短路读取特性);底层上本质是建立 Socket Stream(FSDataInputStream),重复的调用父类 DataInputStream 的 read 方法,直到这个块上的数据读取完毕;当读完列表的 block 后,若文件读取还没有结束,客户端会继续向NameNode 获取下一批的 block 列表;读取完一个 block 都会进行 checksum 验证,如果读取 DataNode 时出现错误,客户端会通知 NameNode,然后再从下一个拥有该 block 副本的DataNode 继续读。read 方法是并行的读取 block 信息,不是一块一块的读取;NameNode 只是返回Client请求包含块的DataNode地址,并不是返回请求块的数据;最终读取来所有的 block 会合并成一个完整的最终文件。
Michealkz
关注
关注
点赞
收藏
打赏
评论
HDFS文件读取和文件写入
HDFS的文件写入和文件读取过程详解文件写入过程:详细步骤解析:client发起文件上传请求,通过RPC与NameNode建立通讯,NameNode检查目标文件是否已存在,父目录是否存在,返回是否可以上传;client请求第一个block该传输到哪些DataNode服务器上;NameNode根据配置文件中指定的备份数量及机架感知原理进行文件分配,返回可用的DataNode的地址如:A...
复制链接
扫一扫
专栏目录
hadoop习题
二三是廿三的博客
04-25
8179
hadoop习题
1.下面哪个程序负责HDFS数据存储。
A、NameNode
B、Jobtracker
C、Datanode
D、secondaryNameNode
2.HDfS中的block默认保存几份?
A、3份
B、2份
C、1份
D、不确定
3.下列哪个程序通常与NameNode在一个节点启动?
A、SecondaryNameNode
B、DataNode
C、TaskTracker
D、Jobtracker
4.Hadoop作者?
A、Martin Fowler
B、Kent Beck
C、
什么是HDFS?(内含习题)
一个程序媛的成长记录❤
04-15
3464
HDFS: 全称 Hadoop Distributed File System ,即:Hadoop分布式文件系统
HDFS的特性:
HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。
而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。
HD...
参与评论
您还未登录,请先
登录
后发表或查看评论
HDFS文件读取
最新发布
weixin_51551506的博客
11-02
165
前提条件:1)Java 运行环境部署完成2)Hadoop 的单点部署完成上述前提条件,我们已经为你准备就绪了。在上述前提条件下,学习HDFS文件读取的相关操作。
HDFS的文件写入过程
黄道婆的专栏
09-20
966
7、HDFS的文件写入过程
详细步骤解析:
1、 client发起文件上传请求,通过RPC与NameNode建立通讯,NameNode检查目标文件是否已存在,父目录是否存在,返回是否可以上传;
2、 client请求第一个block该传输到哪些DataNode服务器上;
3、 NameNode根据配置文件中指定的备份数量及机架感知原理进行文件分配,返回可用的DataNode的地址如:A,B,C;
注:Hadoop在设计时考虑到数据的安全与高效,数据文件默认在HDFS上存放三份...
【hadoop】常见期末考试客观题大全
m0_53612936的博客
04-26
5288
hadoop期末考试题,来着不易。希望大家关注点赞收藏哦
HDFS的读写流程步骤(附图文解析)
奇迹虎虎的博客
03-04
1万+
HDFS的写入流程与读取流程,附图文步骤解析
HDFS写入数据流程
CD523的博客
06-03
1556
1 发送请求 ,连接namenode,请示写入数据。
2. namenode接受写入请求后,
首先判断当前这个操作用户是否拥有写入权限,如果不具有直接报错。
如果有写入权限,接着判断要写入的目录下是否存在这个文件,如果存在,报错,如果不存再,则通过datanode可以上传
3. 客户端对文件进行分操作形成block块
4 先请求 第一个block,存储到哪些地方
5.根据机架感应原理,网络拓扑关系,副本机制,找到相应可以上传的datanode连接列表,返回给客户端。
6.从接受列表中选择第..
HDFS写入流程(文字版)
Slicke_赫的博客
03-26
730
客户端发送请求, 连接NameNode, 请求写入操作.
NameNode接收到请求后, 判断用户有无写入权限, 如果没有, 报错.
如果有写入权限, 判断写入路径下有无这个文件, 如果有, 报错, 如果没有, 通知客户端可以写入.
客户端接收到可以写入的信息后, 开始对文件进行切分, 行程多个block块.
客户端请求NameNode, 第一个block应该存储在哪些DataNode中.
NameNode根据机架感知, 网络拓扑图关系, 副本机制, 来寻找适合的DataNode, 形成地址列表,
hdfs写入流程
epitomizelu的专栏
05-22
172
参考文献:https://blog.csdn.net/b6ecl1k7BS8O/article/details/88386764
HDFS读写流程(史上最精炼详细)
热门推荐
little prince,blue coder
07-16
6万+
概述
开始之前先看看其基本属性,HDFS(Hadoop Distributed File System)是GFS的开源实现。
特点如下:
能够运行在廉价机器上,硬件出错常态,需要具备高容错性
流式数据访问,而不是随机读写
面向大规模数据集,能够进行批处理、能够横向扩展
简单一致性模型,假定文件是一次写入、多次读取
缺点:
不支持低延迟数据访问
不适合大量小文件存储(因为每条元数据占...
HDFS的写入数据的流程图
qq_43494678的博客
10-30
522
一、HDFS的写入数据的流程图
二、HDFS异常写入数据的流程
和上面图的前1-6一样,就是第七步不一样!
第七步!
1.在发送时,先将dataQuene中的packet按顺序发送,发送后再放入到ackquene中。
2.每个节点在收到packet后,向客户端发送ack确认消息。
3.如果一个packet在发送后,已经收到了所有DN返回的ack确认消息,这个packet会在ackQuene中删除。
4.如果一个packet在发送后,在收到DN返回的ack确认消息时超时时!传输中止,ackQuene中的pa
HDFS写入数据的流程
Sula_G的博客
10-26
1778
1.客户端向NameNode发出写文件请求。
2.namenode收到客户端的请求后,首先会检测元数据的目录树;检查权限并判断待上传的文件是否已存在,如果已存在,则拒绝client的上传。如果不存在,则响应客户端可以上传。
3. 客户端收到可以上传的响应后,会把待上传的文件切块(hadoop2.x默认块大小为128M);然后再次给namenode发送请求,上传第一个block块。
4.namenode收到客户端上传block块的请求后,首先会检测其保存的datanode信息...
HDFS概述和超详细的读写流程介绍
qq_45499853的博客
07-08
426
对HDFS分布式文件系统进行概述,并详细介绍客户端在HDFS中的读写流程
HDFS的数据写入
rival_banish的博客
10-26
260
HDFS写数据流程
1.初始化FileSystem,客户端调用create()来创建文件。
2.FileSystem调用元数据节点,在文件系统的命名空间中创建一个新的文件,元数据节点确定文件原来不存在后,给客户端创建文件的权限,然后创建新文件。
3.FileSystem返回DFSOutputStream,客户端用于写数据,客户端开始写入数据。
4.DFSOutputStream将数据分成块,写入data queue。data queue由Data Streamer读取,并通知元数据节点分配数据节点,
Hadoop面试题---hdfs的读写流程
qq_39872456的博客
02-11
786
一、Hdfs的写流程
总体流程:
1、客户端通过Distributed FileSystem 模块的create()方法向NameNode请求上传文件,并告诉namenode上传文件的文件名、文件大小、文件拥有者,NameNode检查目标文件是否已存在,父目录是否存在;
2、NameNode 返回是否可以上传;
3、客户端请求我的第一个 Block 上传到哪几个 DataNode 服务器上;
4、NameNode 返回 3 个 DataNode 节点,分别为 dn1、dn2、dn3(每个文件块默认存储在三
如何从本地导入数据至HDFS上?
大数据工作的日常
03-31
4853
1、建表(文本文档格式)
CREATE TABLE A
User_id double,
User_nm string
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’
STORED AS TEXTFILE;
2、将本地数据以 ‘,’为间隔的文档上传至指定的HDFS路径下
在hadoop机器上,
hadoop fs -put 本地数据路径+文件名.后缀名 HDFS路径
搞定!
另:hadoop fs -ls HDFS路径 --》查看
hadoop fs -r
将实时产生的数据流式写入到hdfs中
不会写代码
01-11
855
Flink将实时产生的数据流式写入到hdfs中
import cn.itcast.day03.source.custom.MyNoParallelSource;
import cn.itcast.day03.source.custom.Order;
import org.apache.flink.api.common.serialization.SimpleStringEncoder;
import org.apache.flink.core.fs.Path;
import org.apache.flink
HDFS写数据过程
galaargl的博客
10-26
1828
1.创建文件请求;
客户端向DistributedFileSystrm发送请求,再由DistributedFileSystrm创建一个输出流叫FSDataOutputStream。HDFS后台会在FSDataOutputStream里面封装DFSOutputStream,DFSOutputStream会专门与数据节点交流进行下一步操作。
2.创建文件元数据;
DFSOutputStream执行rpc远程调用去调用名称节点,使名称节点在他的系统命名空间中新建一个文件。
3.写入数据;
流水线的复制方
Hadoop学习二 HDFS写数据
wang_1997_xu的博客
12-03
106
1、宏观流程
跟NameNode通信请求上传文件,NameNode检查目标文件是否已经存在,父目录是否已经存在
NameNode返回是否可以上传
Client先对文件进行切分,请求第一个block该传输到哪些DataNode服务器上
NameNode返回3个DataNode服务器DataNode 1,DataNode 2,DataNode 3
Client请求3台中的一台DataNode 1(网络拓扑上的就近原则,如果都一样,则随机挑选一台DataNode)上传数据(本质上是一个RPC调用.
hdfs写入数据和读取数据
quietlyw的博客
03-06
370
1.客户端通过shell命令的方式传输文件到HDFS上(申请上传)
2.namenode检查文件夹是否存在,检查文件是否存在,如果文件夹不存在是肯定不能上传的,如果文件存在就要看有没有覆盖写入了
3.返回允许上传通知
4.判断文件的大小,然后切割文件,默认按照128m去切割(hadoop2.x)按照64m去切割(hadoop1.x)
5.通知namenode上传第一个block块
6.namenode通过副本机制得到block块应该放在哪些datanode节点上的地址列表
7.返回这些地址给client端
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:数字20
设计师:CSDN官方博客
返回首页
Michealkz
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
193
原创
1万+
周排名
1万+
总排名
41万+
访问
等级
4875
积分
213
粉丝
293
获赞
144
评论
809
收藏
私信
关注
热门文章
java.sql.SQLRecoverableException: IO 错误: The Network Adapter could not establish the connection
43205
NotePad++设置背景颜色和字体颜色
31146
Kafka命令行操作和Producer数据写入流程
15189
spark 与 scala 版本对应关系
14025
vue element 表格增加删除修改数据
13211
分类专栏
图片保存
分布式高并发
1篇
数据仓库系列
4篇
MachineLearning
3篇
Spark系列
30篇
Flink 系列
14篇
Hive 系列
21篇
Python系列
6篇
算法与数据结构
6篇
云原生
6篇
Hadoop系列
13篇
Linux 系列
19篇
BigData 系列
20篇
Kafka系列
11篇
数据库系列
11篇
MySQL 系列
6篇
Scala 系列
9篇
Shell 系列
4篇
CDH 系列
8篇
Flume 系列
4篇
DevOps
Zookeeper 系列
1篇
Spark性能调优实战
3篇
Sqoop 系列
1篇
Error 合集
21篇
设计模式系列
3篇
Hbase 系列
2篇
大数据调度系列
3篇
服务器
1篇
Git
2篇
Java
8篇
常用工具
2篇
生活随笔系列
1篇
杂记
2篇
源码阅读系列
最新评论
Hive元数据表释义及表关系
qq_41500999:
博主咋没看到表中文名在哪个元数据 表中呢
vue element 表格增加删除修改数据
qq_52431104:
// 移除对应索引位置的数据,可以对row进行设置向后台请求删除数据 这句话怎么理解呢 大佬,后端有删除接口了,我该怎么用
SparkCore排序之-----基本排序
毛毛零:
言简易懂,非常好
Spark性能调优实战-01
Michealkz:
极客时间收费的,开放出来
Spark性能调优实战-01
青春程序不迷路:
这是不是,极客时间的专栏
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
Kubernets 安装和工作原理
Apache Atlas 安装部署
MySQL存储引擎浅析
2022年7篇
2021年35篇
2020年87篇
2019年109篇
目录
目录
分类专栏
图片保存
分布式高并发
1篇
数据仓库系列
4篇
MachineLearning
3篇
Spark系列
30篇
Flink 系列
14篇
Hive 系列
21篇
Python系列
6篇
算法与数据结构
6篇
云原生
6篇
Hadoop系列
13篇
Linux 系列
19篇
BigData 系列
20篇
Kafka系列
11篇
数据库系列
11篇
MySQL 系列
6篇
Scala 系列
9篇
Shell 系列
4篇
CDH 系列
8篇
Flume 系列
4篇
DevOps
Zookeeper 系列
1篇
Spark性能调优实战
3篇
Sqoop 系列
1篇
Error 合集
21篇
设计模式系列
3篇
Hbase 系列
2篇
大数据调度系列
3篇
服务器
1篇
Git
2篇
Java
8篇
常用工具
2篇
生活随笔系列
1篇
杂记
2篇
源码阅读系列
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
Michealkz
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值