Flink之一 Flink基本原理介绍

Flink介绍:

很多人可能都是在 2015 年才听到 Flink 这个词,其实早在 2008 年,Flink 的前身已经是柏林理工大学一个研究性项目, 在 2014 被 Apache 孵化器所接受,然后迅速地成为了 ASF(Apache Software Foundation)的顶级项目之一。Flink 的最新版本目前已经更新到了 0.10.0 了,在很多人感慨 Spark 的快速发展的同时,或许我们也该为 Flink 的发展速度点个赞。

Flink 是一个针对流数据和批数据的分布式处理引擎。它主要是由 Java 代码实现。目前主要还是依靠开源社区的贡献而发展。对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。再换句话说,Flink 会把所有任务当成流来处理,这也是其最大的特点。Flink 可以支持本地的快速迭代,以及一些环形的迭代任务。

Flink的特性:

Flink是个分布式流处理开源框架:

1: 即使数据源是无序的或者晚到达的数据,也能保持结果准确性

2:有状态并且容错,可以无缝的从失败中恢复,并可以保持exactly-once

3:大规模分布式

Flink可以确保仅一次语义状态计算;Flink有状态意味着,程序可以保持已经处理过的数据;

Flink支持流处理和窗口事件时间语义,Flink支持灵活的基于时间窗口,计数,或会话数据驱动的窗户;

Flink容错是轻量级和在同一时间允许系统维持高吞吐率和提供仅一次的一致性保证,Flink从失败中恢复,零数据丢失;

Flink能够高吞吐量和低延迟;

Flink保存点提供版本控制机制,从而能够更新应用程序或再加工历史数据没有丢失并在最小的停机时间。

Flink相关概念:

Parallel Dataflows

Flink中把整个流处理过程叫做Stream Dataflow,从数据源提取数据的操作叫做Source Operator,中间的map(),聚合、统计等操作可以统称为Tranformation Operators,最后结果数据的流出被称为sink operators,具体可以见下方图示:

Flink的程序内在是并行和分布式的,数据流可以被分区成stream partitions,operators被划分为operator subtasks;这些subtasks在不同的机器或容器中分不同的线程独立运行;operator subtasks的数量在具体的operator就是并行计算数,程序不同的operator阶段可能有不同的并行数;如下图所示,source operator的并行数为2,但最后的sink operator为1;

数据在两个operator之间传递的时候有两种模式:

一:one-to-one 模式:两个operator用此模式传递的时候,会保持数据的分区数和数据的排序;

二:Redistributing 模式:这种模式会改变数据的分区数;每个一个operator subtask会根据选择transformation把数据发送到不同的目标subtasks,比如keyBy()会通过hashcode重新分区,broadcast()和rebalance()方法会随机重新分区;

Tasks & Operator Chains

对于分布式计算,Flink封装operator subtasks 链化为tasks;每个task由一个线程执行;把tasks链化有助于优化,它减少了开销线程和线程之间的交接和缓冲;增加了吞吐量和减少延迟时间;链化的作用可以见下图:在没有链化之前,source operator和map operator 是两个线程运行的两个task,也就是说下面的dataflow 最初应该有7个subtasks;

但经过优化链化后,source和map合并为一个task,有一个线程执行,这样优化可以减少source operator 和map operator两个线程之间的交接和缓存开销;链化后只有5个task;对于链化这个优化,笔者也有疑问:是否是operator之间数据传递模式相同才能链化?

Distributed Execution

Flink runTime 包括两种类型进程(类似于第一代hadoop架构):

master进程;也叫作JobManager,协调各个节点工作;master调度task,协调checkpoints和容灾;机器群中至少有一个master,高可用机器中可以有多个master,但要保证一个是leader,其他是standby;

work 类型进程;也叫taskManagers;具体执行tasks;

client 虽然不是运行和程序的一部分,但是客户端常被用作准备和发送dataflow给master;

flink作业提交架构流程可见下图:

Workers, Slots, Resources

每一个TaskManager是个jvm,每个jvm中可以执行一个或者多个subtasks,jvm中taskSlot的数量决定了接受多少个task;每个tasksolt都有固定的资源,比如TaskManager有三个task solts,taskManager把平均把管理的内存分配到三个task slot中,这样solt中的task不会跟其他的job竞争资源;默认上Flink许可subtasks去分享同一个是slots;但要保证这些subtask是不同的task,并且来自相同的Job;极端情况下,一个slot中执行整个job的task;solt分享有两个重要的好处:

