1.当客户端输入一条指令:hdfs dfs -put text.txt /text时,这条命令会给到DistributeFileSystem。

2.通过DistributeFileSystem简称DFS会创建DFSClient。

3.DFSClient会与hdfs服务器建立RPC通讯,此时客户端就可以访问NameNode,并向其发送请求,并且NameNode接到请求命令

后会返回一个NameNode代理对象(NameNodeProxies)。

4.客户端通过代理对象NameNodeProxies请求创建文件元信息。

5.NameNode接受请求后就开始创建文件元信息,这些元信息包括:文件名:text.txt、存储路径:/text、文件大小:1KB、冗余度:3、数据块:

根据文件大小会切分成多个数据块,如果文件更大,会缓存文件元信息(缓存大小默认为1000M,可更改),数据块可以分别存到3个副本中:

DataNode1、DataNode2、DataNode3

6.NameNode向客户端返回可以存数据的DataNode,这里遵循机架感应原则。

7.客户端根据返回的信息先将文件分块(Hadoop2.x版本每一个block为128M,而之前的版本为64M)。

8.客户端根据NameNode返回的DataNoded的地址信息直接发送给DataNode,并通过创建输出流OutputStream写入到hdfs中,同时DataNode

会复制到其他两台机器,完成循环上传。

9.上传完成后,DataNode向客户端通信表示已经传完数据块,同时向NameNode报告,数据上传完成。

以上是我通过学习,自己总结的hdfs的上传流程,欢迎大家指正,我会根据大家的反馈认真改进完善!

HDFS上传数据的流程的更多相关文章

  1. Amazon MWS 上传数据 (一) 设置服务

    Amazon 上传数据的流程为: 通过 SubmitFeed 操作.加密标头和所有必需的元数据(包括 FeedType 的值在内),来提交 XML 或文本型数据文件.正如亚马逊 MWS的所有提交内容一 ...

  2. sqoop上传数据到hdfs,并用hive管理数据。

    sqoop导入mysql数据表到HDFS中sqoop import --connect jdbc:mysql://master:3306/test --username root --password ...

  3. 通过 微软 pai-fs 上传数据到HDFS (Microsoft OpenPAI)

    准备环境 (个人使用记录,方便下次使用查阅~~) 首先保证PAI是登陆状态: 进入GitHub项目所在地址: https://github.com/Microsoft/pai/ 然后切换分支到  具体 ...

  4. Amzon MWS API开发之 上传数据

    亚马逊上传数据,现有能操作的功能有很多:库存数量.跟踪号.价格.商品....... 我们可以设置FeedType值,根据需要,再上传对应的xml文件即可. 下面可以看看FeedType类型 这次我们拿 ...

  5. HDFS 上传文件的不平衡,Balancer问题是过慢

    至HDFS上传文件.假定从datanode开始上传文件,上传的数据将导致目前的当务之急是全datanode圆盘.这是一个分布式程序的执行是非常不利. 解决方案: 1.从其他非datanode节点上传 ...

  6. 【转载】HDFS 上传文件不均衡和Balancer太慢的问题

    向HDFS上传文件,如果是从某个datanode开始上传文件,会导致上传的数据优先写满当前datanode的磁盘,这对于运行分布式程序是非常不利的. 解决的办法: 1.从其他非datanode节点上传 ...

  7. LoadRunner 多用户并发 登录,上传数据,登出的脚本教程

    这里记录 Web/Http  模式,模拟多用户并发进行  : 登录,上传数据,退出登录一整套流程.并发的用户量多少,可自定义.这里不介绍录屏的方式,是自己写脚本去执行的. 1.安装loadRunner ...

  8. 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件

    [源码下载] 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 作者:webabcd 介绍重新想象 Windows 8.1 Sto ...

  9. TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)[转]

    TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub) Git-1.7.11-preview+GitExtensions244SetupComplete+T ...

随机推荐

  1. Linux 系统下 centOS 7 ipconfig 提示没有安装

    首先更正一下,在Linux系统下,查看IP地址,指令是ifconfig 没有root权限情况下,安装指令为 sudo yum -y install net-tool 有root权限的话,直接执行 yu ...

  2. centos7 部署 汉化版 gitlab 10.0.2

    更新说明: 20171009:增加3.5的内容 20171008:整理出gitlab部署手册 =============================================== gitla ...

  3. Oracle EBS AR 更新客户账户层

    declare x_return_status ); x_msg_count NUMBER; x_msg_data ); x_profile_id NUMBER; l_location_id NUMB ...

  4. SQL SERVER 使用ESCAPE转义

    使用SQL语句查询是开发中常做的事,在实际的情况中,可能会遇到,查询包含某个关键词的所有行,而这个关键词正好也是SQL SERVER的关键词. 下面有一张表Member,有如下的数据: 假如需要查询名 ...

  5. linux smem 查看各进程使用memory情况

    SMEM(8) SMEM(8) NAME smem - Report memory usage with shared memory divided proportionally. SYNOPSIS ...

  6. Apache2.2 + tomcat7 服务器集群配置

    1.软件安装 1.1下载和安装apache Apache 2.2 :http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本 1.2下载和安装 ...

  7. 用python解析word文件(一):paragraph

    太长了,我决定还是拆开三篇写.   (一)段落篇(paragraph)(本篇) (二)表格篇(table) (三)样式篇(style) 选你所需即可.下面开始正文. 最近公司的项目,需要在页面上显示w ...

  8. laravel框架之blade模板引擎

    ## 1.基本用法 ##情形1 $name = laravel5 <div class="title"> {{$name}} {{$name}}</div> ...

  9. playbook-拓展

    一.Handles 1. Handlers 在发生改变时执行的操作 2. handlers也是一些task的列表,通过名字来引用,它们和一般的task并没有什么区别. 3. handlers是由not ...

  10. Hive学习之路 (二十)Hive 执行过程实例分析

    一.Hive 执行过程概述 1.概述 (1) Hive 将 HQL 转换成一组操作符(Operator),比如 GroupByOperator, JoinOperator 等 (2)操作符 Opera ...