zoukankan      html  css  js  c++  java
  • HDFS的架构

    主从结构

    • 主节点,只有一个: namenode
    • 从节点,有很多个: datanodes

    在版本1中,主节点只有一个,在 版本2中主节点有两个。

    namenode 负责(管理):

    • 接收用户操作请求
    • 维护文件系统的目录结构
    • 管理文件与 block 之间的关系, block 与 datanode 之间关系

    block 是 文件分成的 块, hdfs 中默认的 block 块的大小是64M ,实际的文件肯定会分很多块存储。

    datanode 负责(存储):

    • 存储文件
    • 文件被分成 block 存储在磁盘上
    • 为了保证数据安全,文件会有多个副本

    在MapReduce 执行计算任务的时候,计算任务的节点。

    Hadoop 在存储文件的时候,文件会有多个副本。

    因为 Hadoop 是分布式的存储与计算平台,他使用的是廉价的服务器,廉价的服务器可能会发生故障,如果发生故障了,那么数据就不能用了,

    hadoop 为了提高系统的安全性,对数据进行了冗余存储, 默认情况下数据的副本 是 3.   比如 10G的电影,实际在HDFS中存放的大小不是10G ,而是 30G 。

    而在具体数据访问的时候,namenode 会根据不同的 datanode 具体的状况,这种状况包括 他的存储空间、繁忙情况、内存等等从三个副本中选出一个副本去使用 , 另外两个副本就是空闲状态。当这个副本出现问题的时候就会切换到另外一个副本。当然切换回去之后,这个出问题的副本可以得到恢复(与其他副本同步)。

    从客户端(java、命令端、其他语言开发的终端….)提交的数据到 namenode , namenode 这时就会看整个集群中的 datanode 中谁属于空闲,谁可用,都会有自己的算法 (关于算法可以从源码的方向上进行理解),  然后确定把数据存储在哪几台机器上,然后 这些客户端就会直接和这些 datanodes打交道,把数据直接交给具体的数据节点。当然数据节点在存储数据的过程中,肯定会有一些日志信息(管理与block之间的关系、block与datanode之间的关系),每一次集群启动的时候,datanode都会把元数据信息(关于 datanode内部怎么组织的)报告给 namenode, 这样namenode 才能知道 datanode 具体是怎么组织的 然后才能够管理。

  • 相关阅读:
    BOM与DOM
    CSS中的长度单位及颜色表示
    关于display:grid layout
    关于position
    简单的注册表单
    We重邮
    APP定制开发的完整流程
    国内移动广告平台的混战大盘点
    Mobile App Monetization, Analysis & Mediation – Google AdMob
    代码优化
  • 原文地址:https://www.cnblogs.com/qq-757617012/p/6111226.html
Copyright © 2011-2022 走看看