【Flink】使用之前,先简单了解一下Flink吧!
Flink简单介绍
概述
在使用Flink之前,我们需要大概知道Flink是什么?
首先,从Flink的官网可以有一个简单的了解:Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。
这里了解过大数据的可以看到几个熟悉的词,分布式处理、内存计算,首先分布式处理是大数据集群最常见的,也是必备的处理方式,其次,内存计算也不难让人想到现在很火的Spark,至少通过这个词肯定可以联想到Flink处理任务的速度一定也很快。
那么,什么是无边界和有边界数据流呢?
无边界数据流和有边界数据流
- 无边界数据流 | Unbounded Stream
官方的定义:有定义流的开始,但没有定义流的结束。它们会无休止地产生数据。无界流的数据必须持续处理,即数据被摄取后需要立刻处理。我们不能等到所有数据都到达再处理,因为输入是无限的,在任何时候输入都不会完成。处理无界数据通常要求以特定顺序摄取事件,例如事件发生的顺序,以便能够推断结果的完整性。 - 有边界数据流 | Bounded Stream
官方的定义:有定义流的开始,也有定义流的结束。有界流可以在摄取所有数据后再进行计算。有界流所有数据可以被排序,所以并不需要有序摄取。有界流处理通常被称为批处理。
技术栈核心组成
从上图可以看出,底层是Flink的集群部署选择,不仅可以运行在包括 YARN、 Mesos、Kubernetes 在内的多种资源管理框架上,还支持在裸机集群上独立部署。在启用高可用选项的情况下,它不存在单点失效问题。
核心计算架构是Runtime执行引擎,它是一个分布式系统,能够接 受数据流程序并在一台或多台机器上以容错方式执行。
DataStream API用于流处理,DataSet API用于批处理。
- 流处理特性
1.支持高吞吐、低延迟、高性能的流处理
2.支持带有事件时间的窗口(Window)操作
3.支持有状态计算的 Exactly-once 语义
4.支持高度灵活的窗口(Window)操作,支持基于 time、count、session,以及 data-driven 的窗口操作
5.支持具有 Backpressure 功能的持续流模型
6.支持基于轻量级分布式快照(Snapshot)实现的容错
7.一个运行时同时支持 Batch on Streaming 处理和 Streaming 处理
8.Flink 在 JVM 内部实现了自己的内存管理
9.支持迭代计算
10.支持程序自动优化:避免特定情况下 Shuffle、排序等昂贵操作,中间结果有必要进行缓存 - 批处理特性
1.有界、持久、大量
2.适合需要访问全套记录才能完成的计算工作,一般用于离线统计
Flink和Spark有一点最明显的不同,就是 Spark应对批处理和流处理采用了不同的技术框架,批处理由SparkSQL实现,流处理由Spark Streaming实现。Flink则可以做到同时实现批处理和流处理, 它的解决办法就是将批处理(即处理有限的静态数据)视作是一种特殊的流处理。
Flink支持的拓展库涉及机器学习(FlinkML)、复杂事件处理(CEP)、图计算(Gelly) 和分别针对流处理与批处理的 Table API。
架构体系
重要角色
- JobManager
可以认为是Spark中的Master,用于调度task,协调检查点,协调失败时的恢复等。至少要存在一个Master处理器,高可用模式下会存在多个Master,一个是leader,剩下的是standby。 - TaskManager
可以认为是Spark中的Worker,用于执行一个dataflow中的task或者特殊的subtask、数据缓冲和data stream的交换。至少要存在一个Worker处理器。
Flink与Spark架构概念转换
【Flink】使用之前,先简单了解一下Flink吧!的更多相关文章
- Flink on Yarn三部曲之三:提交Flink任务
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 「Flink」使用Java lambda表达式实现Flink WordCount
本篇我们将使用Java语言来实现Flink的单词统计. 代码开发 环境准备 导入Flink 1.9 pom依赖 <dependencies> <dependency> < ...
- Flink数据流图的生成----简单执行计划的生成
Flink的数据流图的生成主要分为简单执行计划-->StreamGraph的生成-->JobGraph的生成-->ExecutionGraph的生成-->物理执行图.其中前三个 ...
- Flink源码阅读(一)——Flink on Yarn的Per-job模式源码简析
一.前言 个人感觉学习Flink其实最不应该错过的博文是Flink社区的博文系列,里面的文章是不会让人失望的.强烈安利:https://ververica.cn/developers-resource ...
- Flink学习之路(一)Flink简介
一.什么是Flink? Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能. 二.Flink特点 1.现有的开源计算方案,会把流处 ...
- Flink整合面向用户的数据流SDKs/API(Flink关于弃用Dataset API的论述)
动机 Flink提供了三种主要的sdk/API来编写程序:Table API/SQL.DataStream API和DataSet API.我们认为这个API太多了,建议弃用DataSet API,而 ...
- Flink应用案例:How Trackunit leverages Flink to process real-time data from industrial IoT devices
January 22, 2019Use Cases, Apache Flink Lasse Nedergaard Recently there has been significant dis ...
- Flink源码学习笔记(3)了解Flink HA功能的实现
使用Flink HA功能维护JobManager中组件的生命周期,可以有效的避免因为JobManager 进程失败导致任务无法恢复的情况. 接下来分享下 Flink HA功能的实现 大纲 基于Zook ...
- flink入门:01 构建简单运行程序
1. mac平台安装flink(默认最新版) brew install apache-flink 安装结果: Version 1.7.1, commit ID: 89eafb4 2. jdk版本,我尝 ...
随机推荐
- Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(一)之Introduction
Learn Java I found out that I and other speakers tended to give the typical audience too many topics ...
- L19深度学习中的优化问题和凸性介绍
优化与深度学习 优化与估计 尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目标并不相同. 优化方法目标:训练集损失函数值 深度学习目标:测试集损失函数值(泛化性) ...
- [XML] XML格式【有道翻译】API 的数据转化输出
<?php header("content-type:text/html;charset=utf-8"); //echo "飞飞仔超级智障"; $cont ...
- 使用binlog2sql工具来恢复数据库
(一)binlog2sql介绍 binlog2sql是国内MySQL大佬danfengcao开发,许多MySQL爱好者参与改进的一款MySQL binlog解析软件.根据不同选项,可以得到原始SQL. ...
- df卡住的解决办法
在使用网络存储时,如果网络存储出问题.比如使用NFS,网络中断,df -h会卡住 情形一 ctrl+c是能取消中断的,这种情况算是比较幸运.使用mount查看有哪些挂载点,将其卸载即可. 情形二 ct ...
- python学习笔记(六)---文件操作与异常处理机制
文件读取 读取整个文件 要读取文件,需要一个包含几行文本的文件.下面首先来创建一个文件,它包含精确到小数点后30位的圆周率值,且在小数点后每10位处都换行: pi_digits.txt 3.14159 ...
- 网站防止sql注入
防止sql注入代码:(1)修改php.ini magic_quotes_gpc=Off,打开开关,不常用: (2)获取到参数后,调用$username = addslashes($username); ...
- Ubuntu 设置 log 级别
Linux环境下使用rsyslog管理日志 rsyslog linux运维 linux 22.7k 次阅读 · 读完需要 22 分钟 在 Linux 系统中,日志文件记录了系统中包括内核. ...
- java基础问题 (待解决)
(1)接口与抽象类的区别? (2)Java中的异常有哪几类?分别怎么使用? (3)常用的集合类有哪些?比如List如何排序? (4)ArrayList和LinkedList内部的实现大致是怎样的?他们 ...
- IDC:企业需求疲软 第三季度全球服务器市场收入下滑7%
根据IDC全球服务器季度追踪报告,2016年第三季度全球服务器市场同比减少7%至125亿美元.整个服务器市场的增长最近有所放缓,部分原因是超大规模数据中心增长放缓,以及受到高端服务器销售下滑的拖累.此 ...