1.HDFS写流程

[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ hdfs dfs -put LICENSE.txt /
19/02/20 21:30:22 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$

对于我们操作者而言,是无感知的
1.Client调用FileSystem.create(filePath)方法,
去与NN进行【RPC】通信,check该路径的文件是否存在
以及有没有权限创建该文件。 假如OK,就创建一个新文件,
但是不关联任何的block,nn根据上传的文件大小且块大小且副本数,
计算多少块,以及块存放的dn,最终将这些信息返回给客户端
则为【FSDataOutputStream】。

2.Client调用FSDataOutputStream.write方法,将第一个块的
第一个副本写到第一个DN,写完写第二个副本,写完写第三个副本;
当第三个副本写完,返回给ack packet给第二个副本的DN,然后第二个DN返回ack packet给第一个DN;
第一个DN返回ack packet给FSDataOutputStream对象,标识第一个块,3副本写完!
然后依次写剩余的块!
(对操作者来说是透明的)

3.当向文件写入数据完成后,Client调用FSDataOutputStream.close()方法。关闭输出流,flush换成区的数据包。
4.再调用FileSystem.complete(),通知NN节点写入成功。

3DN
3副本
副本数据=DN

1DN
1副本
测试:DN挂了 能不能写
同比: 3DN 3副本 1DN挂了 肯定写不成功

10DN
3副本
副本数据<DN
测试:DN挂了 写

总结: 存活的DN满足我们的副本数 就能写

2.读流程

FSDataIutputStream
1.Client通过FileSystem.open(filePath),
去与NN进行【RPC】通信,返回该文件的部分
或全部的block列表,也就是返回FSDataInputStream对象。

2.Client调用【FSDataInputStream】对象的read()方法,
a. 去与第一个块的最近的DN进行read,读取完后,会check,
假如success,会关闭与当前DN通信。假如fail 会记录失败的DN+block信息,下次就不会读取。
那么会去该块的第二个DN的地址读取。
b.然后去第二个块的最近的DN上读取,会check,success,会关闭与当前DN通信。
c.假如当前block列表全部读取完成,文件还没结束,那么FileSystem会从NN获取下一批的block列表。
(对于操作者,是透明的,感觉就是连续的数据流)

3.Client调用FSDataInputStream.close() 关闭输入流

3.副本放置策略

生产上 尽量将读写的动作 选取DN节点

HDFS读流程,写流程,放置策略相关推荐

  1. Hadoop理论——hdfs读、写流程

    在Hadoop中我们一定会使用hdfs的传输,那么,hdfs的读写流程究竟是什么,我利用了一点时间整理了一下 首先就是官网的图,介绍了HDFS hdfs写流程 1,客户端client调用Distrib ...

  2. 【大数据入门笔记系列】第三节 Hdfs读、写数据处理流程

    [大数据入门笔记系列]第三节 Hdfs读.写数据处理流程 Hdfs简介 写数据处理流程 读数据处理流程 后记 跳转 Hdfs简介 一般而言,Hdfs是由一个NameNode节点和若干个DataNode ...

  3. Hadoop —— 漫画图解hdfs读、写、容错、副本机制

    本文图片来自:Maneesh Varshney 图解Hdfs相关漫画 pdf下载链接:https://wiki.scc.kit.edu/gridkaschool/upload/1/18/Hdfs-ca ...

  4. F2FS源码分析-2.2 [F2FS 读写部分] F2FS的一般文件写流程分析

    F2FS源码分析系列文章 主目录 一.文件系统布局以及元数据结构 二.文件数据的存储以及读写 F2FS文件数据组织方式 一般文件写流程 一般文件读流程 目录文件读流程(未完成) 目录文件写流程(未完成 ...

  5. HDFS详解(架构设计、副本放置策略、读写流程、进程、常用命令等)

    前言:当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区(Partition)并存储到若干台单独的计算机上.管理网络中跨多台计算机存储的文件系统成为分布式文件系统(distrib ...

  6. HDFS的读/写流程

    1.HDFS读流程 HDFS读流程 1.1 .Client通过FileSystem.open(filePath)方法,与NN节点进行[rpc]协议通信,校验是否有权限是否存在,假如都ok,返回该文件的 ...

  7. Hadoop HDFS创建文件/写数据流程、源码详细解析

    HDFS创建文件/写数据源码解析 HDFS HDFS写流程 创建文件源码 客户端 DistributedFileSystem DFSClient DFSOutputStream 客户端/Namenod ...

  8. hdfs写流程和MR缓冲区

    一.hdfs的写流程 1. 客户端发起RPC请求到NameNode 2. NameNode收到请求之后,进行校验: a. 校验用户是否有操作权限 b. 校验这个文件是否存在 3. 记录元数据,计算这个 ...

  9. hadoop 读流程和写流程

    hadoop HDFD读流程 hadoop HDFD写流程package com.lhj.hadoop;import java.io.BufferedReader; import java.io.IO ...

最新文章

  1. 20155321 实验四 Android程序设计
  2. 控制编译文件控制代码质量
  3. 三天流量有效期具体怎么算_信用证具体的费用怎么算?
  4. opencv的K近邻算法
  5. 赢在中国 (2008-3-19)
  6. java const关键字_const关键字:终于拥有真正的常量声明语句
  7. VC中对CString 的读写(ini文件)
  8. Dell服务器与IntelX520万兆网卡兼容性问题解决过程
  9. python虚拟cpu性能_基于Tensorflow:CPU性能分析
  10. 交换十六进制的的高低字节
  11. 软件过程改进杂谈 00.序
  12. luogu_4551【题解】最长异或路径 trie树
  13. 读余华《活着》,你好,我叫福贵
  14. macbook linux 双系统,mac安装linux双系统的吐槽
  15. [licode cs交互] 4 erizo controller对 android client鉴权通过
  16. 织梦ajax登录界面,dede织梦后台登陆成功后又跳转到登陆页面
  17. 基于ASP.NET的电商系统的设计与实现
  18. 史上最全最牛的C++整人代码
  19. 金山代码高人,雷军的前辈,虽退隐江湖依然是传说
  20. 美通社日历 | 会展及重要事件信息、企业财报发布,节假日备忘(3月15日—3月21日)...

热门文章

  1. 大白话5分钟带你走进人工智能-第二十二节决策树系列之概念介绍(1)
  2. Android高级开发面试题目,再也不用担心不能升职加薪了。
  3. Linux命令解释之df
  4. sentinel的资料整理
  5. 【李宏毅2020 ML/DL】补充:Support Vector Machine (SVM)
  6. 解决datagridview 横向的scrollbar不显示
  7. Python字典依据value排序
  8. Openstack虚拟机实例备份方案测试
  9. SFS2X 例子(java 扩展加as 客户端)
  10. VoltDB培训PPT一则