• HDFS架构


    HDFS架构(Master-Slave)

    • 几个进程的角色
      1. nameNode(master):用于保存、管理、持久化文件的元数据(文件名、文件副本数、文件块大小、文件块列表),同时还要接收客户端的文件读写请求。
      2. secondaryNameNode:用于实时同步文件元数据,给nameNode服务做副本,担当高可用备份,nameNode处于正常状态时secondaryNameNode只sandBy。
      3. dataNode(slave):真正存储文件块,分布在每个节点上
      4. dfsClient:向hdfs发请求,当用户发起一个hdfs文件读、写、查询等请求时,集群都会启动一个dfsClient进程,dfsClient先访问nameNode获取文件元数据,然后根据元数据解析出文件分片的分布情况,最后去各dataNode完成真正的读写。它扮演着用户与hdfs交互中间人的角色,同时文件的拆分和拼装也是在dfsClient进程完成的。
    • HDFS文件读写流程
      • 读取:系统接收到用户读请求后,首先启动一个dfsClient进程,这个进程拿着用户传递的文件路径等信息,传递给nameNode,nameNode返回文件分片的分布节点列表,dfsClient就近读取文件分片,并将各分片拼装为完整文件返回给用户。
      • 写入:系统接收到用户写请求后,首先启动一个dfsClient进程,这个进程将写入文件的信息提交给nameNode,nameNode根据集群情况将文件进行分片和位置规划,再将规划信息返回给dfsClient,dfsClient根据规划信息将文件切分成特定的块,然后根据位置规划分别与对应的dataNode建立管道,将分片传输到对应的dataNode上。
  • 相关阅读:
    亚马逊EMR学习网站
    python实现redis三种cas事务操作
    【转】Jython简单入门
    【转】Android 收集已发布程序的崩溃信息
    【转】Android 避免APP启动闪黑屏(Theme和Style)
    【转】Android内存机制分析2——分析APP内存使用情况
    【转】Android内存机制分析1——了解Android堆和栈
    【转】JAVA Socket用法详解
    【转】JAVA 网络编程
    Android 无法Bind Service
  • 原文地址:https://www.cnblogs.com/JaxYoun/p/12336031.html
Copyright © 2020-2023  润新知