The Next Generation of Apache Hadoop MapReduce

來源:互聯網
上載者:User
文章目錄
  • Scalability
  • Availability
  • Wire-compatibility
  • Innovation & Agility
  • Cluster Utilization
  • Support for programming paradigms other than MapReduce
Overview

In the Big Data business running fewer larger clusters is cheaper
than running more small clusters. Larger clusters also process larger
data sets and support more jobs and users.

The Apache Hadoop MapReduce framework has hit a scalability limit
around 4,000 machines. We are developing the next generation of Apache
Hadoop MapReduce that factors the framework into a generic resource
scheduler and a per-job, user-defined component that manages the
application execution. Since downtime is more expensive at scale
high-availability is built-in from the beginning; as are security and
multi-tenancy to support many users on the larger clusters. The new
architecture will also increase innovation, agility and hardware
utilization.

Background

The current implementation of the Hadoop MapReduce framework is showing it’s age.

Given observed trends in cluster sizes and workloads, the MapReduce
JobTracker needs a drastic overhaul to address several deficiencies in
its scalability, memory consumption, threading-model, reliability and
performance. Over the last 5 years, we’ve done spot fixes, however
lately these have come at an ever-growing cost as evinced by the
increasing difficulty of making changes to the framework. The
architectural deficiencies, and corrective measures, are both old and
well understood - even as far back as late 2007, when we documented the
proposed fix on MapReduce’s jira: https://issues.apache.org/jira/browse/MAPREDUCE-278
.

From an operational perspective, the current Hadoop MapReduce
framework forces a system-wide upgrade for any minor or major changes
such as bug fixes, performance improvements and features. Worse, it
forces every single customer of the cluster to upgrade at the same time,
regardless of his or her interests; this wastes expensive cycles of
customers as they validate the new version of the Hadoop for their
applications.

Requirements

As we consider ways to improve the Hadoop MapReduce framework it is
important to keep in mind the high-level requirements. The most pressing
requirements for the next generation of the MapReduce framework are:

  • Reliability
  • Availability
  • Scalability - Clusters of 10,000 machines and 200,000 cores, and beyond.
  • Backward (and Forward) Compatibility - Ensure customers’ MapReduce
    applications run unchanged in the next version of the framework.
  • Evolution – Ability for customers to control upgrades to the Hadoop software stack.
  • Predictable Latency – A major customer concern.
  • Cluster utilization

The second tier of requirements is:

  • Support for alternate programming paradigms to MapReduce
  • Support for short-lived services

Given the above requirements, it is clear that we need a major
re-think of the infrastructure used for data processing on the Hadoop.
In fact, there seems to be loose consensus in the Hadoop community
around the fact that the current architecture of the MapReduce framework
is incapable of meeting our states goals and that a re-factor is
required; see our proposal we made on jira in January, 2008: https://issues.apache.org/jira/browse/MAPREDUCE-279
.

The Next Generation of MapReduce

The fundamental idea of the re-architecture is to divide the two major functions of the JobTracker
, resource management and job scheduling/monitoring, into separate components. The new ResourceManager
manages the global assignment of compute resources to applications and the per-application ApplicationMaster
manages the application’s scheduling and coordination. An application
is either a single job in the classic MapReduce jobs or a DAG of such
jobs. The ResourceManager and per-machine NodeManager server, which
manages the user processes on that machine, form the computation fabric.
The per-application ApplicationMaster is, in effect, a framework
specific library and is tasked with negotiating resources from the
ResourceManager and working with the NodeManager(s) to execute and
monitor the tasks.

The ResourceManager supports hierarchical application queues and
those queues can be guaranteed a percentage of the cluster resources. It
is pure scheduler in the sense that it performs no monitoring or
tracking of status for the application. Also, it offers no guarantees on
restarting failed tasks either due to application failure or hardware
failures.

The ResourceManager performs its scheduling function based the
resource requirements of the applications; each application has multiple
resource request types that represent the resources required for
containers. The resource requests include memory, CPU, disk, network
etc. Note that this is a significant change from the current model of
fixed-type slots in Hadoop MapReduce, which leads to significant
negative impact on cluster utilization. The ResourceManager has a
scheduler policy plug-in, which is responsible for partitioning the
cluster resources among various queues, applications etc. Scheduler
plug-ins can be based, for e.g., on the current CapacityScheduler and
FairScheduler.

The NodeManager is the per-machine framework agent who is responsible
for launching the applications’ containers, monitoring their resource
usage (cpu, memory, disk, network) and reporting the same to the
Scheduler.

