can’t we all just get along?

27
Can’t We All Just Get Along? Spark and Resource Management on Hadoop

Upload: indira-cote

Post on 31-Dec-2015

29 views

Category:

Documents


0 download

DESCRIPTION

Can’t We All Just Get Along?. Spark and Resource Management on Hadoop. Introductions. Software engineer at Cloudera MapReduce, YARN, Resource management Hadoop committer. Introduction. Spark as a first class data processing framework alongside MR and Impala Resource management - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Can’t We All Just Get Along?

Can’t We All Just Get Along?Spark and Resource Management on Hadoop

Page 2: Can’t We All Just Get Along?

Introductions

• Software engineer at Cloudera• MapReduce, YARN, Resource management

• Hadoop committer

Page 3: Can’t We All Just Get Along?

Introduction

• Spark as a first class data processing framework alongside MR and Impala

• Resource management• What we have already• What we need for the future

Page 4: Can’t We All Just Get Along?

Bringing Computation to the Data

• Users want to• ETL a dataset with Pig and MapReduce• Fit a model to it with Spark• Have BI tools query it with Impala

• Same set of machines that hold data must also host these frameworks

Page 5: Can’t We All Just Get Along?

Cluster Resource Management

• Hadoop brings generalized computation to big data• More processing frameworks

• MapReduce, Impala, Spark• Some workloads are more important than others• A cluster has finite resources

• Limited CPU, memory, disk and network bandwidth• How do we make sure each workload gets the

resources it deserves?

Page 6: Can’t We All Just Get Along?

How We See It

HDFS

Impala MapReduce Spark

Page 7: Can’t We All Just Get Along?

How They Want to See It

Engineering - 50% Finance - 30% Marketing - 20%

Spark MR

Impala

Spark

MR

Impala

Spark

MR

Impala

HDFS

Page 8: Can’t We All Just Get Along?

Central Resource Management

HDFS

Impala MapReduce Spark

YARN

Page 9: Can’t We All Just Get Along?

YARN

• Resource manager and scheduler for Hadoop• “Container” is a process scheduled on the cluster

with a resource allocation (amount MB, # cores)• Each container belongs to an “Application”

Page 10: Can’t We All Just Get Along?

YARN Application Masters

• Each YARN app has an “Application Master” (AM) process running on the cluster

• AM responsible for requesting containers from YARN• AM creation latency is much higher than resource

acquisition

Page 11: Can’t We All Just Get Along?

YARN

ResourceManager

NodeManager NodeManager

Container

Map Task

Container

Application Master

Container

Reduce Task

JobHistoryServer Client

Page 12: Can’t We All Just Get Along?

YARN Queues

• Cluster resources allocated to “queues”• Each application belongs to a queue• Queues may contain subqueues

RootMem Capacity: 12 GB

CPU Capacity: 24 cores

MarketingFair Share Mem: 4 GB

Fair Share CPU: 8 cores

R&DFair Share Mem: 4 GB

Fair Share CPU: 8 cores

SalesFair Share Mem: 4 GB

Fair Share CPU: 8 cores

Jim’s TeamFair Share Mem: 2 GB

Fair Share CPU: 4 cores

Bob’s TeamFair Share Mem: 2 GB

Fair Share CPU: 4 cores

Page 13: Can’t We All Just Get Along?

YARN app models

• Application master (AM) per job• Most simple for batch• Used by MapReduce

• Application master per session• Runs multiple jobs on behalf of the same user• Recently added in Tez

• AM as permanent service• Always on, waits around for jobs to come in• Used for Impala

Page 14: Can’t We All Just Get Along?

Spark Usage Modes

Mode Long Lived/Multiple Jobs Multiple Users

Batch No No

Interactive Yes No

Server Yes Yes

Page 15: Can’t We All Just Get Along?

Spark on YARN

• Developed at Yahoo• Application Master per SparkContext• Container per Spark executor• Currently useful for Spark Batch jobs

• Requests all resources up front

Page 16: Can’t We All Just Get Along?

Enhancing Spark on YARN

• Long-lived sessions• Multiple Jobs

• Multiple Users

Page 17: Can’t We All Just Get Along?

Long-Lived Goals

• Hang on to few resources when we’re not running work

• Use lots of the cluster (over fair share) when it’s not being used by others

• Give back resources gracefully when preempted• Get resources quickly when we need them

Page 18: Can’t We All Just Get Along?

Mesos Fine-Grained Mode

• Allocate static chunks of memory at Spark app start time

• Schedule CPU dynamically when running tasks

Page 19: Can’t We All Just Get Along?

Long-Lived Approach

• A YARN application master per Spark application (SparkContext)

• Which is to say an application master per session• One executor per application per node• One YARN container per executor• Executors can acquire and give back resources

Page 20: Can’t We All Just Get Along?

Long-Lived: YARN work

• YARN-896 - long lived YARN• YARN not built with apps that would stick around

indefinitely• Miscellaneous work like renewable container tokens

• YARN-1197 - resizable containers

Page 21: Can’t We All Just Get Along?

Long-Lived: Spark Work

• YARN fine-grained mode• Changes to support adjusting resources in Spark AM• Memory?

Page 22: Can’t We All Just Get Along?

• We want to be able to have memory allocations preempted and keep running

• RDDs stored in JVM memory• JVMs don’t give back memory

The Memory Problem

Page 23: Can’t We All Just Get Along?

The Memory Solutions

• Rewrite Spark in C++• Off-heap cache

• Hold RDDs in executor processes in off-heap byte buffers• These can be freed and returned to the OS

• Tachyon• Executor processes don’t hold RDDs• Store data in Tachyon• Punts off-heap problem to Tachyon• Has other advantages, like not losing data when executor

crashes

Page 24: Can’t We All Just Get Along?

Multiple User Challenges

• A single Spark application wants to run work on behalf of multiple parties

• Applications are typically billed to a single queue• We’d want to bill jobs to different queues

Spark AppCluster

Rajat from Marketing

Sylvia from Finance

Page 25: Can’t We All Just Get Along?

Multiple Users with Spark Fair Scheduler

• Full-features Fair Scheduler within a Spark Application

• Two level scheduling• Difficult to share dynamically between Spark and

other frameworks

Page 26: Can’t We All Just Get Along?

Multiple Users with Impala

• Impala has same exact problem• Solution: Llama (Low Latency Application MAster)

• Adapter between YARN and Impala• Runs multiple AMs in a single process• Submits resource requests on behalf of relevant AM• Jobs billed to the YARN queues they belong in

Spark App

Cluster

Rajat from Marketing

Sylvia from Finance

AM for Marketing Queue

AM for Finance Queue

Page 27: Can’t We All Just Get Along?

Spark

Other Hadoop processing frameworks