The Future of Apache Flink®

Slides:



Advertisements
Similar presentations
Support for Fault Tolerance (Dynamic Process Control) Rich Graham Oak Ridge National Laboratory.
Advertisements

MapReduce Online Tyson Condie UC Berkeley Slides by Kaixiang MO
MapReduce Online Created by: Rajesh Gadipuuri Modified by: Ying Lu.
EHarmony in Cloud Subtitle Brian Ko. eHarmony Online subscription-based matchmaking service Available in United States, Canada, Australia and United Kingdom.
Discretized Streams: Fault-Tolerant Streaming Computation at Scale Wenting Wang 1.
Distributed Computations
Distributed Computations MapReduce
Next Generation of Apache Hadoop MapReduce Arun C. Murthy - Hortonworks Founder and Architect Formerly Architect, MapReduce.
Google Distributed System and Hadoop Lakshmi Thyagarajan.
Take An Internal Look at Hadoop Hairong Kuang Grid Team, Yahoo! Inc
HADOOP ADMIN: Session -2
Hadoop & Cheetah. Key words Cluster  data center – Lots of machines thousands Node  a server in a data center – Commodity device fails very easily Slot.
Advanced Topics: MapReduce ECE 454 Computer Systems Programming Topics: Reductions Implemented in Distributed Frameworks Distributed Key-Value Stores Hadoop.
Introduction to UNIX/Linux Exercises Dan Stanzione.
Cloud Computing for the Enterprise November 18th, This work is licensed under a Creative Commons.
Map Reduce: Simplified Data Processing On Large Clusters Jeffery Dean and Sanjay Ghemawat (Google Inc.) OSDI 2004 (Operating Systems Design and Implementation)
Map Reduce for data-intensive computing (Some of the content is adapted from the original authors’ talk at OSDI 04)
Introduction to Hadoop and HDFS
MapReduce M/R slides adapted from those of Jeff Dean’s.
Grid Computing at Yahoo! Sameer Paranjpye Mahadev Konar Yahoo!
HADOOP DISTRIBUTED FILE SYSTEM HDFS Reliability Based on “The Hadoop Distributed File System” K. Shvachko et al., MSST 2010 Michael Tsitrin 26/05/13.
JSS Job Submission Service Massimo Sgaravatto INFN Padova.
Monitoring with InfluxDB & Grafana
Apache Tez : Accelerating Hadoop Query Processing Page 1.
Apache Ignite Compute Grid Research Corey Pentasuglia.
Robert Metzger, Aljoscha Connecting Apache Flink® to the World: Reviewing the streaming connectors.
Big thanks to everyone!.
MillWheel Fault-Tolerant Stream Processing at Internet Scale
Pilot Kafka Service Manuel Martín Márquez. Pilot Kafka Service Manuel Martín Márquez.
Snapshots, checkpoints, rollback, and restart
Installation The Intercompany Integration Solution for SAP Business One Version 2.0 for SAP Business One 9.1 Welcome to the course on the installation.
Big Data is a Big Deal!.
Backup and Recovery for Hadoop: Plans, Survey and User Inputs
How Alluxio (formerly Tachyon) brings a 300x performance improvement to Qunar’s streaming processing Xueyan Li (Qunar) & Chunming Li (Garena)
Hadoop Aakash Kag What Why How 1.
Streaming Analytics & CEP Two sides of the same coin?
Hadoop.
Some practical information
Lead SQL BankofAmerica Blog: SQLHarry.com
Scaling Apache Flink® to very large State
PREGEL Data Management in the Cloud
Stream Analytics with SQL on Apache Flink®
Running Apache Flink® Everywhere
Enabling Scalable and HA Ingestion and Real-Time Big Data Insights for the Enterprise OCJUG, 2014.
Data Platform and Analytics Foundational Training
Akshun Gupta, Karthik Bala
Installation The Intercompany Integration Solution for SAP Business One Version 2.0 for SAP Business One 9.1 Welcome to the course on the installation.
Enterprise security for big data solutions on Azure HDInsight
MapReduce Computing Paradigm Basics Fall 2013 Elke A. Rundensteiner
COS 518: Advanced Computer Systems Lecture 11 Michael Freedman
Capital One Architecture Team and DataTorrent
X in [Integration, Delivery, Deployment]
MapReduce Simplied Data Processing on Large Clusters
The Basics of Apache Hadoop
CS6604 Digital Libraries IDEAL Webpages Presented by
湖南大学-信息科学与工程学院-计算机与科学系
Rui Wu, Jose Painumkal, Sergiu M. Dascalu, Frederick C. Harris, Jr
February 26th – Map/Reduce
Cse 344 May 4th – Map/Reduce.
CS110: Discussion about Spark
Streaming Sensor Data Fjord / Sensor Proxy Multiquery Eddy
Grid Computing Done by: Shamsa Amur Al-Matani.
Slides prepared by Samkit
Discretized Streams: A Fault-Tolerant Model for Scalable Stream Processing Zaharia, et al (2012)
Lecture 16 (Intro to MapReduce and Hadoop)
COS 518: Advanced Computer Systems Lecture 12 Michael Freedman
COS 518: Distributed Systems Lecture 11 Mike Freedman
MapReduce: Simplified Data Processing on Large Clusters
Pig Hive HBase Zookeeper
Advanced Tips and Tricks
Presentation transcript:

The Future of Apache Flink® Aljoscha Krettek aljoscha@apache.org @aljoscha

