Flink部署、使用、原理简介
通过安装包方式部署
下载地址
https://archive.apache.org/dist/flink/flink-1.7.2/flink-1.7.2-bin-hadoop27-scala_2.11.tgz
下载之后 解压
启动flink
访问flink web ui
http://localhost:8081
运行flink demo程序
启动7777端口服务
nc -lk 7777
运行flink wordcount streamjar包传入 7777端口
bin/flink run examples/streaming/SocketWindowWordCount.jar --port 7777
通过web ui查看启动情况
可以看到该任务进行运行
在7777的服务里面输入内容
查看日志
tail -f flink*.out
关闭7777服务
可以看到该任务已经结束了
总结以上流程
任务执行细节详见
流处理开源框架Flink原理简介和使用
简单使用了flink之后,接下来咱刨析下flink运行的原理
原理介绍
Flink运行组件
Flink是通过Java和Scala实现的 所以所有组件都运行在Java虚拟机上
作业管理器(JobManager)
控制一个应用程序执行的主进程 每个应用程序都会被一个不同的JobManager所控制执行
JobManager会先接受到要执行的应用程序 这个应用程序会包括作业图(JobGraph)、逻辑数据流图(logical dataflow graph)和打包了所有类、库和其他资源的jar包
JobManager会把JobGraph转换成一个物理层面的数据流图 这个图叫做执行图(ExecutionGraph) 包含了所有可以并发执行的任务
JobManager 会向资源器 (ResourceManager)请求执行任务必要的资源 也就是任务管理器(TaskManager)上的插槽(slot) 一旦它获取到了足够的资源 就会将执行图分发到真正运行它们的TaskManager上。而在执行的过程中 JobManager会负责所有需要中央协调的操作 比如检查点(CheckPoints)的协调
任务管理器(TaskManager)
Flink中的工作进程 通过在Flink中会有多个TaskManager运行 每一个TaskManager会包含一定数量的slot插槽。插槽的数量限制了TaskManager能够执行的任务数量
在执行过程中 一个TaskManager可以和其他运行在同一应用程序的TaskManager交换数据
资源管理器(ResouceManager)
主要负责管理任务管理器(TaskManager)的插槽(slot) TaskManager插槽是Flink中定义的处理资源单元
Flink为不同的环境和不同的资源管理工具提供了不同的资源管理器 比如 Yarn、Mesos、K8s、standalone部署
当JobManager申请插槽资源时 ResourceManager会将有空闲插槽的TaskManager分配给JobManager 如果ResourceManager没有足够的插槽来满足JobManager请求 还可以向资源提供平台发起会话 以提供启动TaskManager进程的容器 。ResourceManager还负责终止空闲的TaskManager 释放计算资源
分发器(Dispatcher)
可以跨作业运行 它为应用提交提供了Rest接口
当一个任务被提交时 分发器就会启动并将应用移交给一个JobManager
Dispatcher也会启动一个Web UI 用来方便展示和监控作业执行信息
Dispatcher在架构中可能不是必须的 取决于应用提交运行的方式
任务提交流程
如果部署的集群环境不同(例如 YARN,Mesos,Kubernetes,standalone 等),其中一些步骤可以被省略,或是有些组件会运行在同一个 JVM 进程中
将 Flink 集群部署到 YARN
Flink 任务提交后
Client 向 HDFS 上传 Flink 的 Jar 包和配置
之后向 Yarn ResourceManager 提交任务
ResourceManager 分配 Container 资源并通知对应的 NodeManager 启动 ApplicationMaster
ApplicationMaster 启动后加载 Flink 的 Jar 包和配置构建环境
然后启动 JobManager
之后 ApplicationMaster 向 ResourceManager 申 请 资 源 启 动 TaskManager
ResourceManager 分 配 Container 资 源 后
由 ApplicationMaster 通 知 资 源 所 在 节 点 的 NodeManager 启 动 TaskManager
NodeManager 加载 Flink 的 Jar 包和配置构建环境并启动 TaskManager
TaskManager 启动后向 JobManager 发送心跳包,并等待 JobManager 向其分配任务
Flink部署、使用、原理简介相关推荐
- Maxwell简介、部署、原理和使用介绍
Maxwell简介.部署.原理和使用介绍 1.Maxwell概述简介 1-1.Maxwell简介 Maxwell是由美国Zendesk公司开源,使用Java编写的MySQL变更数据抓取软件.他会实 ...
- ElasticSearch简介及ElasticSearch部署、原理和使用介绍
ElasticSearch简介及ElasticSearch部署.原理和使用介绍 第一章:elasticsearch简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式 ...
- Elasticsearch7从入门到精通(简介、部署、原理、开发、ELK)
Elasticsearch7从入门到精通(简介.部署.原理.开发.ELK) 第1章.Elasticsearch简介 1-1.Elasticsearch介绍 Elasticsearch官方网站:http ...
- Flume简介及Flume部署、原理和使用介绍
Flume简介及Flume部署.原理和使用介绍 Flume概述 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统.Flume基于流式架构,灵活简单. ...
- canal简介及canal部署、原理和使用介绍
阿里canal简介及canal部署.原理和使用介绍 canal入门 什么是canal 阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求, ...
- azkaban简介及azkaban部署、原理和使用介绍
azkaban简介及azkaban部署.原理和使用介绍 azkaban简介 Azkaban是一套简单的任务调度服务,整体包括三部分webserver.dbserver.executorserver ...
- Pulsar简介及Pulsar部署、原理和使用介绍
Pulsar简介及Pulsar部署.原理和使用介绍 Pulsar简介 诞生背景 Apache Pulsar 是一个企业级的分布式消息系统,最初由 Yahoo 开发,在 2016 年开源,并于2018年 ...
- CDH简介及CDH部署、原理和使用介绍( 版本6.3.1 )
CDH简介及CDH部署.原理和使用介绍( 版本6.3.1 ) 第一章:CDH简介 CDH概念 CDH是Cloudera的100%开源平台发行版,包括Apache Hadoop,专为满足企业需求而构 ...
- TIDB简介及TIDB部署、原理和使用介绍
TiDB简介及TiDB部署.原理和使用介绍 从MySQL架构到TiDB 数据库分类 介绍TiDB数据库之前,先引入使用场景.如今的数据库种类繁多,RDBMS(关系型数据库).NoSQL(Not O ...
最新文章
- SCWS 添加自定义词典
- 为什么不推荐正沿+lockup+负沿的scan chain?
- pycharm提示 Method 'xxx' may be 'static'(类方法与静态方法)
- Ubuntu MTK/RK/AW 编译服务器
- 深度思考的能力,决定了你能走多远
- 【objectMapper实体转换异常】 com.fasterxml.jackson.databind.exc.MismatchedInputException
- 找不到腾讯云MFA动态码了,无法登录腾讯云的解决办法
- 高效能人士的七个习惯_有史以来最具影响力管理类书籍 高效能人士的七个习惯 让你成为一名成功高效的人士...
- python filter函数_第九篇:Python中lambda、filter和map函数
- html5 canvas+js贪吃蛇网页小游戏代码
- R语言安装包失败方案及DataExplorer包安装方法实践
- 系统服务器iis如何启动不了,win7系统iis启动不了的详细解决步骤
- 计算机图桌面打印出来,桌面图片打印设置方法
- 抖音壁纸小程序搭建教程
- 银行Ⅰ类、Ⅱ类、III类账户
- 神舟笔记本电脑降低声音
- 3分钟详解服务器入网带宽出网带宽和入流量出流量
- C\C++代码优化的一些建议
- Android系统启动
- 阿里aca认证证书含金量怎么样,认证需要具备哪些能力
热门文章
- centos环境访问php显示源码,CentOS 6.8 搭建LNAMP环境(五)- PHP7源码安装Redis和Redis拓展...
- js正则匹配闭合标签_我从Vue源码中学到的一些JS编程技巧
- JAVA String类特点
- tomcat 转发 http接口的绝对路径文件
- TTF 自己文件编辑与制作
- [转] React风格的企业前端技术
- javascript浮点数学习总结之0.1+0.2
- HTTP之Cookie
- SpringMVC(3):DispatcherServlet详解
- Scala中的match(模式匹配)