Flink基础概念入门
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基础概念入门的更多相关文章
- Flink入门-第一篇:Flink基础概念以及竞品对比
Flink入门-第一篇:Flink基础概念以及竞品对比 Flink介绍 截止2021年10月Flink最新的稳定版本已经发展到1.14.0 Flink起源于一个名为Stratosphere的研究项目主 ...
- Flink资料(1)-- Flink基础概念(Basic Concept)
Flink基础概念 本文描述Flink的基础概念,翻译自https://ci.apache.org/projects/flink/flink-docs-release-1.0/concepts/con ...
- Flink基础:时间和水印
往期推荐: Flink基础:入门介绍 Flink基础:DataStream API Flink基础:实时处理管道与ETL Flink深入浅出:资源管理 Flink深入浅出:部署模式 Flink深入 ...
- Serverless 基本概念入门
从行业趋势看,Serverless 是云计算必经的一场革命 2019 年,Serverless 被 Gartner 称为最有潜力的云计算技术发展方向,并被赋予是必然性的发展趋势.Serverless ...
- Flink基础:实时处理管道与ETL
往期推荐: Flink基础:入门介绍 Flink基础:DataStream API Flink深入浅出:资源管理 Flink深入浅出:部署模式 Flink深入浅出:内存模型 Flink深入浅出:J ...
- MongoDB入门系列(一):基础概念和安装
概述 MongoDB是目前非常流行的一种非关系型数据库,作为入门系列的第一篇本篇文章主要介绍Mongdb的基础概念知识包括命名规则.数据类型.功能以及安装等. 环境: OS:Windows Versi ...
- 【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 ...
- 快速入门系列--WCF--01基础概念
转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...
- 一步步Cobol 400 上手自学入门教程01 - 基础概念
先学习基础概念 1.COBOL字符:包含: User-defined words 用户定义字符 System-names Reserved words 关键字 2.用户定义字符User-defin ...
随机推荐
- win10设置Python程序定时运行(设置计划任务)
今天来设置一下定时执行Pycharm内的脚本: 这个要基于win10 的任务计划程序(设置 > 控制面板 > 系统和安全 > 管理工具 > 任务计划程序) 1. create ...
- 动画 ---Animejs 简单使用与源码解析
Anime是什么 Anime有什么用 Anime是作何做的 requireAnimationFrame() engine(){ // 处理让多个帧运动起来 play() step()} ani ...
- JavaWeb的技术体系
客户端和服务器端的交互 browser/ server(B/S)浏览器/服务器. client/server(C/S)应用/服务器.
- VMware 无法为处于开启或挂起状态的去你及或快照创建克隆
VMware 要克隆的时候出现 无法为处于开启或挂起状态的去你及或快照创建克隆 因为属于挂起或者运行中的不能克隆,因为会发生数据的变化
- 基于yarn1.x的monorepo实践分享
背景介绍 几天前,晓东船长微信问我,你们团队有没有monorepo的实践,我很遗憾的告诉他没有,但这在我心里播下了一颗探索的种子,刚好最近老总要搞内蒙古的新项目,我和另一个前端兄弟组成双枪敢死队进行保 ...
- 【FAQ】应用内支付服务无法拉起支付页面常见原因分析和解决方法
华为应用内支付服务(In-App Purchases)通过简便的接入流程为用户提供良好的应用内支付体验,然而在实际接入过程中,有一些开发者反馈测试时会无法正常拉起支付页面,下文将详细分析问题出现的5种 ...
- HCNP Routing&Switching之DHCP中继
前文我们聊了下BFD相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16487842.html:今天来聊一聊DHCP中继相关话题: DHCP的作用 DH ...
- 表单中设置了 `keyup.enter.native` 的按键事件,但是回车后没有执行查询,反而会刷新页面
场景 添加属性对话框中,input输入后点击 enter,不会执行绑定的 handleDialogQuery 事件,反而会刷新整个页面: 如果不点击 enter,点击搜索按钮,则是正常的. 又测试:在 ...
- Shell 编程基础语法
# shell脚本 # 如何运行shell脚本 sh test.sh source test.sh ./test.sh # 需要有执行权限 # source和其他两种的区别是.source不会开新进程 ...
- 一文搞懂什么是kubernetes Service
1.什么是Service? 在kubernets中,Pod是应用程序的载体,Pod你可以想象成就是容器,为动态的一组Pod提供一个固定的访问入口,它是以一种叫ClusterIP地址来进行标识,而Clu ...