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. cer, pfx 创建,并且读取公钥/密钥,加解密 (C#程序实现)

    PKI技术(public key infrastructure)里面,cer文件和pfx文件是很常见的.通常cer文件里面保存着公钥以及用户的一些信息,pfx里面则含有私钥和公钥. 用makecert ...

  2. 05DotNet基本常用类库

    1.String成员方法(常用) bool Contains(String str);判断字符串对象是否包含给定的字符串; bool StartsWith(String str);判断字符串对象是否以 ...

  3. javascript基础学习(十三)

    javascript之文档对象 学习要点: 文档对象 文档对象的应用 一.文档对象 Document对象是代表一个浏览器窗口或框架中的显示HTML文件的对象.javascript会为每个HTML文档自 ...

  4. display 属性

    这里向大家描述一下HTML DOM display属性的定义和用法,HTML DOM display属性主要用来设置元素如何显示,比如当此属性值为none时,表示此元素不会被显示,而block则表示此 ...

  5. 用soaplib的django webserver

    前面写过怎么利用suds来调用webservicePython调用基于https协议的SOAP WebService,这篇讲的是如何用soaplib开发SOAP WebService(最近发现国外开源 ...

  6. Xcode 快捷键-b

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

  7. java 代码格式(转)

    //转至博客:http://developer.51cto.com/art/201202/320317.ht /** * Java编码格式个人推荐,参考JDK源码和Hyperic HQ源码(原spri ...

  8. asp.net WebForm 多语言的实现

    1.这里介绍的是实现中文和英文的切换.首先多语言的实现是采用资源文件的形式,建立2个多语言的资源文件.Resource.resx和Resource.zh-CN.resx. 2.将多语言这个属性放到用户 ...

  9. Mobie 有用的几个css js代码

    1. 防止页面缩放 <meta name="viewport" content="width=device-width, initial-scale=1, maxi ...

  10. Delphi新语法

    http://www.cnblogs.com/hnxxcxg/category/456344.html