Streaming Auto-Scaling in Google Cloud Dataflow

Streaming Auto-Scaling in Google Cloud Dataflow

Streaming Auto-Scaling in Google Cloud Dataflow Manuel Fahndrich Software Engineer Google Addictive Mobile Game https://commons.wikimedia.org/wiki/File:Globe_centered_in_the_Atlantic_Ocean_(green_and_grey_globe_scheme).svg Individual Ranking Team Ranking Sarah 151,365 1,251,965 Joe 109,903 1,019,341 Milo 98,736 989,673 Hourly Ranking Daily Ranking An Unbounded Stream of Game Events 8:00 1:00 9:00 2:00 10:00 3:00 11:00 4:00 12:00 5:00 13:00 6:00 14:00 7:00 … with unknown delays. 8:00 8:00 8:00 8:00 9:00 10:00 11:00 12:00 13:00 14:00 The Resource Allocation Problem resources over-provisioned resources workload time resources workload under-provisioned resources time Matching Resources to Workload resources auto-tuned resources workload time Resources = Parallelism parallelism auto-tuned parallelism workload time More generally: VMs (including CPU, RAM, network, IO). Assumptions Big Data Problem Embarrassingly Parallel Scaling VMs ==> Scales Throughput Horizontal Scaling Agenda 1 Streaming Dataflow Pipelines 2 Pipeline Execution 3 Adjusting Parallelism Automatically 4 Summary + Future Work 1 Streaming Dataflow Google’s Data-Related Systems Dataflow MapReduce FlumeJava Dremel Spanner GFS Big Table Pregel Colossus MillWheel 2002 2004 2006 2008 2010 2012 2014 2016 Google Dataflow SDK Open Source SDK used to construct a Dataflow pipeline. (Now Incubating as Apache Beam) Computing Team Scores // Collection of raw log lines PCollection<String> raw = ...; // Element-wise transformation into team/score // pairs PCollection<KV<String, Integer>> input = raw.apply(ParDo.of(new ParseFn())) // Composite transformation containing an // aggregation PCollection<KV<String, Integer>> output = input .apply(Window.into(FixedWindows.of(Minutes(60)))) .apply(Sum.integersPerKey()); Google Cloud Dataflow ● Given code in Dataflow (incubating as Apache Beam) SDK... ● Pipelines can run… ○ On your development machine ○ On the Dataflow Service on Google Cloud Platform ○ On third party environments like Spark or Flink. Google Cloud Dataflow Cloud Dataflow A fully-managed cloud service and programming model for batch and streaming big data processing. Google Cloud Dataflow Optimize Schedule GCS GCS Back to the Problem at Hand parallelism auto-tuned parallelism workload time Auto-Tuning Ingredients Signals measuring Workload Policy making Decisions Mechanism actuating Change 2 Pipeline Execution Optimized Pipeline = DAG of Stages Individual points S1 raw input S0 S2 team points Stage Throughput Measure throughput throughput Individual points S1 raw input S0 S2 team points throughput Picture by Alexandre Duret-Lutz, Creative Commons 2.0 Generic Queues of Data Ready for Processing S1 S0 S2 Queue Size = Backlog Backlog Size vs. Backlog Growth Backlog Growth = Processing Deficit Derived Signal: Stage Input Rate throughput backlog growth S1 Input Rate = Throughput + Backlog Growth Constant Backlog... ...could be bad Backlog Size Backlog Time = Throughput Backlog Time = Time to get through backlog Bad Backlog = Long Backlog Time Backlog Growth and Backlog Time Inform Upscaling. What Signals indicate Downscaling? Low CPU Utilization Signals Summary Throughput Backlog growth Backlog time CPU utilization Policy: making Decisions Goals: 1. No backlog growth 2. Short backlog time 3. Reasonable CPU utilization Upscaling Policy: Keeping Up Given M machines For a stage, given: average stage throughput T average positive backlog growth G of stage Machines needed for stage to keep up: (T + G) M’ = M T Upscaling Policy: Catching Up Given M machines Given R (time to reduce backlog) For a stage, given: average backlog time B Extra machines to remove backlog: B Extra = M R Upscaling Policy: All Stages Want all stages to: 1. keep up 2. have log backlog time Pick Maximum over all stages of M’ + Extra Example (signals) input rate throughput MB/s seconds backlog growth backlog time Example (signals) input rate throughput MB/s seconds backlog growth backlog time Example (signals) input rate throughput MB/s seconds backlog growth backlog time Example (signals) input rate throughput MB/s seconds backlog growth backlog time Example (policy) M’ machines M Extra R=60s Example (policy) M’ machines M Extra R=60s Example (policy) M’ machines M Extra R=60s Example (policy) M’ machines M Extra R=60s Preconditions for Downscaling Low backlog time No backlog growth Low CPU utilization How far can we downscale? Stay tuned... Mechanism: actuating Change 3 Adjusting Parallelism of a Running Streaming Pipeline Optimized Pipeline = DAG of Stages S1 S0 S2 Optimized Pipeline = DAG of Stages S1 S0 S2 Optimized Pipeline = DAG of Stages Machine 0 S1 S0 S2 Adding Parallelism S1 Machine 0 S0 S1 S2 S0 S1 S2 S0 S2 Adding Parallelism Machine 0 S1 S0 S2 Machine 1 S1 S0 S2 Adding Parallelism = Splitting Key Ranges Machine 0 S1 S0 S2 Machine 1 S1 S0 S2 Migrating a Computation Adding Parallelism = Migrating Computation Ranges Machine 0 S1 S0 S2 Machine 1 S1 S0 S2 Checkpoint and Recovery ~ Computation Migration Key Ranges and Persistence Machine 0 Machine 2 S1 S1 S0 S0 S2 S2 Machine 1 Machine 3 S1 S1 S0 S0 S2 S2 Downscaling from 4 to 2 Machines Machine 0 Machine 2 S1 S1 S0 S0 S2 S2 Machine 1 Machine 3 S1 S1 S0 S0 S2 S2 Downscaling from 4 to 2 Machines Machine 0 Machine 2 S1 S1 S0 S0 S2 S2 Machine 1 Machine 3 S1 S1 S0 S0 S2 S2 Downscaling from 4 to 2 Machines Machine 0 S1 S0 S2 Machine 1 S1 S0 S2 Downscaling from 4 to 2 Machines Machine 1 S1 S0 S2 Upsizing = Steps in Reverse Machine 2 S1 S0 S2 Granularity of Parallelism As of March 2016, Google Cloud Dataflow: • Splits Key Ranges initially Based on Max Machines • At Max: 1 Logical Persistent Disk per Machine Each disk has slice of key ranges from all stages • Only (relatively) even Disk Distributions • Results in Scaling Quanta Example Scaling Parallelism Disk per Machine 3 N/A Quanta: 4 15 Max = 60 Machines 5 12 6 10 7 8, 9 8 7, 8 9 6, 7 10 6 12 5 15 4 20 3 30 2 60 1 Policy: making Decisions Goals: 1. No backlog growth 2. Short backlog time 3. Reasonable CPU utilization Preconditions for Downscaling Low backlog time No backlog growth Low CPU utilization Downscaling Policy Next lower scaling quanta => M’ machines Estimate future CPUM’ per machine: M CPU = CPU M’ M’ M If new CPUM’ < threshold (say 90%), downscale to M’ Summary + 4 Future Work Artificial Experiment Auto-Scaling Summary Signals: throughput, backlog time, backlog growth, CPU utilization Policy: keep up, reduce backlog, use CPUs Mechanism: split key ranges, migrate computations Future Work • Experiment with non-uniform disk distributions to address hot ranges • Dynamically splitting ranges finer than initially done. • Approximate model of #VM - throughput relation Questions? Further reading on streaming model: The world beyond batch: Streaming 101 The world beyond batch: Streaming 102.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    73 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us