zoukankan      html  css  js  c++  java
  • Apache Hadoop 0.23 介绍

    Hadoop 1.0 (0.20.2×) 终于在27 December, 2011正式发布了【1】。下面是一个Hadoop的简单历史【2】:


    这个也是目前最稳定的版本。新的版本也在开发之中,那就是0.23或者2.0吧!在新版本中引入了很多新的特性,其中着重说一个:

    • HDFS Federation
    • NextGen MapReduce

    HDFS Federation

    目前的HDFS包含两层:

    • 命名空间 (Namespace)
      • Consists of directories, files and blocks
      • It supports all the namespace related file system operations such as create, delete, modify and list files and directories.
    • 块存储服务 (Block Storage Service) has two parts
      • Block Management (which is done in Namenode)
        • Provides datanode cluster membership by handling registrations, and periodic heart beats.
        • Processes block reports and maintains location of blocks.
        • Supports block related operations such as create, delete, modify and get block location.
        • Manages replica placement and replication of a block for under replicated blocks and deletes blocks that are over replicated.
      • Storage - is provided by datanodes by storing blocks on the local file system and allows read/write access.
    可以简单的理解为“Namenode”就是一个hadoop系统里面的文件系统,操作的基本对象就是一个block,一般为64M或者128M。“Datanode”提供抽象block到操作系统(比如Linux)的文件系统映射。

    这个设计的最大问题就是可以很容易的通过增加Datanode来水平拓展物理存储空间,但是却只能有一个Namenode。这个导致很明显的问题就是single point of failure很性能瓶颈。

    新的设计试图解决了这个问题:

    其实这个我们也可以想到,呵呵!这里引入了一个新概念:Block Pool。它是一个block的集合,显然里面的block可以来自不同的Datanode。每个pool独立运作,只属于一个Namenode。

    Apache Hadoop NextGen MapReduce (YARN)

    新的版本叫做MapReduce 2.0 (MRv2) 或者 YARN。MRv2的核心是将JonTracker里面的两个主要功能,资源管理(resource management)和任务调度/监控(job scheduling/monitoring),分解为两个独立的守护进程(daemon):global ResourceManager (RM) 和 per-application ApplicationMaster (AM)。一个程序可以是以前的Map-Reduce任务或者是一个任务的有向无环图(Directed Acyclic Graph)。

    ResourceManager有两个主要构成:Scheduler和ApplicationsManager。Scheduler负责分配资源,它只是一个纯粹的调度者,并不会监控任务的执行。资源调度基于Container,它是memory, cpu, disk, network等的抽象,目前只支持memory。ApplicationsManager负责接收任务提交,协商第一个Container以执行程序的ApplicationMaster和重启失败的ApplicationMaster container。

    NodeManager是每台机器上的代理(per-machine framework agent),对container负责,提供对资源使用的监控和向ResourceManager/Scheduler提供汇报。

    每个程序的ApplicationMaster负责协商资源,监控程序的执行和进度。

    上图我们可以看到一个ApplicationMaster其实可以使用其它机器上的资源(Container),这个对于就可以提供更高的资源利用和并发执行了。

    题外话,最后介绍一个hadoop 1.0里面的新的特性:WebHDFS。这个就是HDFS的HTTP REST API。这个的好处显而易见,无需hadoop环境就可以直接访问HDFS。是不是很容易实现跨data center的数据访问呢?


    参考:

    【1】http://hadoop.apache.org/common/docs/r1.0.0/releasenotes.html

    【2】http://hortonworks.com/apache-hadoop-is-here/

    【3】http://hadoop.apache.org/common/docs/r0.23.0/index.html

    【4】http://hadoop.apache.org/common/docs/r1.0.0/webhdfs.html


  • 相关阅读:
    基于vite2的react脚手架
    基于react hooks,zarm组件库配置开发h5表单页面
    IDEA远程debug
    test wizdeploy
    使用python完成接口自动化
    测试左移和测试右移
    性能测试监控
    网络基础面试题
    (案例8)java性能定位
    Jmeter分布式测试
  • 原文地址:https://www.cnblogs.com/ainima/p/6331301.html
Copyright © 2011-2022 走看看