• hdfs架构


                  

    hdfs组成:

      主控节点(NameNode)、从节点(DataNode)、客户端

    1.NameNode

    NameNode是一个主控节点,用来管理整个文件系统的命名空间和元数据,以及处理来自外界的文件访问请求。NameNode 保存了文件系统的三种元数据:

    1) 命名空间, 即整个分布式文件系统的目录结构;

    2 ) 数据块与文件名的映射表;

    3) 每个数据块副本的位置信息,每一个数据块默认有3 个副本。

    2.DataNode

    文件中的每个数据块默认的大小为64MB; 同时为了防止数据丢失, 每个数据块默认有3 个副本,且3 个副本会分别复制在不同的节点上,以避免一个节点失效造成一个数据块的彻底丢失。

    每个DataNode 的数据实际上是存储在每个节点的本地Linux 文件系统中。

    NameNode 上可以执行文件操作,比如打开、关闭、重命名等; 而且NameNode 也负责向DataNode分配数据块并建立数据块和DataNode 的对应关系。

    DataNode 负责处理文件系统用户具体的数据读写请求,同时也可以处理NameNode 对数据块的创建、删除副本的指令。

    典型的部署模式采用NameNode单独运行于一台服务器节点上,其余的服务器节点,每一台运行一个DataNode

     3.基本访问流程

    首先,用户的应用程序通过HDFS 的客户端程序将文件名发送至NameNode

    NameNode 接收到文件名之后,在HDFS 目录中检索文件名对应的数据块,再根据数据块信息找到保存数据块的DataNode 地址,将这些地址回送给客户端。

    客户端接收到DataNode 地址之后,与DataNode 并行地进行数据传输操作,同时将操作结果的相关日志(比如是否成功,修改后的数据块信息等)提交到NameNode

  • 相关阅读:
    golang实现并发爬虫一(单任务版本爬虫功能)
    golang实现rabbitmq的五种模式
    KNN笔记
    Observer Pattern
    关于data-属性
    Python中的装饰器
    Python中的高阶函数与匿名函数
    Python中的列表生成式和多层表达式
    Thymeleaf读取国际化文本时出现??xxxxxx_zh_CN??问题
    Java8新特性(1):Lambda表达式
  • 原文地址:https://www.cnblogs.com/luminous1/p/8343261.html
Copyright © 2020-2023  润新知