zoukankan      html  css  js  c++  java
  • hadoop学习记录--hdfs文件上传过程源码解析

      本节并不大算为大家讲接什么是hadoop,或者hadoop的基础知识因为这些知识在网上有很多详细的介绍,在这里想说的是关于hdfs的相关内容。或许大家都知道hdfs是hadoop底层存储模块,专门用于存放数据,那么在进行文件上传的时候hdfs是如何进行的呢?我们按照宏观和微观来进行相关解析工作。

      首先需要向大家解释如下几个概念:

      (1) secondaryNamenode: 其实起初我对SN的理解也和大部分人相同,认为SN是NN(nameNode)的一个实时热备份实现HA,并且在一次笔试的过程中还写错了,尴尬,后台经过查看相关的书籍发现其实并不是这么一回事,SN主要是完成的Edits和fsImage的合并工作,以减少NN的工作压力。对于错误的理解其实并不是没有道理,现在版本的hadoop支持进行HA的实时备份。后面的章节后说。

      (2) fsImage和edits: 虽然说不希望在这讲一些概念,但是该说的还是得说。简单的解释: fsimage包含Hadoop文件系统中的所有目录和文件idnode的序列化信息,其中对于文件包含了文件的修改时间、访问时间、块大小和组成一个文件块信息等。对于文件夹而言包含的信息主要有修改时间、访问控制权限等信息。而Edits文件主要是进行客户端对文件操作的记录,比如上传新文件等。并且edits文件会定期与fsimage文件进行合并操作。

      宏观的写入过程:

      具体的流程如下: 

      1.首先是客户端将文件进行分块,分块的大小标准按照配置文件中给定的大小。

      2.然后客户端通知namenode即将上传文件,namenode创建制定目录,并根据配置文件中指定的备份数量及机架感知原理进行文件分配,比如备份数量3由机架感知将3分文件分别存储在机架1的host2,机架2的host1和host3中。

      3. 客户端与指定的datanode建立流传输通道,并向机架1中的host2进行文件传输,传输完成之后host2向机架2中的host1进行文件备份。host2备份完成之后将数据块拷贝到同一个机架的host3中。

      4.3台机器都完成这个过程之后host2,host1,host3分别向namenode发起通知说文件已经存储完成。同时host2向客户端发起通知。

      5.客户端收到host2返回的请求之后向namenode发起通知---已经完成数据写入。则整个流程运行完成。

  • 相关阅读:
    转:不在同一个服务器上的数据库之间的数据操作(oracle/sql server的对比)
    即将来到: CSS Feature Queries (CSS特性查询)
    HTML5 Canvas(画布)实战编程初级篇:基本介绍和基础画布元素
    jQuery animate方法开发极客标签Logo动画融合效果
    Bootstrap3实现的响应式幻灯滑动效果个人作品集/博客网站模板
    无需编码开发快速设计互动式UI
    免费资源:Bootstrap开发的创意模板
    通过Intel XDK编写跨平台app(二)
    免费图标:30个食品相关的图标
    CSS中:before和:after选择器的用法
  • 原文地址:https://www.cnblogs.com/liboBlog/p/7000212.html
Copyright © 2011-2022 走看看