Before We Start Approach me or anyone wearing a commiter’s badge if you are interested in learning more about a feature/topic Whoami: Apache Flink® PMC, Apache Beam (incubating) PMC, (self-proclaimed) streaming expert ☺

Disclaimer What I’m going to tell you are my views and opinions. I don’t control the roadmap of Apache Flink®, the community does. You can learn all of this by following the community and talking to people.

Things We Will Cover State/Checkpointing Stream API Operations Incremental Checkpointing State/Checkpointing Queryable State Hot Standby Window Trigger DSL Cluster Elasticity Side Outputs Stream API Security Enhancements Job Elasticity Enhanced Window Meta Data Operations Side Inputs Failure Policies Stream SQL Operator Inspection Running Flink Everywhere

Varying Degrees of Readiness foo Stuff that is in the master branch* Things where the community already has thorough plans for implementation Ideas and sketches, not concrete implementations DONE IN PROGRESS ☺ DESIGN * or really close to that 🤗

Stream API

A Typical Streaming Use Case DataStream<MyType> input = <my source>; input.keyBy(new MyKeyselector()) .window(TumblingEventTimeWindows.of(Time.hours(5))) .trigger(EventTimeTrigger.create()) .allowedLateness(Time.hours(1)) .apply(new MyWindowFunction()) .addSink(new MySink()); src window assigner key trigger win allowed lateness window function sink

Window Trigger Decides when to process a window Flink has built-in triggers: EventTime ProcessingTime Count For more complex behaviour you need to roll your own, i.e: window assigner trigger allowed lateness window function “fire at window end but also every 5 minutes from start”

Window Trigger DSL Library of combinable trigger building blocks: EventTime ProcessingTime Count AfterAll(subtriggers) AfterAny(subtriggers) Repeat(subtrigger) VS EventTime.afterEndOfWindow() .withEarlyTrigger(ProcessingTime.after(5)) DONE

Enhanced Window Meta Data Current WindowFunction: No information about firing New WindowFunction: window assigner trigger allowed lateness (key, window, input) → output window function (key, window, context, input) → output context = (Firing Reason, Id, …) IN PROGRESS

Detour: Window Operator Window operator keeps track of timers and state for window contents and triggers Window results are made available when the trigger fires window state window assigner state trigger allowed lateness timers window function

Queryable State Flink-internal job state is made queryable DONE Flink-internal job state is made queryable Aggregations, windows, machine learning models window assigner trigger allowed lateness timers window function

Enriching Computations Operations typically only have one input What if we need to make calculations not just based on the input events? src ? key win sink

Side Inputs Additional input for operators besides the main input IN PROGRESS Additional input for operators besides the main input From a stream, from a data base or from a computation result src2 src key key win win sink

What Happens to Late Data? By default events arriving after the allowed lateness are dropped window assigner trigger allowed lateness window function src key late data win sink

Side Outputs Selectively send output to different downstream operators IN PROGRESS Selectively send output to different downstream operators Not just useful for window operations src key late data win op sink sink

Stream SQL IN PROGRESS SELECT STREAM TUMBLE_START(tStamp, INTERVAL ‘5’ HOUR) AS hour, COUNT(*) AS cnt FROM events WHERE status = ‘received’ GROUP BY TUMBLE(tStamp, INTERVAL ‘5’ HOUR)

State/Checkpointing

Checkpointing: Status Quo Saving the state of operators in case of failures Source chk 1 chk 2 chk 3 Flink Pipeline HDFS for Checkpoints

Incremental Checkpointing Only checkpoint changes to save on network traffic/time Source chk 1 chk 2 chk 3 DESIGN Flink Pipeline HDFS for Checkpoints

Hot Standby Don’t require complete cluster restart upon failure Replicate state to other TaskManagers so that they can pick up work of failed TaskManagers Keep data available for querying even when job fails DESIGN

Scaling to Super Large State Flink is already able to handle hundreds of GBs of state smoothly Incremental checkpointing and hot standby enable scaling to TBs of state without performance problems

Operations

Job Elasticity – Status Quo A Flink job is started with a fixed amount of parallel operators Data comes in, the operators work on it in parallel win win

Job Elasticity – Problem What happens when you get to much input data? Affects performance: Backpressure Latency Throughput win win

Job Elasticity – Solution Dynamically scale up/down the amount or worker nodes win win win DONE

Running Flink Everywhere Native integration with cluster management frameworks IN PROGRESS

Cluster Elasticity Equivalent to Job Elasticity on cluster side Dynamic resource allocation from cluster manager IN PROGRESS 1 2

Security Enhancements Authentication to external systems Over-the-wire encryption for Flink and authorization at Flink Cluster Kerberos IN PROGRESS

Failure Policies/Inspection Policies for handling pipeline errors Policies for handling checkpointing errors Live inspection of the output of running operators in the pipeline DESIGN

Closing

How to Learn More FLIP – Flink Improvement Proposals https://cwiki.apache.org/confluence/display/FLINK/Flink+Improvement+Proposals

Recap The Flink API is already mature, some refinements are coming up A lot of work is going on in making day-to-day operations easy and making sure Flink scales to very large installations Most of the changes are driven by user demand Yeah incremental api changes is good, respects users Scale elasticity operations are driven by the need to operate in the largest production environments And the fact that most changes are driven by actual use show healthy community where users and committers are working closely together

Enjoy the conference!