Flink 概述

什么是 Flink

Apache Apache Flink 是一个开源的流处理框架,应用于分布式、高性能、高可用的数据流应用程序。可以处理有限数据流和无限数据,即能够处理有边界和无边界的数据流。无边界的数据流就是真正意义上的流数据,所以 Flink 是支持流计算的。有边界的数据流就是批数据,所以也支持批处理的。不过 Flink 在流处理上的应用比在批处理上的应用更加广泛,统一批处理和流处理也是 Flink 目标之一。Flink 可以部署在各种集群环境,可以对各种大小规模的数据进行快速计算。

  • 2010~2014Flink 起源于柏林理工大学的研究性项目 Stratosphere
  • 2014 年该项目被捐赠给 Apache 软件基金会
  • 2014 年 12 月 Flink 一跃成为 Apache 软件基金会的顶级项目之一

在德语中,Flink 一词表示快速和灵巧,项目采用一只松鼠的彩色图案作为 logo,这不仅是因为松鼠具有快速和灵巧的特点,还因为柏林的松鼠有一种迷人的红棕色,而 Flink 的松鼠 logo 拥有可爱的尾巴,尾巴的颜色与 Apache 软件基金会的 logo 颜色相呼应,也就是说,这是一只 Apache 风格的松鼠

Flink 的特点

Flink 有如下特点:

  • 批流一体:统一批处理和流处理
  • 分布式:Flink 程序可以运行在分布式环境下
  • 高性能
  • 高可用
  • 准确性:Flink 可以保证数据处理的准确性

Flink 应用场景

Flink 主要应用于流式数据分析场景

  • 实时 ETL

Extraction-Transformation-Loading 的缩写,中文名称为数据抽取、转换和加载.

集成流计算现有的诸多数据通道和 SQL 灵活的加工能力,对流式数据进行实时清晰、归并和结构化处理;同时,对离线数仓进行有效的补充和优化,并为数据实时传输提供可计算通道。

  • 实时报表

实时化采集,加工流式数据存储;实时监控和展现业务、客户各类指标,让数据化运营实时化。

  • 监控预警

对系统和用户行为进行实时监测和分析,以便及时发现危险行为。

  • 在线系统

实时计算各类数据指标,并利用实时结果及时调整在线系统的相关策略,并应用于内容投放、智能推送领域。

Flink 核心组成及生态发展

Flink 核心组成

  • Deploy 层:

    Flink 支持本地运行、能在独立集群或者在被 YARN 或 Mesos 管理的集群上运行,也能部署在云上
  • Core 层:

    Flink 的核心是分布式流式数据引擎,意味着数据以一次一个事件的形式被处理
  • API 层:

    DataStream、DataSet、Table、SQL API
  • 扩展库:Flink 还包括了用于复杂事件处理、机器学习、图像处理和 Apache Storm 兼容的专用代码库

Flink 生态发展

  • 输入 Connectors(左侧部分)

    • 流处理方式:包含 Kafka、AWS kinesis(实时数据流服务)、RabbitMQ、NIFI(数据管道)、Twitter(API)

    • 批处理方式:包含 HDFS、HBase、Amazon S3(文件系统)、MapR FS(文件系统)、ALLuxio(基于内存的分布式文件系统)

  • 中间是 Flink 核心部分

  • 输出 Connectors(右侧部分)

    • 流处理方式:包含 Kafka、AWS kinesis(实时数据流服务)、RabbitMQ、NIFI(数据管道)、Cassandra(NoSQL 数据库)、ES、HDFS rolling file(滚动文件)

    • 批处理方式:包含 HBase、HDFS

流处理引擎的技术选型

计算框架对比图

产品 模型 API 保证次数 容错机制 状态管理 延时 吞吐量
storm Native(数据进入立即处理) 组合式 At-least-once Record ACKS Low Low
Trident mirco-batching(划分为小批处理) 组合式 Exectly-once Record ACKs 基于操作(每次操作由一个状态) Medium Medium
Spark streaming mirco-batching 声明式(提供封装后的高阶函数) Exectly-once RDD Checkpoint 基于 DStream Medium High
Flink Native 声明式 Exectly-once Checkpoint 基于操作 Low Hign

市面上的流处理引擎不止 Flink 一种,其他的比如 Storm、SparkStreaming、Trident 等,如何进行选型,给大家一些建议:

  • 流数据要进行状态管理,选择使用 Trident、Spark Streaming 或者 Flink
  • 消息传递需要保证 At-least-once(至少一次)或者 Exacly-once(仅一次)不能选择 Storm
  • 对于小型独立项目,有低延迟要求,可以选择使用 Storm,更简单
  • 如果项目已经引入了 Spark,实时处理需求可以满足的话,建议直接使用 Spark 中的 Spark Streaming
  • 消息投递要满足 Exactly-once(仅一次),数据量大、有高吞吐、低延迟要求,要进行状态管理或窗口统计,建议使用 Flink

