Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)*...

26
© Hortonworks Inc. 2013 Deploying & Managing distributed apps on YARN Steve Loughran, Devaraj Das & Ted Yu {stevel, ddas, tyu} at hortonworks.com

Transcript of Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)*...

Page 1: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc. 2013

Deploying & Managing distributed apps on YARN

Steve Loughran, Devaraj Das & Ted Yu {stevel, ddas, tyu} at hortonworks.com

Page 2: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc.

About myself

• HBase committer / PMC member • Slider committer • YARN / HDFS contributor

Page 2

Page 3: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc. 2012

Hadoop as Next-Gen Platform

HADOOP 1.0

HDFS  (redundant,  reliable  storage)  

MapReduce  (cluster  resource  management  

 &  data  processing)  

HDFS2  (redundant,  reliable  storage)  

YARN  (cluster  resource  management)  

MapReduce  (data  processing)  

Others  (data  processing)  

HADOOP 2.0

Single Use System Batch Apps

Multi Purpose Platform Batch, Interactive, Online, Streaming, …

Page 3

Page 4: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc.

Slider

Page 4

Applica9ons  Run  Na9vely  IN  Hadoop  

HDFS2  (Redundant,  Reliable  Storage)  

YARN  (Cluster  Resource  Management)      

BATCH  (MapReduce)  

INTERACTIVE  (Tez)  

STREAMING  (Storm,  S4,…)  

GRAPH  (Giraph)  

HPC  MPI  (OpenMPI)  

OTHER  (Search)  (Weave…)  

Samza  

Availability (always-on)

Flexibility (dynamic scaling)

Resource Management (optimization)

IN-­‐MEMORY  (Spark)  

Page 5: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

HDFS2  (Redundant,  Reliable  Storage)  

YARN  (Cluster  Resource  Management)      

BATCH  (MapReduce)  

INTERACTIVE  (Tez)  

STREAMING  (Storm,  S4,…)  

GRAPH  (Giraph)  

HPC  MPI  (OpenMPI)  

OTHER  (Search)  (Weave…)  

HBase  IN-­‐MEMORY  (Spark)  

HDFS2  (Redundant,  Reliable  Storage)  

YARN  (Cluster  Resource  Management)      

BATCH  (MapReduce)  

INTERACTIVE  (Tez)  

STREAMING  (Storm,  S4,…)  

GRAPH  (Giraph)  

HPC  MPI  (OpenMPI)  

OTHER  (Search)  (Weave…)  

HBase  

IN-­‐MEMORY  (Spark)  

Page 6: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc.

Step 1: Hoya: On-demand HBase

JSON config in HDFS drives cluster setup and config

1.  Small HBase cluster in large YARN cluster

2.  Dynamic, self-healing

3.  Freeze / thaw

4.  Custom versions & configurations

5.  More efficient utilization/sharing of cluster

Page 6

Page 7: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc. 2012

YARN manages the cluster

Page 7

HDFS

YARN Node Manager

HDFS

YARN Node Manager

HDFS

YARN Resource Manager

HDFS

YARN Node Manager

•  Servers run YARN Node Managers •  NM's heartbeat to Resource Manager •  RM schedules work over cluster •  RM allocates containers to apps •  NMs start containers •  NMs report container health

Page 8: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc. 2012

Client creates App Master

Page 8

HDFS

YARN Node Manager

HDFS

YARN Node Manager

HDFS

YARN Resource Manager

HDFS

YARN Node Manager

CLI Application Master

Page 9: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc. 2012

AM deploys HBase with YARN

Page 9

HDFS

YARN Node Manager

HDFS

YARN Node Manager

HDFS

YARN Resource Manager

CLI

HDFS

YARN Node Manager

Application Master

HBase Region Server

HBase Region Server

HBase Master

Page 10: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc. 2012

HBase & clients bind via Zookeeper

Page 10

HDFS

YARN Node Manager

HBase Region Server

HDFS

YARN Node Manager

HBase Region Server

HDFS

YARN Resource Manager

HBase Client HDFS

YARN Node Manager

Application Master CLI

HBase Master

Page 11: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc. 2012

YARN notifies AM of failures

Page 11

HDFS

YARN Node Manager

HDFS

YARN Node Manager

HBase Region Server

HDFS

YARN Resource Manager

CLI

HDFS

YARN Node Manager

Application Master

HBase Region Server

HBase Region Server

HBase Master

Page 12: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc. 2012

