Apache Flink学习笔记

简介

大数据的计算引擎分为4代

第一代:Hadoop承载的MapReduce。它将计算分为两个阶段,分别为Map和Reduce。对于上层应用来说,就要想办法去拆分算法,在上层应用实现多个Job串联,完成一个完整算法。例如:迭代计算

第二代:支持DAG框架的计算引擎,如Tez以及更上层的Oozie。

第三代:Spark为代表的计算引擎。特点是Job内部的DAG支持(不跨越Job),以及强调的实时计算。

第四代:Flink对流计算的支持,也可以支持Batch任务以及DAG的运算。

需要体会各个框架的差异,以及更适合的场景。并进行理解,没有哪一个框架可以完美的支持所有的场景,也就不可能有任何一个框架能够完全取代另一个。就像Spark没有取代Hadoop,Flink也不可能取代Spark。

Flink是一个针对流数据和批数据的分布式处理引擎。主要是由Java代码实现,目前还依靠开源社区的贡献发展。对Flink而言,所要处理的主要场景就是流数据。会把所有任务当做流来处理,也是最大的特点。

可以支持本地的快速迭代,以及一些环形的迭代任务。并且Flink可以定制化内存管理。就框架本身与应用场景来说,Flink更相似与Storm。

Client用来提交任务给JobManager

JobManager分发任务给TaskManager去执行,然后TaskManager会心跳的汇报任务状态。

Flink调度简述

在Flink集群中,计算资源被定义为Task Slot。每个TaskManager会拥有一个或多个Slots。JobManager会以Slot为单位调度Task。但这里的Task跟我们在Hadoop中的理解是有区别的。对Flink的JobManager来说,其调度的是一个Pipeline的Task,而不是一个点。

在Hadoop中Map和Reduce是两个独立调度的Task,并且都会去占用计算资源。对Flink来说MapReduce是一个Pipeline的Task,只占用一个计算资源。

在TaskManager中,根据其所拥有的Slot个数,同时会拥有多个Pipeline

因为Flink自身也需要简单的管理计算资源(Slot)。当Flink部署在Yarn上面之后,Flink并没有弱化资源管理。也就是说这时候的Flink再做一些Yarn该做的事情。

生态圈

Flink支持Scala和Java的API,Python在测试中。Flink通过Gelly支持了图操作,还有机器学习的FlinkML。Table是一种接口化的SQL支持,也就是API支持,而不是文本化的SQL解析和执行。

部署

Flink有三种部署模型,分别是Local,Standalone Cluster和Yarn Cluster。对于Local模式来说,JobManager和TaskManager会公用一个JVM来完成Workload。如果要验证简单的应用,Local模式是最方便的。实际应用中大多数使用Standalone或者Yarn Cluster

Standalone模式

搭建Standalone模式的Flink集群之前,需要先下载Flink安装包。

需要指定Master和Worker。Master机器会启动JobManager,Worker则会启动TaskManager。

需要修改conf目录中的master和slaves。在配置master文件时,需要指定JobManager的UI监听端口。

JobManager只需配置一个,Worker则需配置一个或多个。

在conf目录中找到文件flink-conf.yaml。文件中定义了Flink各个模块的基本属性,如RPC的端口。JobManager和TaskManager堆的大小等。一般只需要修改taskmanager.numberOfTaskSlots,拥有Slot个数。一般设置成CPU的core数。

Yarn Cluster模式

为了最大化利用集群资源,会在一个集群中同时运行多种类型的Workload。因此Flink也支持在Yarn上面运行。

#

Apache Flink学习笔记的更多相关文章

  1. Flink学习笔记-新一代Flink计算引擎

    说明:本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKh ...

  2. Flink学习笔记:Flink Runtime

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  3. Flink学习笔记:Flink开发环境搭建

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  4. Flink学习笔记:Flink API 通用基本概念

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  5. flink学习笔记:DataSream API

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  6. Flink学习笔记:Operators串烧

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  7. Flink学习笔记:Time的故事

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  8. Flink学习笔记:异步I/O访问外部数据

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  9. Flink学习笔记:Connectors概述

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

随机推荐

  1. Linux seq命令详解

    seq: squeue  是一个序列的缩写,主要用来输出序列化的东西 seq常见命令参数 用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 ...

  2. html端输入数据,利用qrcode.js生成打印二维码

    在前端页面中导入qrcode.js(下载)和jquery.js(下载) index.html <script> function print() { var textbox1 = $('i ...

  3. September 29th 2017 Week 39th Friday

    Human life is ephemera, which makes it precious. 生命短暂,所以珍贵. Don't waste time on praying to the God. ...

  4. November 15th 2016 Week 47th Tuesday

    Success is finding satisfaction in giving a little more than you take. 成功就是付出比得到多,仍然心满意足. Can I find ...

  5. lambda 形参:返回值 lambda 匿名函数 格式:

    lambda 匿名函数 格式: lambda 形参:返回值 e.g f = lambda n:n**2 print(f(10))

  6. 微信JSSDK与录音相关的坑

    微信JSSDK与录音相关的坑 最近一直在做微信JSSDK与录音相关的功能开发, 遇到了各种奇尺大坑, 时不时冷不丁地被坑一道, 让我时常想嘶吼: "微信JSSDK就是个大腊鸡!!!!!!!! ...

  7. Mysql数据库字符集问题

    修改mysql数据库的默认编码方式 修改my.ini文件 加上 default-character-set=gb2312 设定数据库字符集 alter database da_name default ...

  8. adb shell 运行时报错"adb server version (26) doesn't match this client (39); killing..."的解决方案

    adb即 Android Debug Bridge 是一个通用的命令行工具,可用于通过PC端对连接的Android模拟器设备或连接至电脑的真实物理设备进行命令行操作.目前,许多软件均会借助 adb 工 ...

  9. SuperMap/PlottingSymbol

    https://github.com/SuperMap/PlottingSymbol

  10. poj 2289 Jamie's Contact Groups【二分+最大流】【二分图多重匹配问题】

    题目链接:http://poj.org/problem?id=2289 Jamie's Contact Groups Time Limit: 7000MS   Memory Limit: 65536K ...