通过安装包方式部署

下载地址

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部署、使用、原理简介相关推荐

  1. Maxwell简介、部署、原理和使用介绍

    Maxwell简介.部署.原理和使用介绍 1.Maxwell概述简介 1-1.Maxwell简介 ​ Maxwell是由美国Zendesk公司开源,使用Java编写的MySQL变更数据抓取软件.他会实 ...

  2. ElasticSearch简介及ElasticSearch部署、原理和使用介绍

    ElasticSearch简介及ElasticSearch部署.原理和使用介绍 第一章:elasticsearch简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式 ...

  3. Elasticsearch7从入门到精通(简介、部署、原理、开发、ELK)

    Elasticsearch7从入门到精通(简介.部署.原理.开发.ELK) 第1章.Elasticsearch简介 1-1.Elasticsearch介绍 Elasticsearch官方网站:http ...

  4. Flume简介及Flume部署、原理和使用介绍

    Flume简介及Flume部署.原理和使用介绍 Flume概述 ​ Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统.Flume基于流式架构,灵活简单. ...

  5. canal简介及canal部署、原理和使用介绍

    阿里canal简介及canal部署.原理和使用介绍 canal入门 什么是canal 阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求, ...

  6. azkaban简介及azkaban部署、原理和使用介绍

    azkaban简介及azkaban部署.原理和使用介绍 azkaban简介 ​ Azkaban是一套简单的任务调度服务,整体包括三部分webserver.dbserver.executorserver ...

  7. Pulsar简介及Pulsar部署、原理和使用介绍

    Pulsar简介及Pulsar部署.原理和使用介绍 Pulsar简介 诞生背景 Apache Pulsar 是一个企业级的分布式消息系统,最初由 Yahoo 开发,在 2016 年开源,并于2018年 ...

  8. CDH简介及CDH部署、原理和使用介绍( 版本6.3.1 )

    CDH简介及CDH部署.原理和使用介绍( 版本6.3.1 ) 第一章:CDH简介 CDH概念 ​ CDH是Cloudera的100%开源平台发行版,包括Apache Hadoop,专为满足企业需求而构 ...

  9. TIDB简介及TIDB部署、原理和使用介绍

    TiDB简介及TiDB部署.原理和使用介绍 从MySQL架构到TiDB 数据库分类 ​ 介绍TiDB数据库之前,先引入使用场景.如今的数据库种类繁多,RDBMS(关系型数据库).NoSQL(Not O ...

最新文章

  1. SCWS 添加自定义词典
  2. 为什么不推荐正沿+lockup+负沿的scan chain?
  3. pycharm提示 Method 'xxx' may be 'static'(类方法与静态方法)
  4. Ubuntu MTK/RK/AW 编译服务器
  5. 深度思考的能力,决定了你能走多远
  6. 【objectMapper实体转换异常】 com.fasterxml.jackson.databind.exc.MismatchedInputException
  7. 找不到腾讯云MFA动态码了,无法登录腾讯云的解决办法
  8. 高效能人士的七个习惯_有史以来最具影响力管理类书籍 高效能人士的七个习惯 让你成为一名成功高效的人士...
  9. python filter函数_第九篇:Python中lambda、filter和map函数
  10. html5 canvas+js贪吃蛇网页小游戏代码
  11. R语言安装包失败方案及DataExplorer包安装方法实践
  12. 系统服务器iis如何启动不了,win7系统iis启动不了的详细解决步骤
  13. 计算机图桌面打印出来,桌面图片打印设置方法
  14. 抖音壁纸小程序搭建教程
  15. 银行Ⅰ类、Ⅱ类、III类账户
  16. 神舟笔记本电脑降低声音
  17. 3分钟详解服务器入网带宽出网带宽和入流量出流量
  18. C\C++代码优化的一些建议
  19. Android系统启动
  20. 阿里aca认证证书含金量怎么样,认证需要具备哪些能力

热门文章

  1. centos环境访问php显示源码,CentOS 6.8 搭建LNAMP环境(五)- PHP7源码安装Redis和Redis拓展...
  2. js正则匹配闭合标签_我从Vue源码中学到的一些JS编程技巧
  3. JAVA String类特点
  4. tomcat 转发 http接口的绝对路径文件
  5. TTF 自己文件编辑与制作
  6. [转] React风格的企业前端技术
  7. javascript浮点数学习总结之0.1+0.2
  8. HTTP之Cookie
  9. SpringMVC(3):DispatcherServlet详解
  10. Scala中的match(模式匹配)