HDFS的读/写流程

1.HDFS读流程

HDFS读流程

1.1 、Client通过FileSystem.open(filePath)方法,与NN节点进行【rpc】协议通信,校验是否有权限是否存在,假如都ok,返回该文件的部分或全部的block的列表(包含各个block块的分布在DN地址的列表),也就是返回【FSDataInputStream】对象;
1.2、Clinet调用FSDataInputStream.read方法。
a.与第一个块的最近的DN进行read,读取完成后,会check,假如ok,会关闭与当前的DN的通信;假如失败会记录块的这个副本+DN信息,向NN汇报这个块副本损坏,下次就不会从这读取。那么就去该块的第二个DN的地址读取
b.然后读取第二个块,步骤和a一样
c.假如block列表读取完成后,文件还未结束,那么FileSystem会从NN获取下一批次的block的列表。
1.3、Client调用FSDataInputStream.close()方法,关闭输入流。

2.HDFS写流程

HDFS写流程

 

2.1 、Client调用FileSystem.create(filePath)方法,与NN进行【rpc】通信,检验该路径是否有权限创建是否文件存在,假如ok,就创建一个新的文件,但不关联任何的block,返回一个【FSDataOutputStream】(假如不ok,直接返回错误)

2.2、 Client调用FSDataOutputStream.write方法
a.将第一个块的第一个副本写入DN1,第一个副本写完传输给第二个DN2,第二个副本写完就传输给第三个DN3,当第DN3写完,就返回一个ack packet给DN2,DN2就返回ack packet给DN1,DN1就返回ack packet的FSDataOutputStream对象,标识第一个块的三个副本都写完了
b.余下的块依次这样

2.3、 当向文件写入数据完成后,Client调用FSDataOutputStream.close()方法
关闭输出流

2.4、 再调用FileSystem.complete()方法,告诉NN节点写入成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS Code设置中文插件

Vscode是一款开源的跨平台编辑器。默认情况下,vscode使用的语言为英文(en) 1)打开vscode工具; 2)使用快捷键组合【CtrlShiftp】,在搜索框中输入“configure display language”,点击确定后; 3&a…

1.4 CDA扩展

本地定义的标记可能被使用当本地的语义在CDA规范中没有相应的表述。当为不共享的标签的含义提供一个简洁、标准的机制时,CDA力求在最高的层次上共享的语义上进行标准化。为了支持本地扩展的需求,包含CDA架构之外的XML节点和属性是允许的。这些扩展不应该…

如何:将 TraceSource 和筛选器与跟踪侦听器一起使用(转载)

本文转载:http://msdn.microsoft.com/zh-cn/library/ms228993.aspx .NET Framework 2.0 版中的新功能之一就是增强的跟踪系统。基本的前提并未改变:跟踪消息通过开关发送到侦听器,侦听器则向关联的输出介质报告数据。2.0 版的一个主要区别在于…

C++排序之stable_sort()的方法

stable_sort()可以对vector的某个成员进行排序&#xff0c;而且可保证相等元素的原本相对次序在排序后保持不变。 下面是该函数的实现方法代码&#xff1a; #include <iostream> #include<math.h> #include <string> #include <vector> #include <…

linhaifeng fullstack

fullstack day02: 数据类型、字符编码、文件处理 http://www.cnblogs.com/linhaifeng/articles/7133357.html 转载于:https://www.cnblogs.com/marcoxu/p/10564094.html

javascript校验2