1:flink 机群中可以用到的最高的并行计算数,就是taskSolt的数量

2:可以容易的达到资源利用;

solt 资源共享是可以在api中设置种控制;resource group机制可以设置哪些tasks 共享slots;

Configuring TaskManager processing slots

slot的数量通常设置是成正比的每个TaskManager可用CPU核的数量;一般建议,可用CPU核的数量正好是taskmanager.numberOfTaskSlots的数量,当开始Flink应用程序中,用户可以提供slot的数量,可以在命令中加入-p(for paralleism)参数指定;另外也可以在API中设置;例如taskManager有三台机器,并在flink-config.yaml中设置 taskmanager.numberOfTaskSlots:3(建议是cpu的核数);这样每台机器有3个slot,机器中共有9个processing taskslots,见下图所示:

当设置parallelism.default:2 或者启动的时候指定-p参数-./bin/flink -p2 或者代码中设置env.setParallelism(2),那边task分配如下图所示:

当然也可以把某个operator的并行度另外设置,比如把sink的并行度设置为1,那多task分配就会如下图:

Flink从入门到实践学习路线展示

第一章:初识Flink

1.1课程目录

1.2Flink概述

1.3flink layered api

1.4Flink运行多样化

1.5业界流处理框架对比

1.6flink use cases

1.7flink发展趋势

1.8如何以正确的姿势来学习flink

第二章:快速上手开发第一个flink程序

2.1开发环境准备之jdk安装

2.2开发环境准备之maven安装

2.3开发环境准备之idea安装

2.4flink批处理应用开发之需求描述

2.5开发过程中依赖的注意事项

第三章:编程模型及核心概念

3.1核心概念概述

3.2dataset和datastream

3.3flink编程模型

3.4延迟执行

3.5flink支持的数据类型

第四章:DataSet API编程

4.1dataset api开发概述

4.2flink综合java和scala开发的项目构建creenflow

4.3data source宏观概述

4.4从集合创建dataset之scala实现

4.5基于flink的分布式缓存功能的java实现

第五章:DataStream API编程

5.1datastream api编程概述

5.2从socket创建datastream之java实现

5.3从socket创建datastream之scala实现

5.4自定义sink之需求描述及表创建-

5.5datastream api开发小结

第六章:Flink Table API & SQL编程

6.1什么是flink关系型

6.2table api&sql概述

6.3使用scala完成table api&sql功能的开发

6.4使用java完成table api&sql功能的开发

6.5table api&sql其他功能介绍

第七章:Flink中的Time及Windows的使用

7.1processing time详解

7.2event time详解

7.3ingestion time详解-

7.4如何在flink中指定time的类型

7.5flink watermark概述

第八章:Flink Connectors

8.1connectors概述

8.2hdfs connector的使用

8.3kafka connector概述

8.4ootb环境的使用

8.5flink整合kafka的checkpoint常用参数设置梳理

第九章:Flink部署及作业提交

9.1flink部署准备及源码编译-

9.2单机模式部署及代码提交测试

9.3flink standalone模式部署及参数详解

9.4如何查找需要配置的flink参数及ui对应关系介绍

9.5flink scala shell的使用

第十章:Flink监控及调优

10.1historyserver概述及配置-

10.2historyserver的使用

10.3monitoring rest ap

10.4flink metric

10.5flink常用优化策略

第十一章:基于Flink的互联网直播平台日志分析项目实战

11.1项目功能需求描述

11.2mock数据之kafka生产者代码主流程开发

11.3使用flink消费kafka生产的数据

11.4自定义mysql数据源读

11.5完成两个流关联的数据清洗功能

Flink项目实践视频

Flink视频教程笔记

基于Flink流处理的动态实时电商实时分析系统视频


上面是小编给大家整理的IT从业20年大佬讲解Flink从入门到实践的文档与视频,(这些资料往期文章有包含的,但是需要的人很多,担心有很多人没有拿到,所以又来跟大家分享一次)小编都为大家准备好了,如果大家伙需要的话,可以转发此文关注小编,+wx:衣五九三衣领巴六三巴六(数字协议)来免费获取吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342