写点什么

Flink 基础教程(二):初探 Flink

  • 2020-03-27
  • 本文字数:2060 字

    阅读完需:约 7 分钟

Flink基础教程(二):初探Flink

编者按:本文节选自图灵程序设计丛书 《Flink 基础教程》一书中的部分章节。


Flink 的主页 1 在其顶部展示了该项目的理念:“Apache Flink 是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架。”Flink 不仅能提供同时支持高吞吐和 exactly-once 语义的实时计算,还能提供批量数据处理,这让许多人感到吃惊。鱼与熊掌并非不可兼得,Flink 用同一种技术实现了两种功能。


1 http://flink.apache.org


这个顶级的 Apache 项目是怎么诞生的呢?Flink 起源于 Stratosphere 项目,Stratosphere 是在 2010~2014 年由 3 所地处柏林的大学和欧洲的一些其他的大学共同进行的研究项目。当时,这个项目已经吸引了一个较大的社区,一部分原因是它出现在了若干公共开发者研讨会上,比如在柏林举办的 Berlin Buzzwords,以及在科隆举办的 NoSQL Matters,等等。强大的社区基础是这个项目适合在 Apache 软件基金会中孵化的一个原因。


2014 年 4 月,Stratosphere 的代码被复制并捐献给了 Apache 软件基金会,参与这个孵化项目的初始成员均是 Stratosphere 系统的核心开发人员。不久之后,创始团队中的许多成员离开大学并创办了一个公司来实现 Flink 的商业化,他们为这个公司取名为 data Artisans。在孵化期间,为了避免与另一个不相关的项目重名,项目的名称也发生了改变。Flink 这个名字被挑选出来,以彰显这种流处理器的独特性:在德语中,flink 一词表示快速和灵巧。项目采用一只松鼠的彩色图案作为 logo,这不仅因为松鼠具有快速和灵巧的特点,还因为柏林的松鼠有一种迷人的红棕色。



图 1:左侧:柏林的红松鼠拥有可爱的耳朵;右侧:Flink 的松鼠 logo 拥有可爱的尾巴,尾巴的颜色与 Apache 软件基金会的 logo 颜色相呼应。这是一只 Apache 风格的松鼠!


这个项目很快完成了孵化,并在 2014 年 12 月一跃成为 Apache 软件基金会的顶级项目。作为 Apache 软件基金会的 5 个最大的大数据项目之一,Flink 在全球范围内拥有 200 多位开发人员,以及若干公司中的诸多上线场景,有些甚至是世界 500 强的公司。在作者撰写本书的时候,共有 34 个 Flink 线下聚会在世界各地举办,社区大约有 12 000 名成员,还有众多 Flink 演讲者参与到各种大数据研讨会中。2015 年 10 月,第一届 Flink Forward 研讨会在柏林举行。

批处理与流处理

Flink 是如何同时实现批处理与流处理的呢?答案是,Flink 将批处理(即处理有限的静态数据)视作一种特殊的流处理。


Flink 的核心计算构造是图 2 中的 Flink Runtime 执行引擎,它是一个分布式系统,能够接受数据流程序并在一台或多台机器上以容错方式执行。Flink Runtime 执行引擎可以作为 YARN(Yet Another Resource Negotiator)的应用程序在集群上运行,也可以在 Mesos 集群上运行,还可以在单机上运行(这对于调试 Flink 应用程序来说非常有用)。



图 2:Flink 技术栈的核心组成部分。值得一提的是,Flink 分别提供了面向流处理的接口(DataStream API)和面向批处理的接口(DataSet API)。因此,Flink 既可以完成流处理,也可以完成批处理。Flink 支持的拓展库涉及机器学习(FlinkML)、复杂事件处理(CEP),以及图计算(Gelly),还有分别针对流处理和批处理的 Table API


能被 Flink Runtime 执行引擎接受的程序很强大,但是这样的程序有着冗长的代码,编写起来也很费力。基于这个原因,Flink 提供了封装在 Runtime 执行引擎之上的 API,以帮助用户更方便地生成流式计算程序。Flink 提供了用于流处理的 DataStream API 和用于批处理的 DataSet API。值得注意的是,尽管 Flink Runtime 执行引擎是基于流处理的,但是 DataSet API 先于 DataStream API 被开发出来,这是因为工业界对无限流处理的需求在 Flink 诞生之初并不大。


DataStream API 可以流畅地分析无限数据流,并且可以用 Java 或者 Scala 来实现。开发人员需要基于一个叫 DataStream 的数据结构来开发,这个数据结构用于表示永不停止的分布式数据流。


Flink 的分布式特点体现在它能够在成百上千台机器上运行,它将大型的计算任务分成许多小的部分,每个机器执行一个部分。Flink 能够自动地确保在发生机器故障或者其他错误时计算能持续进行,或者在修复 bug 或进行版本升级后有计划地再执行一次。这种能力使得开发人员不需要担心失败。Flink 本质上使用容错性数据流,这使得开发人员可以分析持续生成且永远不结束的数据(即流处理)。


