下图描述了Client向HDFS上传一个200M大小的日志文件的大致过程:

1)首先,Client发起文件上传请求,即通过RPC与NameNode建立通讯。

2)NameNode与各DataNode使用心跳机制来获取DataNode信息。NameNode收到Client请求后,获取DataNode信息,并将可存储文件的节点信息返回给Client。

3)Client收到NameNode返回的信息,与对应的DataNode节点取得联系,并向该节点写文件,写入文件被切分成128m大小的数据块,最后一块可能不够128m,一个数据块里不能同时存储2个以上文件的数据。

4)文件写入到DataNode后,以流水线的方式复制到其他DataNode(以3份冗余为例,数据块副本策略为:第一个块写入最近的机架上的一台服务器,第二个块由第一个块复制到同一个机架上的另一台主机上,最后一个副本被第二个副本主机复制到不同机架的不同主机上),至于复制多少份,与所配置的hdfs-default.xml中的dfs.replication相关。

HDFS文件上传的更多相关文章

  1. hdfs文件上传机制与namenode元数据管理机制

    1.hdfs文件上传机制 文件上传过程:   1.客户端想NameNode申请上传文件, 2.NameNode返回此次上传的分配DataNode情况给客户端 3.客户端开始依向dataName上传对应 ...

  2. hadoop学习记录--hdfs文件上传过程源码解析

    本节并不大算为大家讲接什么是hadoop,或者hadoop的基础知识因为这些知识在网上有很多详细的介绍,在这里想说的是关于hdfs的相关内容.或许大家都知道hdfs是hadoop底层存储模块,专门用于 ...

  3. Crontab中shell每分钟执行一次HDFS文件上传不执行的解决方案

    一.Crontab -e 加入输出Log */1 * * * * /qiwen_list/upload_to_hdfs.sh > /qiwen_list/mapred.log 2>& ...

  4. HDFS文件上传下载过程(详图)

  5. 【Hadoop】hdfs文件上传流程图

  6. Hadoop之HDFS原理及文件上传下载源码分析(上)

    HDFS原理 首先说明下,hadoop的各种搭建方式不再介绍,相信各位玩hadoop的同学随便都能搭出来. 楼主的环境: 操作系统:Ubuntu 15.10 hadoop版本:2.7.3 HA:否(随 ...

  7. Hadoop之HDFS原理及文件上传下载源码分析(下)

    上篇Hadoop之HDFS原理及文件上传下载源码分析(上)楼主主要介绍了hdfs原理及FileSystem的初始化源码解析, Client如何与NameNode建立RPC通信.本篇将继续介绍hdfs文 ...

  8. Ubuntu本地文件上传至HDFS文件系统出现的乱码问题及解决方案

    1.问题来源及原因 用shell命令上传到HDFS中之后出现中文乱码,在shell命令窗口查看如图: 在eclipse中的文件HDFS查看工具查看如图: 原因:上传至HDFS文件系统的文本文件(这里是 ...

  9. Hadoop生态圈-Azkaban实现文件上传到hdfs并执行MR数据清洗

    Hadoop生态圈-Azkaban实现文件上传到hdfs并执行MR数据清洗 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果你没有Hadoop集群的话也没有关系,我这里给出当时我 ...

随机推荐

  1. Linux下修改当前用户的最大线程数和 open files

    1 查看当前用户的线程 ulimit -a 2 修改配置文件 vi /etc/security/limits.d/90-nproc.conf 3 改完即可生效 4 修改可打开的最大文件数 vi  /e ...

  2. 使用gradle 编译生成 apk出现的问题

    首先出现的问题是:  Failed to read key from keystore 是我的Key Alias 填写错了, 还有一种可能就是真的把key放错位置了

  3. 测试amqplib实例,报错 Error: connect ECONNREFUSED 127.0.0.1:5672

    研究消息队列处理库amqplib(https://www.npmjs.com/package/amqplib)时,把实例直接拿过来运行的时候报错如下 不知道为什么会出这样的问题,后来跑到github上 ...

  4. U3D功能脚本备忘

    编译器属性 属性 介绍 用例 AddComponentMenu 在Component菜单中添加新的菜单项 [AddComponentMenu("Duan/Script/TestScript& ...

  5. java Web 启动时自动执行代码的几种方式

    Web容器启动后执行代码的几种方式,其执行顺序为:4===>5===>1===>2===>3,即指定init-method的Bean开始执行,接着实现spring的Bean后置 ...

  6. django rest framwork教程之外键关系和超链接

    此时,我们的API中的关系通过使用主键来表示.在本教程的这一部分中,我们将通过使用超链接来改善关系的内聚性和可发现性 为我们的API的根创建一个端点 现在我们有"snippets" ...

  7. delphi for android 获取手机号

    delphi for android 获取手机号 uses   System.SysUtils, System.Types, System.UITypes, System.Classes, Syste ...

  8. MySQL使用查询结果生成临时表

    MySQL中不支持对同一个表使用其查询结果更新or删除本表内数据(也就是update或delete后的where条件为针对相同表的select),解决方案是创建临时表做过度保存中间数据: 可以直接使用 ...

  9. Linux 下如何安装 .rpm 文件

    执行以下命令安装: rpm -i your-file-name.rpm 详细的可参考: http://os.51cto.com/art/201001/177866.htm

  10. Linux(Ubuntu)下如何解压 .zip 文件

    安装解压缩软件 使用如下命令安装: sudo apt-get install p7zip-full 7zip,估计会比较熟悉. p7zip,是什么? 听说是 7zip 的 shell 封装. 解压 使 ...