lipstick on pig

40
Putting Lipstick on Apache Pig Big Data Gurus Meetup August 14, 2013

Upload: elephantscale

Post on 15-Jan-2015

119 views

Category:

Technology


0 download

DESCRIPTION

Netflix engineer Jeff Magnusson talks about Pig Lipstick at Big Data Gurus meetup (http://www.meetup.com/BigDataGurus/)

TRANSCRIPT

Page 1: Lipstick on Pig

Putting Lipstick on Apache Pig

Big Data Gurus MeetupAugust 14, 2013

Page 2: Lipstick on Pig

Data should be accessible, easy to discover, and easy to process for everyone.

Motivation

Page 3: Lipstick on Pig

Big Data Users at Netflix

Analysts Engineers

DesiresSelf Service

EasyRich Toolset Rich APIs

A Single Platform / Data Architecture that Serves Both Groups

Page 4: Lipstick on Pig

Netflix Data Warehouse - Storage

S3 is the source of truthDecouples storage from processing.Persistent data; multiple/ transient Hadoop clusters

Data sourcesEvent data from cloud services via Ursula/HonuDimension data from Cassandra via Aegisthus

~100 billion events processed / dayPetabytes of data persisted and available to queries on S3.

Page 5: Lipstick on Pig

Netflix Data Platform - Processing

Long running clusterssla and ad-hoc

Supplemental nightly bonus clusters

For high priority ETL jobs2,000+ instances in aggregate across the clusters

Page 6: Lipstick on Pig

Netflix Hadoop Platform as a Service

S3

https://github.com/Netflix/genie

Page 7: Lipstick on Pig

Netflix Data Platform – Primitive Service Layer

Primitive, decoupled services

Building blocks for more complicated tools/services/apps

Serves 1000s of MapReduce Jobs / day

100+ jobs concurrently

Page 8: Lipstick on Pig

Netflix Data Platform – Tools

Sting(Adhoc

Visualization)

Looper(Backloading)

Forklift(Data Movement)

Ignite(A/B Test Analytics)

Lipstick(Workflow

Visualization)

Spock(Data Auditing) Heavily utilize services in the

primitive layer.

Follow the same design philosophy as primitive apps:

RESTful APIDecoupled javascript interfaces

Page 9: Lipstick on Pig

Pig and Hive at Netflix

• Hive– AdHoc queries– Lightweight aggregation

• Pig– Complex Dataflows / ETL– Data movement “glue” between complex

operations

Page 10: Lipstick on Pig

What is Pig?

• A data flow language• Simple to learn– Very few reserved words– Comparable to a SQL logical query plan

• Easy to extend and optimize• Extendable via UDFs written in multiple

languages– Java, Python, Ruby, Groovy, Javascript

Page 11: Lipstick on Pig

Sample Pig Script* (Word Count)input_lines = LOAD '/tmp/my-copy-of-all-pages-on-internet' AS (line:chararray); -- Extract words from each line and put them into a pig bag-- datatype, then flatten the bag to get one word on each rowwords = FOREACH input_lines GENERATE FLATTEN(TOKENIZE(line)) AS word; -- filter out any words that are just white spacesfiltered_words = FILTER words BY word MATCHES '\\w+'; -- create a group for each wordword_groups = GROUP filtered_words BY word; -- count the entries in each groupword_count = FOREACH word_groups GENERATE COUNT(filtered_words) AS count, group AS word; -- order the records by countordered_word_count = ORDER word_count BY count DESC;STORE ordered_word_count INTO '/tmp/number-of-words-on-internet';

* http://en.wikipedia.org/wiki/Pig_(programming_tool)#Example

Page 12: Lipstick on Pig

A Typical Pig Script

Page 13: Lipstick on Pig

Pig…

• Data flows are easy & flexible to express in text– Facilitates code reuse via UDFs and macros– Allows logical grouping of operations vs grouping by order

of execution.– But errors are easy to make and overlook.

• Scripts can quickly get complicated• Visualization quickly draws attention to:– Common errors– Execution order / logical flow– Optimization opportunities

Page 14: Lipstick on Pig

Lipstick

• Generates graphical representations of Pig data flows.

• Compatible with Apache Pig v11+• Has been used to monitor more

than 25,000 Pig jobs at Netflix

Page 15: Lipstick on Pig

Lipstick

Page 16: Lipstick on Pig

Overall JobProgress

Page 17: Lipstick on Pig

LogicalPlan

Overall JobProgress

Page 18: Lipstick on Pig

Logical Operator(reduce side)

Logical Operator(map side)

Map/Reduce Job

Intermediate Row Count

RecordsLoaded

Page 19: Lipstick on Pig

HadoopCounters

Page 20: Lipstick on Pig

Lipstick for Fast Development• During development:– Keep track of data flow– Spot common errors• Omitted (hanging) operators• Data type issues

– Easily estimate and optimize complexity• Number of MR jobs generated• Map only vs full Map/Reduce jobs• Opportunities to rejigger logic to:

– Combine multiple jobs into a single job– Manipulate execution order to achieve better parallelism (e.g.

less blocking)

Page 21: Lipstick on Pig

Lipstick for Job Monitoring• During execution:– Graphically monitor execution status from a single

console– Spot optimization opportunities• Map vs reduce side joins• Data skew• Better parallelism settings

Page 22: Lipstick on Pig

Lipstick for Support• Empowers users to support themselves– Better operational visibility• What is my script currently doing?• Why is my script slow?

– Examine intermediate output of jobs– All execution information in one place

• Facilitates communication between infrastructure / support teams and end users– Lipstick link contains all information needed to

provide support.

Page 23: Lipstick on Pig

Lipstick Architecture

Pig v11+

lipstick-console.jar

Lipstick Server(RESTful

Grails app)

Javascript Client(Frontend GUI)

RDSPersistence

Page 24: Lipstick on Pig

Lipstick Architecture - Console• Implements PigProgressNotificationListener interface• Listens for:

1. New statements to be registered (unoptimized plan)2. Script launched event (optimized, physical, M/R plan)3. MR Job completion/failure event4. Heartbeat progress (during execution)

• Pig Plans and Progress Lipstick objects• Communicates with Lipstick Server

Page 25: Lipstick on Pig

Pig Compilation Plans

Optimized Logical Plan

Physical Plan

MapReduce Plan(grouping of Physical Operators into

map or reduce jobs)

Pig Script

Unoptimized Logical Plan(~1:1 logical operator / line of Pig)

Lipstick associates Logical Operators with MapReduce jobs by inferring relationships between Logical and Physical Operations.

Page 26: Lipstick on Pig

Lipstick Architecture - Server

• Simple REST interface• It’s a Grails app!• Pig client posts plans and puts progress• Javascript client• gets plans and progress• Searches jobs by job name and user name

Page 27: Lipstick on Pig

Lipstick Architecture – JS Client

• Displays and annotates graphs with status / progress

• Completely decoupled from Server

• Event based design

• Periodically polls Server for job progress

• Usability is a key focus

Page 28: Lipstick on Pig

My Job has stalled.

Solving Problems with Lipstick - Common Problem #1

Page 29: Lipstick on Pig
Page 30: Lipstick on Pig

Unoptimized/OptimizedLogical Plan Toggle

Dangling Operator

Page 31: Lipstick on Pig

I didn’t get the data I was expecting

Common Problem #2

Page 32: Lipstick on Pig
Page 33: Lipstick on Pig
Page 34: Lipstick on Pig

I don’t understand why my job failed.

Common Problem #3

Page 35: Lipstick on Pig

Failed Job(light red background)

Successful Job(light blue background)

Page 36: Lipstick on Pig

Future of Lipstick• Annotate common errors and inefficiencies on the graph

– Skew / map side join opportunities / scalar issues– E.g. Warnings / error dashboard

• Provide better details of runtime performance– Timings annotated on graph– Min / median / max mapper and reducer times– Map / reduce completion over time

• Search through execution history– Examine trends in runtime and data volumes– History of failure / success

• Search jobs for commonalities– Common datasets loaded / saved– Better grasp data lineage– Common uses of UDFs and macros

Page 37: Lipstick on Pig

Lipstick on HiveHoney?

Page 38: Lipstick on Pig

A closer look…

Page 39: Lipstick on Pig

Wrapping up

• Lipstick is part of Netflix OSS.• Clone it on github at http:

//github.com/Netflix/Lipstick• Check out the quickstart guide– https://github.com/Netflix/Lipstick/wiki/Getting-Started#1

-quick-start

– Get started playing with Lipstick in under 5 minutes!

• We happily welcome your feedback and contributions!

Page 40: Lipstick on Pig

Jeff Magnusson: [email protected] | http://www.linkedin.com/in/jmagnuss |@jeffmagnusson

Thank you!

Jobs: http://jobs.netflix.comNetflix OSS: http://netflix.github.io

Tech Blog: http://techblog.netflix.com/