Flink 解决了许多问题,比如保证了 exactly-once 语义和基于事件时间的数据窗口。开发人员不再需要在应用层解决相关问题,这大大地降低了出现 bug 的概率。


因为不用再在编写应用程序代码时考虑如何解决问题,所以工程师的时间得以充分利用,整个团队也因此受益。好处并不局限于缩短开发时间,随着灵活性的增加,团队整体的开发质量得到了提高,运维工作也变得更容易、更高效。Flink 让应用程序在生产环境中获得良好的性能。尽管相对较新,但是 Flink 已经在生产环境中得到了应用,下一节将做更详细的介绍。


图书简介https://www.ituring.com.cn/book/2036



相关阅读


Flink基础教程(一):流处理技术的演变


2020-03-27 10:002565

评论

发布
暂无评论
发现更多内容

代币经济学赋能社区自运营:构建Web3时代的永动飞轮

区块链软件开发推广运营

dapp 交易所开发 链游开发 公链开发 代币开发

开发认为测试不及时,测试吐槽工作量太大?

禅道项目管理

DevOps 软件开发 效能管理 测试人员 测试效率

意图框架事件推荐方案,精准匹配用户需求

HarmonyOS SDK

harmoyos

78%开发者已用AI工具:飞算JavaAI「完整工程代码生成」能否改写职场规则?

飞算JavaAI开发助手

从 0 到微服务商城系统:飞算 JavaAI 自动生成多模块代码 + 服务治理

飞算JavaAI开发助手

通过阿里云Milvus与通义千问VL大模型,快速实现多模态搜索

阿里云大数据AI技术

大数据 阿里云 向量检索 多模态 Milvus

埋点系统技术选型-自研还是开源?

ClkLog

开源 数据分析 埋点 用户行为分析 客户画像

生成式 AI 引爆广告效率革命,揭秘京东大模型应用架构的实践之道

京东零售技术

业内首次! 全面复现DeepSeek-R1-Zero 数学、代码能力,训练步数仅需R1-Zero 1/10

快手技术

LLM

企业异地组网方案:IEPL/IPLC与MPLS/SD-WAN对比

Ogcloud

SD-WAN 企业组网 异地组网

如何做到供应链的协同管理?

积木链小链

数字化转型 智能制造 供应链管理

企业办公即时通讯软件BeeWorks,私有化安全防泄密

BeeWorks

IM 即时通讯IM 私有化部署 企业级应用

《重塑AI应用架构》系列: Serverless与MCP融合创新,构建AI应用全新智能中枢

华为云开发者联盟

,华为云 华为开发者空间

打破"沙漏“现象→提高生成式搜索/推荐的上限

京东零售技术

赋能车联网 | 智能地铁物联系统,让出行更顺畅

KaiwuDB

数据库 赋能 kwdb

【华为云MySQL技术专栏】MySQL的WriteSet并行复制介绍

华为云开发者联盟

,华为云 华为开发者空间

新加坡见!快手11篇论文入选人工智能领域顶会ICLR 2025

快手技术

人工智能 Iclr

福启云端,相约榕城,4月29日,不见不散!

天翼云开发者社区

智能云 数字中国

马蹄链DAPP代币合约流动性挖矿分红系统开发详细及方案

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合

阿里巴巴云原生

阿里云 云原生 MCP

与智者同行:京东零售技术人的成长书单

京东零售技术

新系统上线前夜 VS 旧 RBAC 漏洞?飞算 JavaAI 10 分钟重构全套权限逻辑

飞算JavaAI开发助手

浅析金仓数据库KingbaseES的Query Mapping:无需改代码的 SQL 优化神器

金仓技术

KingBase 金仓数据库

企业为什么要用私有化的视频会议软件?BeeWorks Meet支持私有化

BeeWorks

即时通讯 IM 私有化部署 企业级应用

图形化编程逆转黑盒:让 AI 生成代码更可控

代码制造者

AI编程

什么是公链?公链项目有哪些?公链项目开发

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

企业AI成功落地的关键:生产级AI应用背后的“脏活累活”

UniverAI智宇苍穹

开发平台 企业 AI 应用 AI落地 AI 大模型 企业级AI工程化

吼吼科技:在智能制造领域的合作与创新之路

极客天地

从 “码农” 到 “架构师”:AI 工具如何助力职业跃迁?

飞算JavaAI开发助手

飞算 JavaAI 的 “需求变更” 解决方案:让开发更灵活!

飞算JavaAI开发助手

Flink基础教程(二):初探Flink_语言 & 开发_科斯塔斯•宙马斯_InfoQ精选文章