美文网首页
hdfs文件写入分析

hdfs文件写入分析

作者: scottzcw | 来源:发表于2018-09-05 10:59 被阅读22次

 HDFS写文件涉及到HDFS中NameNode、DataNode、DFSClient等组件

简单的HDFS写文件大体流程如下:

      1、客户端获取文件系统实例FileSyStem,并通过其create()方法获取文件系统输出流outputStream;

            1.1、首先会联系名字节点NameNode,通过ClientProtocol.create()RPC调用,在名字节点上创建文件元数据,并获取文件状态FileStatus;

            1.2、通过文件状态FileStatus构造文件系统输出流outputStream;

      2、通过文件系统输出流outputStream写入数据;

             2.1、首次写入会首先向名字节点申请数据块,名字节点能够掌握集群DataNode整体状况,分配数据块后,连同DataNode列表信息返回给客户端;

             2.2、客户端采用流式管道的方式写入数据节点列表中的第一个DataNode,并由列表中的前一个DataNode将数据转发给后面一个DataNode;

             2.3、确认数据包由DataNode经过管道依次返回给上游DataNode和客户端;

             2.4、写满一个数据块后,向名字节点提交一个数据;

             2.5、再次重复2.1-2.4过程;

      3、向名字节点提交文件(complete file),即告知名字节点文件已写完,然后关闭文件系统输出流outputStream等释放资源。

简单的例子

NameNode中的元数据信息:

  test.log文件上传后,Namenode始终在内存中保存metedata,用于处理“读请求”。metedata主要存储了文件名称(FileName),副本数量(replicas),分多少block存储(block-ids),分别存储在哪个节点上(id2host)等。  到有“写请求”到来时,namenode会首先写editlog到磁盘,即向edits文件中写日志,成功返回后,才会修改内存,并且向客户端返回  hadoop会维护一个fsimage文件,也就是namenode中metedata的镜像,但是fsimage不会随时与namenode内存中的metedata保持一致,而是每隔一段时间通过合并edits文件来更新内容。此时Secondary namenode就派上用场了,合并fsimage和edits文件并更新NameNode的metedata。  Secondary namenode工作流程:secondary通知namenode切换edits文件secondary通过http请求从namenode获得fsimage和edits文件secondary将fsimage载入内存,然后开始合并editssecondary将新的fsimage发回给namenodenamenode用新的fsimage替换旧的fsimage  通过一张图可以表示为: 文件下载  文件下载相对来说就简单一些了,如图所示,Client要从DataNode上,读取test.log文件。而test.log由block1和block2组成。     文件下载的主要流程为:client向namenode发送请求。namenode查看Metadata信息,返回test.log的block的位置。         Block1: h0,h1,h3    Block2: h0,h2,h4开始从h0节点下载block1,block2。

相关文章

  • hdfs文件写入分析

    HDFS写文件涉及到HDFS中NameNode、DataNode、DFSClient等组件 简单的HDFS写文件大...

  • javaAPI操作HDFS文件

    javaAPI写入HDFS文件。 javaAPI读取HDFS javaAPI删除HDFS

  • logstash out file to HDFS

    logstash out file to HDFS logstash 直接把文件内容写入 hdfs 中, 并支持 ...

  • Block 和 Lease恢复

    HDFS 在文件写入过程中会有哪些异常: Client 在写入过程中,NameNode 挂了 Client 在写入...

  • Hadoop 基础(二)

    HDFS 读写流程 我们知道在HDFS中我们的文件按数据块进行存储,那么当我们写入或者读取一个文件的时候HDFS到...

  • Spark学习笔记3

    读取HDFS中的数据,并简单分析,最后结果写入mysql数据库中。 首先建立工程,pom文件中引入以下几个依赖 首...

  • hdfs 读写过程

    hdfs 文件写入过程 Client 发起文件上传请求, 通过 RPC 与 NameNode 建立通讯, Name...

  • 大数据技术之HDFS(四)

    HDFS 的 读写流程 4.1 HDFS 写数据流程 4.1.1 剖析文件 写入 (1)客户端通过 Distrib...

  • DataX HdfsWriter 插件文档

    快速介绍 HdfsWriter 提供向 HDFS 文件系统指定路径中写入 TEXTFILE 文件和 ORCFile...

  • 6)HDFS架构

    HDFS定义 HDFS是分布式文件管理系统中的一种 HDFS使用场景 适合一次写入,多次读出的场景,且不支持文件修...

网友评论

      本文标题:hdfs文件写入分析

      本文链接:https://www.haomeiwen.com/subject/zafjwftx.html