zoukankan      html  css  js  c++  java
  • Hadoop组件----HDFS架构及原理

    学习博客:https://blog.csdn.net/kezhong_wxl/article/details/76573901

    官方文档:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

    一、介绍

    DFS(Distributed File System)分布式文件系统:管理网络中跨多台计算机存储的文件系统。
    Hadoop自带一个HDFS(Hadoop Distributed File System)分布式文件系统。HDFS是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上.

    二、假设与设计

    •   硬件错误:硬件错误是常态而不是异常。HDFS可能由成百上千的服务器所构成,每个服务器上存储着文件系统的部分数据,需要HDFS有错误检测和快速、自动的恢复。-----最核心架构目标
    •   流式数据访问:能够实时的访问数据,运行在HDFS上的应用和普通的应用不同,需要流式访问它们的数据集。HDFS的设计中更多的考虑到了数据批处理,而不是用户交互处理。比之数据访问的低延迟问题,更关键的在于数据访问的高吞吐量

    补充:关于数据访问方式,可以参考下面这个博客:

          https://blog.csdn.net/HeatDeath/article/details/78986025

    •   大规模数据集:运行在HDFS上的应用具有很大的数据集。HDFS上的一个典型文件大小一般都在G字节至T字节
    •   简单的一致模型:HDFS应用需要一个“一次写入多次读取”的文件访问模型,一个文件经过创建、写入和关闭之后就不需要改变。
    •   移动计算:一个应用请求的计算,离它操作的数据越近就越高效。HDFS为应用提供了将它们自己移动到数据附近的接口。

    三、主从架构

    有几个概念需要明确:

      Namenode

        管理节点;管理文件系统的命名空间,维护文件系统树及整棵树内的所有文件和目录;记录每个文件中各个块所在的数据节点信息;

        管理文件系统命名空间的主服务器和管理客户端对文件的访问组成;
        NameNode执行文件系统命名空间操作,如打开,关闭和重命名文件和目录。它还确定了块到DataNode的映射.何对文件系统名字空间或属性的修改都将被Namenode记录下来

      Datanode

        工作节点;根据需要存储和检索数据块(受client或namenode的调度),并定期向namenode发送他们所存储的块的列表。

        负责提供来自文件系统客户端的读写请求

      block

        数据库,默认128MB.HDFS上的文件被划分为块大小的多个分块(chunk),作为独立的存储单元。与面向单一磁盘的文件系统不同,HDFS中小于一个块大小的文件不会占据整个块的空间(如:一个1MB的文件存储在一个128MB的块中,文件只使用1MB的磁盘空间,而不是128MB.)

     四、数据复制

       在HDFS中,它将每个文件存储成一系列的数据块,除了最后一个,所有的数据块都是同样大小的,为了容错,文件的所有数据块都会有副本。

    HDFS中的文件都是一次性写入的,并且严格要求在任何时候只能有一个写入者。

      Namenode全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。

    知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得
  • 相关阅读:
    【数据结构】线性表&&顺序表详解和代码实例
    【智能算法】超详细的遗传算法(Genetic Algorithm)解析和TSP求解代码详解
    【智能算法】用模拟退火(SA, Simulated Annealing)算法解决旅行商问题 (TSP, Traveling Salesman Problem)
    【智能算法】迭代局部搜索(Iterated Local Search, ILS)详解
    10. js时间格式转换
    2. 解决svn working copy locked问题
    1. easyui tree 初始化的两种方式
    10. js截取最后一个斜杠后面的字符串
    2. apache整合tomcat部署集群
    1. apache如何启动
  • 原文地址:https://www.cnblogs.com/taoHongFei/p/9346250.html
Copyright © 2011-2022 走看看