1. 首先我们看一看文件读取:

(1)客户端(java程序、命令行等等)向NameNode发送文件读取请求,请求中包含文件名和文件路径,让NameNode查询元数据。

(2)接着,NameNode返回元数据给客户端,告诉客户端请求的文件包含哪些块以及这些块位置(块在哪些DataNode中可以找到)。

比如:下面的数据块A在DataNode1、DataNode2、DataNode4中可以找到,这些信息就会反馈给客户端,这样客户端就知道数据块A可以在DataNode1、DataNode2、DataNode4中可以找到。

(3)接下来根据之前NameNode反馈的元数据,获知数据块的DataNode分布。这样的话,客户端就会去这些DataNode去读取Blocks,下载获取这些数据块,如下:

(4)组装数据块,形成完整的文件。

这样读取过程就完成了。

2. 接着我们看看文件的写入过程:

(1)先看看写入的总流程图,如下:

(2)写入数据第一步客户端拆分文件成块(固定大小,内容大小默认64M),客户端拆分完毕之后,通知NameNode。这个时候NameNode会返回当前在线而且拥有足够磁盘空间的DataNode的信息给客户端。客户端根据这个返回的DataNode信息,对块Blocks进行写入。注意块数据一块一块写入的,比如上面第一写入的数据块就是数据块C(写入到DataNode1)。DataNode1利用一个复制管道(流水线复制),把数据块C复制DataNode3、DataNode4上面。最后更新元数据,告诉NameNode已经完成创建一个新的数据块C的存在。

大数据笔记06:大数据之Hadoop的HDFS(文件的读写操作)的更多相关文章

  1. Java 对不同类型的数据文件的读写操作整合器[JSON,XML,CSV]-[经过设计模式改造](2020年寒假小目标03)

    日期:2020.01.16 博客期:125 星期四 我想说想要构造这样一个通用文件读写器确实不容易,嗯~以后会添加更多的文件类型,先来熟悉一下文件内容样式: <?xml version=&quo ...

  2. Hadoop基础-HDFS的API常见操作

    Hadoop基础-HDFS的API常见操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本文主要是记录一写我在学习HDFS时的一些琐碎的学习笔记, 方便自己以后查看.在调用API ...

  3. Hadoop之HDFS文件操作常有两种方式(转载)

    摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件    命令行     Java API HD ...

  4. Hadoop之HDFS文件操作

    摘要:Hadoop之HDFS文件操作常有两种方式.命令行方式和JavaAPI方式.本文介绍怎样利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件    命令行     Java API HD ...

  5. 大数据笔记(二)——Apache Hadoop的体系结构

    一.分布式存储 NameNode(名称节点) 1.维护HDFS文件系统,是HDFS的主节点. 2.接收客户端的请求:上传.下载文件.创建目录等. 3.记录客户端操作的日志(edits文件),保存了HD ...

  6. hadoop学习笔记(六):HDFS文件的读写流程

    一.HDFS读取文件流程: 详解读取流程: Client调用FileSystem.open()方法: 1 FileSystem通过RPC与NN通信,NN返回该文件的部分或全部block列表(含有blo ...

  7. hadoop执行hdfs文件到hbase表插入操作(xjl456852原创)

    本例中需要将hdfs上的文本文件,解析后插入到hbase的表中. 本例用到的hadoop版本2.7.2 hbase版本1.2.2 hbase的表如下: create 'ns2:user', 'info ...

  8. hadoop的hdfs文件操作实现上传文件到hdfs

    这篇文章主要介绍了使用hadoop的API对HDFS上的文件访问,其中包括上传文件到HDFS上.从HDFS上下载文件和删除HDFS上的文件,需要的朋友可以参考下hdfs文件操作操作示例,包括上传文件到 ...

  9. Hadoop学习-hdfs安装及其一些操作

    hdfs:分布式文件系统 有目录结构,顶层目录是:  /,存的是文件,把文件存入hdfs后,会把这个文件进行切块并且进行备份,切块大小和备份的数量有客户决定. 存文件的叫datanode,记录文件的切 ...

随机推荐

  1. js bind

    1.作用 函数的bind方法用于将函数体内的this绑定到某个对象,然后返回一个新函数. //bind 相比于call apply   this 都等于 obj;   bind是产生一个新的函数 不执 ...

  2. python下 help()使用方法

    查看python所有的modules:help("modules") 单看python所有的modules中包含指定字符串的modules: help("modules ...

  3. C++ 性能剖析 (四):Inheritance 对性能的影响

    (这个editor今天有毛病,把我的format全搞乱了,抱歉!) Inheritance 是OOP 的一个重要特征.虽然业界有许多同行不喜欢inheritance,但是正确地使用inheritanc ...

  4. JQuery验证input

    jsp中表单如下: <form method="post" action="AddPlayer"> <div class = "on ...

  5. Extjs之rowEditing编辑状态时列不对齐

    Extjs在使用rowEditing的时候,会在每一列加上editor属性,表示当处于编辑状态时这一列的值是什么类型的,后突然发现在rowEditing处于编辑状态时每一列的宽度边框了,如果列数非常多 ...

  6. ppt怎么换背景图片|PPT换背景设置方法

    PPT怎么换背景?PPT背景可谓是PPT幻灯片的灵魂,优美绚丽的PPT背景能为自己做的PPT幻灯片锦上添花.今天,格子啦小编就教大家PPT换背景的方法,让你不再羡慕别人所做PPT的美丽背景,也可以自己 ...

  7. UITableView的详细使用

    UITableView的详细使用   UITableView是app开发中常用到的控件,功能很强大,多用于数据的显示.下面以一个简单的实例来介绍tableview的基本用法.(适合新手,高手飘过) @ ...

  8. Xcode 快捷键-b

    0.跳到指定行command + L; 1.配置高亮方案:Fonts & Colors 2.键盘快捷键:Key Bindings 3.代码缩进:Re-indent selection.(快捷键 ...

  9. 代码度量工具——SourceMonitor的学习和使用

    http://www.cnblogs.com/bangerlee/archive/2011/09/18/2178172.html 引言 我们提倡编写功能单一.结构清晰.接口简单的函数,因为过于复杂的函 ...

  10. 转:Top 10 Algorithms for Coding Interview

    The following are top 10 algorithms related concepts in coding interview. I will try to illustrate t ...