| |
| <!DOCTYPE html> |
| <html lang="en" dir=> |
| |
| <head> |
| <meta name="generator" content="Hugo 0.111.3"> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <meta name="description" content="What is Apache Flink? — Architecture # Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale. |
| Here, we explain important aspects of Flink’s architecture. |
| Process Unbounded and Bounded Data # Any kind of data is produced as a stream of events."> |
| <meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Architecture" /> |
| <meta property="og:description" content="What is Apache Flink? — Architecture # Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale. |
| Here, we explain important aspects of Flink’s architecture. |
| Process Unbounded and Bounded Data # Any kind of data is produced as a stream of events." /> |
| <meta property="og:type" content="article" /> |
| <meta property="og:url" content="https://flink.apache.org/what-is-flink/flink-architecture/" /><meta property="article:section" content="what-is-flink" /> |
| |
| |
| <title>Architecture | Apache Flink</title> |
| <link rel="manifest" href="/manifest.json"> |
| <link rel="icon" href="/favicon.png" type="image/x-icon"> |
| <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/what-is-flink/flink-architecture/" title="架构"> |
| |
| <link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o="> |
| <script defer src="/en.search.min.8592fd2e43835d2ef6fab8eb9b8969ee6ad1bdb888a636e37e28032f8bd9887d.js" integrity="sha256-hZL9LkODXS72+rjrm4lp7mrRvbiIpjbjfigDL4vZiH0="></script> |
| <!-- |
| Made with Book Theme |
| https://github.com/alex-shpak/hugo-book |
| --> |
| |
| |
| |
| <link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css"> |
| <script src="/js/anchor.min.js"></script> |
| <script src="/js/flink.js"></script> |
| <link rel="canonical" href="https://flink.apache.org/what-is-flink/flink-architecture/"> |
| |
| |
| <script> |
| var _paq = window._paq = window._paq || []; |
| |
| |
| _paq.push(['disableCookies']); |
| |
| _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]); |
| _paq.push(['trackPageView']); |
| _paq.push(['enableLinkTracking']); |
| (function() { |
| var u="//analytics.apache.org/"; |
| _paq.push(['setTrackerUrl', u+'matomo.php']); |
| _paq.push(['setSiteId', '1']); |
| var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; |
| g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); |
| })(); |
| </script> |
| |
| </head> |
| |
| <body dir=> |
| <input type="checkbox" class="hidden toggle" id="menu-control" /> |
| <input type="checkbox" class="hidden toggle" id="toc-control" /> |
| <main class="container flex"> |
| <aside class="book-menu"> |
| |
| |
| |
| <nav> |
| |
| |
| <a id="logo" href="/"> |
| <img width="70%" src="/flink-header-logo.svg"> |
| </a> |
| |
| <div class="book-search"> |
| <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" /> |
| <div class="book-search-spinner hidden"></div> |
| <ul id="book-search-results"></ul> |
| </div> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <input type="checkbox" id="section-4117fb24454a2c30ee86e524839e77ec" class="toggle" checked /> |
| <label for="section-4117fb24454a2c30ee86e524839e77ec" class="flex justify-between flink-menu-item">What is Apache Flink?<span>▾</span> |
| </label> |
| |
| <ul> |
| |
| <li> |
| |
| |
| |
| |
| |
| <label for="section-ffd5922da551e96e0481423fab94c463" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="/what-is-flink/flink-architecture/" class="active">Architecture</a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| <label for="section-fc28f08b67476edb77e00e03b6c7c2e0" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="/what-is-flink/flink-applications/" class="">Applications</a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| <label for="section-612df33a02d5d4ee78d718abaab5b5b4" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="/what-is-flink/flink-operations/" class="">Operations</a> |
| </label> |
| |
| |
| </li> |
| |
| </ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-f1ecec07350bd6810050d40158878749" class="flex justify-between flink-menu-item"> |
| <a href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/" style="color:black" class="">What is Stateful Functions? <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-4113a4c3072cb35f6fd7a0d4e098ee70" class="flex justify-between flink-menu-item"> |
| <a href="https://nightlies.apache.org/flink/flink-ml-docs-stable/" style="color:black" class="">What is Flink ML? <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-b39c70259d0abbe2bf1d8d645425f84d" class="flex justify-between flink-menu-item"> |
| <a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/" style="color:black" class="">What is the Flink Kubernetes Operator? <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-53e0b1afcb9ccaf779dc285aa272a014" class="flex justify-between flink-menu-item"> |
| <a href="https://nightlies.apache.org/flink/flink-table-store-docs-stable/" style="color:black" class="">What is Flink Table Store? <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-f4973f06a66f063045b4ebdacaf3127d" class="flex justify-between flink-menu-item"> |
| <a href="/use-cases/" class="">Use Cases</a> |
| </label> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-0f1863835376e859ac438ae9529daff2" class="flex justify-between flink-menu-item"> |
| <a href="/powered-by/" class="">Powered By</a> |
| </label> |
| |
| |
| |
| |
| |
| <br/> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-f383f23a96a43d8d0cc66aeb0237e26a" class="flex justify-between flink-menu-item"> |
| <a href="/downloads/" class="">Downloads</a> |
| </label> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <input type="checkbox" id="section-c727fab97b4d77e5b28ce8c448fb9000" class="toggle" /> |
| <label for="section-c727fab97b4d77e5b28ce8c448fb9000" class="flex justify-between flink-menu-item">Getting Started<span>▾</span> |
| </label> |
| |
| <ul> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-f45abaa99ab076108b9a5b94edbc6647" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/" style="color:black" class="">With Flink <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-efe2166e9dce6f72e126dcc2396b4402" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html" style="color:black" class="">With Flink Stateful Functions <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-7e268d0a469b1093bb33d71d093eb7b9" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/" style="color:black" class="">With Flink ML <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-cc7147cd0441503127bfaf6f219d4fbb" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/" style="color:black" class="">With Flink Kubernetes Operator <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-660ca694e416d8ca9176dda52a60d637" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-table-store-docs-stable/docs/try-table-store/quick-start/" style="color:black" class="">With Flink Table Store <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-75db0b47bf4ae9c247aadbba5fbd720d" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/" style="color:black" class="">Training Course <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| </ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <input type="checkbox" id="section-6318075fef29529089951a49d413d083" class="toggle" /> |
| <label for="section-6318075fef29529089951a49d413d083" class="flex justify-between flink-menu-item">Documentation<span>▾</span> |
| </label> |
| |
| <ul> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-9a8122d8912450484d1c25394ad40229" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-docs-stable/" style="color:black" class="">Flink 1.17 (stable) <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-8b2fd3efb702be3783ba98d650707e3c" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-docs-master/" style="color:black" class="">Flink Master (snapshot) <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-5317a079cddb964c59763c27607f43d9" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/" style="color:black" class="">Stateful Functions 3.2 (stable) <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-25b72f108b7156e94d91b04853d8813a" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-statefun-docs-master" style="color:black" class="">Stateful Functions Master (snapshot) <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-13a02f969904a2455a39ed90e287593f" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-ml-docs-stable/" style="color:black" class="">ML 2.2 (stable) <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-6d895ec5ad127a29a6a9ce101328ccdf" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-ml-docs-master" style="color:black" class="">ML Master (snapshot) <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-c83ad0caf34e364bf3729badd233a350" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/" style="color:black" class="">Kubernetes Operator 1.4 (latest) <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-a2c75d90005425982ba8f26ae0e160a3" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main" style="color:black" class="">Kubernetes Operator Main (snapshot) <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-07b85e4b2f61b1526bf202c64460abcd" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-table-store-docs-stable/" style="color:black" class="">Table Store 0.3 (stable) <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-9b9a0032b1e858a34c125d828d1a0718" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="https://nightlies.apache.org/flink/flink-table-store-docs-master/" style="color:black" class="">Table Store Master (snapshot) <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| </li> |
| |
| </ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-63d6a565d79aa2895f70806a46021c07" class="flex justify-between flink-menu-item"> |
| <a href="/getting-help/" class="">Getting Help</a> |
| </label> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-1d5066022b83f4732dc80f4e9eaa069a" class="flex justify-between flink-menu-item"> |
| <a href="https://flink-packages.org/" style="color:black" class="">flink-packages.org <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| |
| |
| |
| <br/> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-7821b78a97db9e919426e86121a7be9c" class="flex justify-between flink-menu-item"> |
| <a href="/community/" class="">Community & Project Info</a> |
| </label> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-8c042831df4e371c4ef9375f1df06f35" class="flex justify-between flink-menu-item"> |
| <a href="/roadmap/" class="">Roadmap</a> |
| </label> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <input type="checkbox" id="section-73117efde5302fddcb193307d582b588" class="toggle" /> |
| <label for="section-73117efde5302fddcb193307d582b588" class="flex justify-between flink-menu-item">How to Contribute<span>▾</span> |
| </label> |
| |
| <ul> |
| |
| <li> |
| |
| |
| |
| |
| |
| <label for="section-6646b26b23a3e79b8de9c552ee76f6dd" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="/how-to-contribute/overview/" class="">Overview</a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| <label for="section-e6ab9538b82cd5f94103b971adb7c1a9" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="/how-to-contribute/contribute-code/" class="">Contribute Code</a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| <label for="section-1c09e1358485e82d9b3f5f689d4ced65" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="/how-to-contribute/reviewing-prs/" class="">Review Pull Requests</a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| <label for="section-ed01e0defd235498fa3c9a2a0b3302fb" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="/how-to-contribute/code-style-and-quality-preamble/" class="">Code Style and Quality Guide</a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| <label for="section-4e8d5e9924cf15f397711b0d82e15650" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="/how-to-contribute/contribute-documentation/" class="">Contribute Documentation</a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| <label for="section-ddaa8307917e5ba7f60ba3316711e492" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="/how-to-contribute/documentation-style-guide/" class="">Documentation Style Guide</a> |
| </label> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| <label for="section-390a72c171cc82f180a308b95fc3aa72" class="flex justify-between flink-menu-item flink-menu-child"> |
| <a href="/how-to-contribute/improve-website/" class="">Contribute to the Website</a> |
| </label> |
| |
| |
| </li> |
| |
| </ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-9d3ddfd487223d5a199ba301f25c88c6" class="flex justify-between flink-menu-item"> |
| <a href="/security/" class="">Security</a> |
| </label> |
| |
| |
| |
| |
| |
| <br/> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <label for="section-a07783f405300745807d39eacf150420" class="flex justify-between flink-menu-item"> |
| <a href="/posts/" class="">Flink Blog</a> |
| </label> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <br/> |
| <hr class="menu-break"> |
| |
| |
| <label for="section-f71a7070dbb7b669824a6441408ded70" class="flex justify-between flink-menu-item"> |
| <a href="https://github.com/apache/flink" style="color:black" class="">Flink on GitHub <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| <label for="section-2ccaaab8c67f3105bbf7df75faca8027" class="flex justify-between flink-menu-item"> |
| <a href="https://twitter.com/apacheflink" style="color:black" class="">@ApacheFlink <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label> |
| |
| |
| |
| <hr class="menu-break"> |
| <table> |
| <tr> |
| <th colspan="2"> |
| <label for="section-78c2028200542d78f8c1a8f6b4cbb36b" class="flex justify-between flink-menu-item"> |
| <a href="https://www.apache.org/" style="color:black" class="">Apache Software Foundation <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label></th> |
| </tr> |
| <tr> |
| <td> |
| <label for="section-794df3791a8c800841516007427a2aa3" class="flex justify-between flink-menu-item"> |
| <a href="https://www.apache.org/licenses/" style="color:black" class="">License <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label></td> |
| <td> |
| <label for="section-2fae32629d4ef4fc6341f1751b405e45" class="flex justify-between flink-menu-item"> |
| <a href="https://www.apache.org/security/" style="color:black" class="">Security <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label></td> |
| </tr> |
| <tr> |
| <td> |
| <label for="section-0584e445d656b83b431227bb80ff0c30" class="flex justify-between flink-menu-item"> |
| <a href="https://www.apache.org/foundation/sponsorship.html" style="color:black" class="">Donate <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label></td> |
| <td> |
| <label for="section-00d06796e489999226fb5bb27fe1b3b2" class="flex justify-between flink-menu-item"> |
| <a href="https://www.apache.org/foundation/thanks.html" style="color:black" class="">Thanks <i class="link fa fa-external-link title" aria-hidden="true"></i></a> |
| </label></td> |
| </tr> |
| </table> |
| |
| <hr class="menu-break"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="/zh/what-is-flink/flink-architecture/" class="flex align-center"> |
| <i class="fa fa-globe" aria-hidden="true"></i> |
| 中文版 |
| </a> |
| |
| <script src="/js/track-search-terms.js"></script> |
| |
| |
| </nav> |
| |
| |
| |
| |
| <script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script> |
| |
| |
| |
| </aside> |
| |
| <div class="book-page"> |
| <header class="book-header"> |
| |
| <div class="flex align-center justify-between"> |
| <label for="menu-control"> |
| <img src="/svg/menu.svg" class="book-icon" alt="Menu" /> |
| </label> |
| |
| <strong>Architecture</strong> |
| |
| <label for="toc-control"> |
| |
| <img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" /> |
| |
| </label> |
| </div> |
| |
| |
| |
| <aside class="hidden clearfix"> |
| |
| |
| |
| <nav id="TableOfContents"><h3>On This Page <button class="toc" onclick="collapseToc()"><i class="fa fa-compress" aria-hidden="true"></i></button></h3> |
| <ul> |
| <li><a href="#process-unbounded-and-bounded-data">Process Unbounded and Bounded Data</a></li> |
| <li><a href="#deploy-applications-anywhere">Deploy Applications Anywhere</a></li> |
| <li><a href="#run-applications-at-any-scale">Run Applications at any Scale</a></li> |
| <li><a href="#leverage-in-memory-performance">Leverage In-Memory Performance</a></li> |
| </ul> |
| </nav> |
| |
| |
| </aside> |
| |
| |
| </header> |
| |
| |
| |
| |
| |
| |
| |
| <article class="markdown"><h1 id="what-is-apache-flink--architecture"> |
| What is Apache Flink? — Architecture |
| <a class="anchor" href="#what-is-apache-flink--architecture">#</a> |
| </h1> |
| <p>Apache Flink is a framework and distributed processing engine for stateful computations over <em>unbounded and bounded</em> data streams. Flink has been designed to run in <em>all common cluster environments</em>, perform computations at <em>in-memory speed</em> and at <em>any scale</em>.</p> |
| <p>Here, we explain important aspects of Flink’s architecture.</p> |
| <h2 id="process-unbounded-and-bounded-data"> |
| Process Unbounded and Bounded Data |
| <a class="anchor" href="#process-unbounded-and-bounded-data">#</a> |
| </h2> |
| <p>Any kind of data is produced as a stream of events. Credit card transactions, sensor measurements, machine logs, or user interactions on a website or mobile application, all of these data are generated as a stream.</p> |
| <p>Data can be processed as <em>unbounded</em> or <em>bounded</em> streams.</p> |
| <ol> |
| <li> |
| <p><strong>Unbounded streams</strong> have a start but no defined end. They do not terminate and provide data as it is generated. Unbounded streams must be continuously processed, i.e., events must be promptly handled after they have been ingested. It is not possible to wait for all input data to arrive because the input is unbounded and will not be complete at any point in time. Processing unbounded data often requires that events are ingested in a specific order, such as the order in which events occurred, to be able to reason about result completeness.</p> |
| </li> |
| <li> |
| <p><strong>Bounded streams</strong> have a defined start and end. Bounded streams can be processed by ingesting all data before performing any computations. Ordered ingestion is not required to process bounded streams because a bounded data set can always be sorted. Processing of bounded streams is also known as batch processing.</p> |
| </li> |
| </ol> |
| |
| <img |
| src="https://flink.apache.org/img/bounded-unbounded.png" |
| alt="" |
| width="600px" |
| style="display:block;margin-left:auto;margin-right:auto" |
| > |
| <p><strong>Apache Flink excels at processing unbounded and bounded data sets.</strong> Precise control of time and state enable Flink’s runtime to run any kind of application on unbounded streams. Bounded streams are internally processed by algorithms and data structures that are specifically designed for fixed sized data sets, yielding excellent performance.</p> |
| <p>Convince yourself by exploring the <a href="/use-cases/">use cases</a> that have been built on top of Flink.</p> |
| <h2 id="deploy-applications-anywhere"> |
| Deploy Applications Anywhere |
| <a class="anchor" href="#deploy-applications-anywhere">#</a> |
| </h2> |
| <p>Apache Flink is a distributed system and requires compute resources in order to execute applications. Flink integrates with all common cluster resource managers such as <a href="https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/YARN.html">Hadoop YARN</a>, <a href="https://mesos.apache.org">Apache Mesos</a>, and <a href="https://kubernetes.io/">Kubernetes</a> but can also be setup to run as a stand-alone cluster.</p> |
| <p>Flink is designed to work well each of the previously listed resource managers. This is achieved by resource-manager-specific deployment modes that allow Flink to interact with each resource manager in its idiomatic way.</p> |
| <p>When deploying a Flink application, Flink automatically identifies the required resources based on the application’s configured parallelism and requests them from the resource manager. In case of a failure, Flink replaces the failed container by requesting new resources. All communication to submit or control an application happens via REST calls. This eases the integration of Flink in many environments.</p> |
| <!-- Add this section once library deployment mode is supported. --> |
| <!-- |
| |
| Flink features two deployment modes for applications, the *framework mode* and the *library mode*. |
| |
| * In the **framework deployment mode**, a client submits a Flink application against a running Flink service that takes care of executing the application. This is the common deployment model for most data processing frameworks, query engines, or database systems. |
| |
| * In the **library deployment mode**, a Flink application is packaged together with the Flink master executables into a (Docker) image. Another job-independent image contains the Flink worker executables. When a container is started from the job image, the Flink master process is started and the embedded application is automatically loaded. Containers started from the worker image, bootstrap Flink worker processes which automatically connect to the master process. A container manager such as Kubernetes monitors the running containers and automatically restarts failed containers. In this mode, you don't have to setup and maintain a Flink service in your cluster. Instead you package Flink as a library with your application. This model is very popular for deploying microservices. |
| |
| <div class="row front-graphic"> |
| |
| <img |
| src="https://flink.apache.org/img/deployment-modes.png" |
| alt="" |
| width="600px" |
| style="display:block;margin-left:auto;margin-right:auto" |
| > |
| </div> |
| |
| --> |
| <h2 id="run-applications-at-any-scale"> |
| Run Applications at any Scale |
| <a class="anchor" href="#run-applications-at-any-scale">#</a> |
| </h2> |
| <p>Flink is designed to run stateful streaming applications at any scale. Applications are parallelized into possibly thousands of tasks that are distributed and concurrently executed in a cluster. Therefore, an application can leverage virtually unlimited amounts of CPUs, main memory, disk and network IO. Moreover, Flink easily maintains very large application state. Its asynchronous and incremental checkpointing algorithm ensures minimal impact on processing latencies while guaranteeing exactly-once state consistency.</p> |
| <p><a href="/powered-by/">Users reported impressive scalability numbers</a> for Flink applications running in their production environments, such as</p> |
| <ul> |
| <li>applications processing <strong>multiple trillions of events per day</strong>,</li> |
| <li>applications maintaining <strong>multiple terabytes of state</strong>, and</li> |
| <li>applications <strong>running on thousands of cores</strong>.</li> |
| </ul> |
| <h2 id="leverage-in-memory-performance"> |
| Leverage In-Memory Performance |
| <a class="anchor" href="#leverage-in-memory-performance">#</a> |
| </h2> |
| <p>Stateful Flink applications are optimized for local state access. Task state is always maintained in memory or, if the state size exceeds the available memory, in access-efficient on-disk data structures. Hence, tasks perform all computations by accessing local, often in-memory, state yielding very low processing latencies. Flink guarantees exactly-once state consistency in case of failures by periodically and asynchronously checkpointing the local state to durable storage.</p> |
| <div class="row front-graphic"> |
| |
| <img |
| src="https://flink.apache.org/img/local-state.png" |
| alt="" |
| width="600px" |
| style="display:block;margin-left:auto;margin-right:auto" |
| > |
| </div> |
| </article> |
| |
| |
| |
| <footer class="book-footer"> |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a> |
| <br><br> |
| <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/what-is-flink/flink-architecture.md" style="color:black"><i class="fa fa-edit fa-fw"></i>Edit This Page</a> |
| |
| |
| |
| |
| </footer> |
| |
| |
| |
| <div class="book-comments"> |
| |
| </div> |
| |
| |
| |
| <label for="menu-control" class="hidden book-menu-overlay"></label> |
| </div> |
| |
| |
| <aside class="book-toc"> |
| |
| |
| |
| <nav id="TableOfContents"><h3>On This Page <button class="toc" onclick="collapseToc()"><i class="fa fa-compress" aria-hidden="true"></i></button></h3> |
| <ul> |
| <li><a href="#process-unbounded-and-bounded-data">Process Unbounded and Bounded Data</a></li> |
| <li><a href="#deploy-applications-anywhere">Deploy Applications Anywhere</a></li> |
| <li><a href="#run-applications-at-any-scale">Run Applications at any Scale</a></li> |
| <li><a href="#leverage-in-memory-performance">Leverage In-Memory Performance</a></li> |
| </ul> |
| </nav> |
| |
| |
| </aside> |
| <aside class="expand-toc"> |
| <button class="toc" onclick="expandToc()"> |
| <i class="fa fa-expand" aria-hidden="true"></i> |
| </button> |
| </aside> |
| |
| </main> |
| |
| |
| </body> |
| |
| </html> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |