Apache Flink学习笔记

Apache Flink学习笔记

简介

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

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

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

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

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

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

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

能够支持本地的快速迭代,以及一些环形的迭代任务。而且Flink能够定制化内存管理。就框架自己与应用场景来讲,Flink更类似与Storm。大数据

Client用来提交任务给JobManagerorm

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

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上面运行。

 

 

 

 

 

 

 

#

相关文章
相关标签/搜索