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

        在使用一个工具之前,应该先对它的机制、组成等有深入的了解,以后才会更好的使用它。下面来介绍一下什么是HDFS,以及他的构架是什么样的。

    1.什么是HDFS?

         Hadoop主要是用于进行大数据处理,那么如何有效的存储大规模的数据呢?显然,集中式的物理服务器保存数据是不现实的,其容量、数据传输速度等都会成为瓶颈。那么要实现海量数据的存储,势必要使用十几台、几百台甚至是更多的分布式服务节点。那么,为了统一管理这些节点上存储的数据,必须要使用一种特殊的文件系统——分布式文件系统。HDFS(Hadoop Distributed File System)就是Hadoop提供的一个分布式文件系统。

        HDFS具有大规模数据分布式存储能力、高并发访问能力、强大的容错能力、顺序式文件访问、简单的一致性模型(一次写多次读)、数据块存储模式等优点。

    2.HDFS的基本框架

    2.1 Architecture

        HDFS一Master-Slave模式运行,主要由两类节点:一个NameNode(即Master)和多个DataNode(即Slave),其框架图如下图所示:

     

    2.2  NameNode、DataNode、JobTracker和TaskTracker

    1. NameNode是一个主服务器,用来管理整个文件系统的命名空间和元数据,以及处理来自外界的文件访问请求。

        NameNode保存了文件系统的三种元数据:

      • 命名空间:即整个分布式文件系统的目录结构;
      • 数据块与文件名的映射表;
      • 每个数据块副本的位置信息,每一个数据块默认有3个副本。

      2. DataNode。HDFS对外提供了命名空间,让用户的数据可以存储在文件中,但是在内部,文件可能被分成若干个数据块,DataNode用来实际存储和管理文件的数据块。

      3. JobTracker对应于NameNode,TaskTracker对应于DataNode(如上图所示),NameNode与Datanode是针对数据存储而言的,JobTracker与TaskTracker是针对与MapReduce的执行而言的。

    2.3 HDFS的基本文件访问过程

    1. 用户的应用程序通过HDFS的哭护短程序将文件名发送至NameNode;
    2. NameNode接收到文件名之后,在HDFS目录中检索文件名对应的数据块,在根据数据块信息找到保存数据块的DataNode地址,将这些地址送回客户端;
    3. 客户端接收到这些DataNode地址之后,与这些DataNode并行的进行数据传输操作,同时将操作结果的相关日志提交到NameNode。

    2.4 MapReduce的执行过程

    1. JobClient会在客户端通过JobClient类将对应已经配置好的参数打包成Jar,存储到HDFS,并把路径提交到JobTracker,然后由JobTracker创建每一个Task(即Map Task和Reduce Task),并将它们分发到各个TaskTracker服务中执行;
    2. JobTracker是一个master服务,软件启动后JobTracker接收Job,负责调度Job的每一个子任务task,并监控它们,如果发现有失败的Task就重新运行它;
    3. TaskTracker是运行在多个节点上的Slave服务,运行在HDFS的DataNode节点上,主动与JobTracker通信,接收作业,并负责执行每一个任务。

    2.5 SecondaryNameNode

        Hadoop中使用SecondaryNameNode来备份NameNode备份NameNode的元数据,以便在NameNode失效时能从SecondaryNameNode恢复出NameNode上的元数据,它充当NameNode的一个副本,它本身并不处理任何请求,周期性保存NameNode的元数据

    参考链接:

    [1]. hadoop JobTracker和TaskTracker——http://wz102.blog.51cto.com/3588520/1327972

    [2]. HDFS学习(三)—NameNode and DataNode——http://shitouer.cn/2012/12/hdfs-namenode-datanode/

    [3]. 深入理解大数据-大数据处理与编程实践

  • 相关阅读:
    【算法学习笔记】27.动态规划 解题报告 SJTU OJ 1254 传手绢
    【算法学习笔记】26.扫描维护法 解题报告 SJTU OJ 1133 数星星
    【算法学习笔记】25.贪心法 均分纸牌问题的分析
    【算法学习笔记】24.记忆化搜索 解题报告 SJTU OJ 1002 二哥种花生
    【算法学习笔记】23.动态规划 解题报告 SJTU OJ 1280 整装待发
    【算法学习笔记】22.算法设计初步 二分查找 上下界判断
    【算法学习笔记】21.算法设计初步 求第k个数 划分法 快排法
    【算法学习笔记】20.算法设计初步 归并排序 求逆序数
    【算法学习笔记】19.算法设计初步 最大子列和问题的几种方法
    【算法学习笔记】18.暴力求解法06 隐式图搜索2 八数码问题 未启发
  • 原文地址:https://www.cnblogs.com/little-YTMM/p/4401601.html
Copyright © 2011-2022 走看看