zoukankan      html  css  js  c++  java
  • 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的上传流程,欢迎大家指正,我会根据大家的反馈认真改进完善!

  • 相关阅读:
    Zabbix学习记录
    json_encode 函数使用中报错提示缺少两个参数
    MAC 上搭建一个本地LNMP环境学习laravel(一)
    mysql root 密码重置
    phpstorm格式化代码导致模板报错
    Get 和 Post
    axios设置请求超时时间 timeout
    charles安装配置 for Mac
    让 div 的高度等于宽度,的小技巧
    Git命令行删除本地和远程分支
  • 原文地址:https://www.cnblogs.com/wang9911-00/p/10619349.html
Copyright © 2011-2022 走看看