{      "schema"  :  "http://example.org/specification/v2.0.0",      "metadata"  :  {      },      "global"  :  {        "yarn.vcores"  :  "1",        "yarn.memory"  :  "256",      },      "components"  :  {          "rs"  :  {              "yarn.memory"  :  "512",              "yarn.priority"  :  "2",              "yarn.instances"  :  "4"          },          "slider-­‐appmaster"  :  {              "yarn.instances"  :  "1"          },          "master"  :  {              "yarn.priority"  :  "1",              "yarn.instances"  :  "1"          }      }  }  

JSON Specification

Page 13: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc.

Flexing/failure handling is same code

   boolean  flexCluster(ConfTree  updated)  {      appState.updateResourceDefinitions(updated);      return  reviewRequestAndReleaseNodes();  }    void  onContainersCompleted(List<ContainerStatus>  completed)  {      for  (ContainerStatus  status  :  completed)  {          appState.onCompletedNode(status);      }      reviewRequestAndReleaseNodes();  }  

Page 13

Page 14: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc.

Limitations

• Needs app with built in discovery/binding protocol • Static configuration – no dynamic information • Kill-without-warning is the sole shutdown mechanism • Custom Java in client & App Master for each service • Client code assumed CLI – embedded/PaaS use as common.

Page 14

Page 15: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc.

Slider

“Imagine starting a farm of tomcat servers hooked up to an HBase cluster you just deployed – servers processing requests forwarded by a load-balancing service”

Page 15

Page 16: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc.

Slider: evolution of & successor to Hoya

1.  Unified packaging format for deployable applications 2.  Service registration and discovery 3.  Propagation of dynamic config information back to

clients 4.  Client API for embedding – CLI only one use case.

Page 16

Goal: no code changes to deploy applications in a YARN cluster

Page 17: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc.

Packaging "RPM for a datacenter"

• Packaging format for deployable applications • metadata, template configurations • template logic to go from config to scripts • simple .py scripts for starting different components in different YARN containers

• future: snapshot, graceful stop

Page 17

Page 18: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc.

Service Registration and Discovery

• Applications to publish port bindings (URLs…) • Applications to publish other config data • Client APIs to find targeted instance, retrieve bindings and other data

• Generation of client configs. Template-driven.

• See also YARN-913

Page 18

Page 19: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc.

Slider – the tool

• Slider – Java tool – Completely CLI driven

• Input: cluster description as JSON – Specification of cluster: node options, ZK params – Configuration generated – Entire state persisted

• Actions: create, freeze/thaw, flex, exists <cluster> • Can change cluster state later

– Add/remove nodes, started / stopped states

Page 20: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc. 2012

Slider AppMaster

Page 20

AM Main

Slider Engine

YARN Integration

Launcher

Provider Provider

Provider REST API

Web UI

REST API

view controller

YARN RM

YARN NM

provider  REST  services  

events  

builds  containers  

Page 21: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc. 2012

Model

Page 21

NodeMap model of YARN cluster

ComponentHistory persistent history of

component placements

Specification resources.json

appconf.json &c

Container Queues requested, starting,

releasing

Component Map container ID -> component

instance

Event History application history

Persisted Rebuilt Transient

Page 22: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc. 2012

HDFS

Slider as a Service

Page 22

Slider AM

Components

YARN RM

YARN NM

Components

Components

Application

resources

appconf

2.  queues  

1.  builds  

6.  controls  via  REST  API  

3.launches  

4.  reads  

5.  deploys  components  

Page 23: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc.

YARN-896: long-lived services

1.  Container reconnect on AM restart

2.  YARN Token renewal on long-lived apps

3.  Containers: signalling (YARN-445), >1 process

sequence

4.  AM/RM managed gang scheduling

5.  Anti-affinity hint in container requests

6.  Service Registry (YARN-913)

7.  Logging

Page 23

Page 24: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc.

SLAs & co-existence with MapReduce

1.  Make IO bandwidth/IOPs a resource used in scheduling & limits

2.  Need to monitor what's going on w.r.t IO & net load from containers è apps è queues

3.  Dynamic adaptation of cgroup HDD, Net, RAM limits

4.  Could we throttle MR job File & HDFS IO bandwidth?

Page 24

Page 25: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc.

Status as of April 2014

• Initial agent, REST API, container launch

• Package-based deployments of HBase, Ambari, Storm

• Hierarchical configuration JSON evolving

• Service registry - work in progress

• Incubator: proposal submitted

Page 26: Deploying & Managing distributed apps on YARNHDFS2%(Redundant,*Reliable*Storage)* YARN%(Cluster*Resource*Management)*** BATCH% (MapReduce)% INTERACTIVE% (Tez) STREAMING% (Storm,S4,…)

© Hortonworks Inc

Questions?

hortonworks.com

Page 26