Flink基础概念入门的更多相关文章

  1. Flink入门-第一篇:Flink基础概念以及竞品对比

    Flink入门-第一篇:Flink基础概念以及竞品对比 Flink介绍 截止2021年10月Flink最新的稳定版本已经发展到1.14.0 Flink起源于一个名为Stratosphere的研究项目主 ...

  2. Flink资料(1)-- Flink基础概念(Basic Concept)

    Flink基础概念 本文描述Flink的基础概念,翻译自https://ci.apache.org/projects/flink/flink-docs-release-1.0/concepts/con ...

  3. Flink基础:时间和水印

    ​ 往期推荐: Flink基础:入门介绍 Flink基础:DataStream API Flink基础:实时处理管道与ETL Flink深入浅出:资源管理 Flink深入浅出:部署模式 Flink深入 ...

  4. Serverless 基本概念入门

    从行业趋势看,Serverless 是云计算必经的一场革命 2019 年,Serverless 被 Gartner 称为最有潜力的云计算技术发展方向,并被赋予是必然性的发展趋势.Serverless ...

  5. Flink基础:实时处理管道与ETL

    ​ 往期推荐: Flink基础:入门介绍 Flink基础:DataStream API Flink深入浅出:资源管理 Flink深入浅出:部署模式 Flink深入浅出:内存模型 Flink深入浅出:J ...

  6. MongoDB入门系列(一):基础概念和安装

    概述 MongoDB是目前非常流行的一种非关系型数据库,作为入门系列的第一篇本篇文章主要介绍Mongdb的基础概念知识包括命名规则.数据类型.功能以及安装等. 环境: OS:Windows Versi ...

  7. 【UML】NO.70.EBook.9.UML.4.001-【PowerDesigner 16 从入门到精通】- 基础概念

    1.0.0 Summary Tittle:[UML]NO.70.EBook.9.UML.4.001-[PowerDesigner 16 从入门到精通]-  基础概念 Style:DesignPatte ...

  8. 快速入门系列--WCF--01基础概念

    转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...

  9. 一步步Cobol 400 上手自学入门教程01 - 基础概念

    先学习基础概念 1.COBOL字符:包含: User-defined words 用户定义字符 ŸSystem-names ŸReserved words 关键字 2.用户定义字符User-defin ...

随机推荐

  1. Lepton 无损压缩原理及性能分析

    作者:vivo 互联网数据库团队- Li Shihai 本文主要介绍无损压缩图片的概要流程和原理,以及Lepton无损压缩在前期调研中发现的问题和解决方案. 一.从一个游戏开始 1.1 游戏找茬 请拿 ...

  2. 攻防世界MISC—进阶区32—37

    32.normal_png 得到一张png,扔进kali中binwalk 和 pngcheck一下,发现CRC报错 尝试修改图片高度,我是把height的2改为4,得到flag 33.很普通的数独 得 ...

  3. 对 API 平台的再思考【eolink翻译】

    API 是推动现代企业数字化转型的基础.它不但连接了内部应用程序.合作伙伴和客户,同时也快速持续地向市场提供了各种新产品.版本和功能. 但当下还是以集中式的 API 交付为主.一个企业的对外 API ...

  4. 基于.NetCore开发博客项目 StarBlog - (16) 一些新功能 (监控/统计/配置/初始化)

    系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...

  5. 标准的Switch语句和穿透的Switch语句

    第三章 选择语句 3.1选择语句--Switch switch语句格式: ```java switch(表达式){ case 常量值1: 语句体1; break; case 常量值2: 语句体2; b ...

  6. git和提交分支

    实习到今天,已经开始做项目一段时间了,当然只是实习生的个人项目. 项目是导师发在git上面的,要求我们用git的PR提交 可是我不会啊...git仅仅是简单的个人提交总的项目到仓库里,什么新建分支,p ...

  7. spring boot实现不同生产环境下的文件配置

    配置不同生产环境 本文适用于开发环境下需要打包项目至生产环境,避免开发环境的配置文件泄露. 设置maven 作用:1. 手动调节运行时的不同环境 2. 打包时可以不会有其它环境的文件 注:每次换环境前 ...

  8. 巨变!a16z 关于新一代数据基础设施架构的深度洞察

    点击上方 蓝字关注我们 来源 | a16z 作者 | Matt Bornstein, Martin Casado,Jennifer Li 翻译 | 夕颜 作为未来最重要的基础设施之一,数据正在成为各行 ...

  9. 多环境配置 - SpringBoot 2.7.2 实战基础

    优雅哥 SpringBoot 2.7.2 实战基础 - 06 -多环境配置 在一个项目的开发过程中,通常伴随着多套环境:本地环境 local.开发环境 dev.集成测试环境 test.用户接受测试环境 ...

  10. One---python的六种数据类型及数据转换

    python的六种数据类型 python中数据类型分为不可变数据类型和可变数据类型 可变数据类型 可变数据类型包括:List(列表).Dictionary(字典).Set(集合) 不可变数据类型 不可 ...