* 判断字符串是否符合指定的正则表达式 */ Java代码 function f_check_formatStr(obj) { var str obj.value; var dtype obj.eos_datatype; var regu dtype.substring(dtype.indexOf("(")1,dtype.indexOf(")")); //指定的正则表…

抓取qq邮箱联系人

今天是:2010-03-14 &#xff0c;纪念昨晚熬到3点! 题外话&#xff1a;模拟登陆请求页面这次我用了httpclient4.0&#xff0c;也顺便学习一下&#xff0c;4.0跟以前的版本用法上有很大的不同&#xff0c;具体情况Google一下就知道了&#xff0c;个人觉得知道原理就行了&#xff…

HDFS的Block size的默认大小

今天无意中听到了同事说关于HDFS中每个block的大小&#xff0c;特意查了下&#xff1a; 从Hadoop的官网上看了各个版本的说明文档中关于 Data Blocks 的说明&#xff0c;发现是从2.7.3版本开始&#xff0c;官方关于Data Blocks 的说明中&#xff0c;block size由64 MB变成了12…

Jconsole查看Weblogic自定义MBean

简单的Jconsole连接到weblogic进程&#xff0c;只能连接Platform MBean server,看不到自定义MBean。 这时我们需要连接到 WebLogic MBean server&#xff0c;通过如下方式&#xff1a; 1. 创建wlfulclient.jar 1) cd %WL_HOME%/server/lib 2) java -jar wljarbuilder.jar 2. 启…

Centos7 安装Mysql5.7

我们经常需要在服务器上安装mysql&#xff0c;各种文档都有&#xff0c;但是很多都是一部分&#xff0c;我现在总结了一下&#xff0c;放到一起&#xff0c;以后大家不用一篇一篇查询了。 1.安装yum repo 由于CentOS 的yum源中没有mysql&#xff0c;需要到mysql的官网下载yum r…

MySQL Innodb存储引擎使用B+树做索引的优点

对于数据库来说&#xff0c;索引和表数据都是存放在磁盘上的&#xff0c;一般使用B树作为索引 MySQL Innodb存储引擎使用了B树作为索引的优点&#xff0c;主要有以下原因&#xff1a; 1、索引和表数据都是存放在磁盘上的&#xff0c;如果磁盘上的数据量过大时&#xff0c;无法…

用eclipse配置spket编写extjs代码方法

依然是备忘用的&#xff0c;因为以前学过的东西很容易就会遗忘&#xff0c;现在每学一点就记录下来&#xff0c;一来让自己有一定的成就感&#xff0c;二来也方便以后查阅。 ExtJS的好处我就不多说了&#xff0c;富客户端的ajax框架&#xff0c;美观&#xff0c;大方&#xff0…

【 iview 实践指南】之如何优雅地在Table中嵌套Input(代码篇)

iview 版本 3.2.0 template 部分&#xff1a; <template><div><Table class"data-manage-table"border:disabled-hover"true":columns"columns":data"datalist"><template slot-scope"{ row, index }"…

PHP函数学习摘录

1、任何有效的 PHP 代码都有可能出现在函数内部&#xff0c;甚至包括其它函数和类定义2、PHP 不支持函数重载&#xff0c;也不可能取消定义或者重定义已声明的函数。3、函数名是大小写无关的&#xff0c;不过在调用函数的时候&#xff0c;通常使用其在定义时相同的形式。 变量…

boost::scoped_ptr与std::unique_ptr

boost::scoped_ptr与std::unique_ptr都是类模板&#xff0c;封装了指针 两者都禁用了拷贝构造和赋值函数&#xff0c;因此不能作为STL容器中的元素&#xff0c;因为在执行push_back()时需要调用赋值函数。 std::unique_ptr实际上与boost::scoped_ptr是等价的&#xff0c;只是s…

接口,new,匿名内部类

接口&#xff0c;new&#xff0c;匿名内部类 接口不能被实例化&#xff0c;如&#xff1a; ----------------清单1---------------------- public interface Test { public void doIt(); } --------------------------------------------- 在测试类中语句&#xff1a;Test…

Python: 使用装饰器“@”取得函数执行时间

class A():Python: 使用装饰器“”取得函数执行时间 - oldJ的学习笔记 - 博客频道 - CSDN.NETPython: 使用装饰器“”取得函数执行时间 分类&#xff1a; Python 2009-10-14 12:53 752人阅读 评论(0) 收藏 举报Python中可以使用装饰器对函数进行装饰&#xff08;或说包装&#…

数据库07

索引 索引是一种单独的物理层面的数据结构&#xff0c;其作用是用于加速查询 mysql把数据存储到硬盘中&#xff0c;硬盘读写速度非常慢 一个应用程序&#xff0c;本质上就是对数据进行增删改查 一旦数据量比较大时&#xff0c;硬盘的响应速度变慢&#xff0c;给用户的感觉应用程…

ODT .NET 详解之 SqlDataSource 访问 Oracle

前一篇博文呢&#xff0c;介绍了如何搭配好 Oracle Developer Tools for Visual Studio .NET 的使用环境&#xff0c; 这一篇博文的话就会重点来介绍一下如何通过使用 SqlDataSource 这个控件来访问 Oracle 数据库了&#xff0c; 其实只要环境搭配好了&#xff0c;那么这一篇博…

springboot+thymeleaf+pageHelper带条件分页查询

html层 <div><a class"num"><b th:text"共 ${result.resultMap[pages]} 页"></b></a><a class"num" th:if"${result.resultMap[hasPreviousPage]} true" th:href"{/report/receivePage?cur…