The per-application ApplicationMaster has the responsibility of
negotiating appropriate resource containers from the Scheduler,
launching tasks, tracking their status & monitoring for progress,
and handling task-failures.

Architecture

Improvements vis-à-vis current implementation of Hadoop MapReduceScalability

The separation of management of resources in the cluster from
management of the life cycle of applications and their component tasks
results in an architecture, which scales out much better and more
gracefully. The Hadoop MapReduce JobTracker spends a very significant
portion of time and effort managing the life cycle of applications and
that is the major cause of software mishaps – moving that to an
application-specific entity is a significant win.

Scalability is particularly important with current hardware trends –
currently Hadoop MapReduce has been deployed on clusters of up to 4,000
machines. However, 4,000 commodity machines of 2009 vintage (i.e. 8
cores, 16G RAM, 4TB disk) are only half as capable of 4,000 machines of
2011 vintage (16 cores, 48G RAM, 24TB disk. Also, operational costs
favor consolidation and compel us to run ever-larger clusters of 6,000
machines and beyond.

Availability
  • ResourceManager - The ResourceManager uses Apache ZooKeeper
    for fail-over. When the ResourceManager fails, a secondary can quickly
    recover via cluster state saved in ZooKeeper. The ResourceManager, on a
    fail-over, restarts all of the queued and running applications.
  • ApplicationMaster - MapReduce NextGen supports application specific
    checkpoint capabilities for the ApplicationMaster. The MapReduce
    ApplicationMaster can recover from failures by restoring itself from
    state saved in HDFS.
Wire-compatibility

MapReduce NextGen uses wire-compatible protocols to allow different
versions of servers and clients to communicate with each other. In
future releases, this will enable rolling upgrades to the clusters – a
major operability win.

Innovation & Agility

A major plus of the proposed architecture is the fact that MapReduce
effectively becomes a user-land library. The computation framework
(ResourceManager and NodeManager) is completely generic and is free of
MapReduce specificities.

This enables end-customers to use different versions of MapReduce
concurrently on the same cluster. This is trivial to support since
multiple versions of MapReduce ApplicationMaster and runtime can be used
for different applications. This provides significant agility for
applications for bug fixes, enhancements and new features since the
entire cluster does not have to be upgraded. It also allows
end-customers to upgrade their applications to MapReduce versions on
their own schedule and significantly enhances operability of the
cluster.

The ability to run user-defined version of the Map-Reduce fosters
innovation without affecting stability of the software. It will be
trivial to incorporate features such as the Hadoop Online Prototype
into the user’s version of MapReduce without affecting other users.

Cluster Utilization

The MapReduce NextGen ResourceManager uses a general concept of a
resource for scheduling and allocating to individual applications.

Every machine in the cluster is conceptually comprised of resources
such as memory, CPU, I/O bandwidth, etc. Each machine is fungible and
will be allocated to applications as containers based on
application-defined resource request types. A container is a set of
processes that are logically isolated from other containers on the same
machine providing strong multi-tenancy support.

Thus it removes the current notion of fixed typed map and reduce
slots in Hadoop MapReduce. The fixed typed slots have a significant
negative impact on cluster utilization since, at different times in the
cluster, either map or reduce slots are scarce.

Support for programming paradigms other than MapReduce

MapReduce NextGen provides a completely generic computation framework to support MapReduce and other paradigms.

The architecture allows end-users to implement any
application-specific framework by implementing a custom
ApplicationMaster, which can request resources from the ResourceManager
and utilize them as they see fit under familiar notions of isolation,
capacity guarantees etc.

Thus, it supports multiple programming paradigms, such as MapReduce,
MPI, Master-Worker, and iterative models, on the same Hadoop cluster and
allows use of the appropriate framework for each application. This is
particularly important for applications (e.g. K-Means, Page-Rank) where
custom frameworks out-perform MapReduce by an order of magnitude.

Conclusions

Apache Hadoop, and in particular Hadoop MapReduce, is a very
successful open-source project for processing large data sets. Our
proposed re-factoring of Hadoop MapReduce addresses the architecture’s
current issues by providing high-availability, enhancing cluster
utilization and providing support for programming paradigms; and enables
rapid future evolution.

We felt that none of the existing options such as Torque, Condor,
Mesos etc. were designed to solve for MapReduce clusters at scale. Some
of the options were new and immature, and others were missing key
features such as ability to do fine-grained scheduling for hundreds of
thousands of tasks, performance at scale, security, multi-tenancy etc.

We will work with the Apache Hadoop community to achieve this to elevate Apache Hadoop to the next level in the big data space.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.