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


原文地址:https://www.cnblogs.com/ainima/p/6331301.html