HDFS上传数据的流程
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上传数据的流程的更多相关文章
- Amazon MWS 上传数据 (一) 设置服务
Amazon 上传数据的流程为: 通过 SubmitFeed 操作.加密标头和所有必需的元数据(包括 FeedType 的值在内),来提交 XML 或文本型数据文件.正如亚马逊 MWS的所有提交内容一 ...
- sqoop上传数据到hdfs,并用hive管理数据。
sqoop导入mysql数据表到HDFS中sqoop import --connect jdbc:mysql://master:3306/test --username root --password ...
- 通过 微软 pai-fs 上传数据到HDFS (Microsoft OpenPAI)
准备环境 (个人使用记录,方便下次使用查阅~~) 首先保证PAI是登陆状态: 进入GitHub项目所在地址: https://github.com/Microsoft/pai/ 然后切换分支到 具体 ...
- Amzon MWS API开发之 上传数据
亚马逊上传数据,现有能操作的功能有很多:库存数量.跟踪号.价格.商品....... 我们可以设置FeedType值,根据需要,再上传对应的xml文件即可. 下面可以看看FeedType类型 这次我们拿 ...
- HDFS 上传文件的不平衡,Balancer问题是过慢
至HDFS上传文件.假定从datanode开始上传文件,上传的数据将导致目前的当务之急是全datanode圆盘.这是一个分布式程序的执行是非常不利. 解决方案: 1.从其他非datanode节点上传 ...
- 【转载】HDFS 上传文件不均衡和Balancer太慢的问题
向HDFS上传文件,如果是从某个datanode开始上传文件,会导致上传的数据优先写满当前datanode的磁盘,这对于运行分布式程序是非常不利的. 解决的办法: 1.从其他非datanode节点上传 ...
- LoadRunner 多用户并发 登录,上传数据,登出的脚本教程
这里记录 Web/Http 模式,模拟多用户并发进行 : 登录,上传数据,退出登录一整套流程.并发的用户量多少,可自定义.这里不介绍录屏的方式,是自己写脚本去执行的. 1.安装loadRunner ...
- 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件
[源码下载] 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 作者:webabcd 介绍重新想象 Windows 8.1 Sto ...
- TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)[转]
TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub) Git-1.7.11-preview+GitExtensions244SetupComplete+T ...
随机推荐
- mac上显示.开头的文件
第一种方法是在finder中按下command+shift+.键. 第二种方法是在命令行输入如下命令 defaults write com.apple.Finder AppleShowAllFiles ...
- 软工读书笔记 week 9 ——《构建之法》
软工读书笔记 week 9 ——<构建之法> 最近的三周我们正式开始我们的项目.然后我也把<构建之法>中的相关章节再拿出来读了一番.以下是一些 ...
- Oracle AP更新供应商
/*l_return_status:S l_msg_count:0 l_msg_data: l_vendor_id:133003 l_party_id:236055 */ DECLARE l_ ...
- MySQL 5.7 Reference Manual】15.4.2 Change Buffer(变更缓冲)
15.4.2 Change Buffer(变更缓冲) The change buffer is a special data structure that caches changes to se ...
- spider-抓取网页内容(Beautiful soup)
http://jingyan.baidu.com/article/afd8f4de6197c834e386e96b.html http://cuiqingcai.com/1319.html Windo ...
- MySQL 索引的介绍与应用
Mysql索引 一. mysql 索引 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息. 二:MySQL索引类型 按存储结构区分:聚集索引(又称聚类索引,簇 ...
- Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
在下面这篇博文里,我给各位博客们,分享了创建HBase表,但这远不止打好基础. HBase编程 API入门系列之create(管理端而言)(8) 在关系型数据库里,表的高表和宽表是不存在的.在如HBa ...
- #001 GIT创建分支
GitHub创建分支 如何在github 创建 一个分支出来,进行开发,最后在 merge 到主干上. Git 操作命令 git branch branchName //创建一个分支 git chec ...
- php分享一个n维数组转一维的函数
好玩,所以做了这么一个函数,来输出唐诗 函数如下 function changearr($arr){ if(count($arr)==count($arr,1)){ return $arr; } el ...
- Angular总结二:Angular 启动过程
要弄清楚 Angular 的启动过程,就要弄明白 Angular 启动时加载了哪个页面,加载了哪些脚本,这些脚本做了哪些事? 通过 Angular 的编译依赖文件 .angular-cli.json ...