Apache Flink 零基础入门(二):开发环境搭建和应用的配置、部署及运行

news2024/9/24 15:28:42

关联比赛:  Apache Flink极客挑战赛——Flink TPC-DS性能优化

作者:沙晟阳

本文是根据 Apache Flink 系列直播课程整理而成,由阿里巴巴高级开发工程师沙晟阳分享,主要面向于初次接触 Flink、或者对 Flink 有了解但是没有实际操作过的同学。希望帮助大家更顺利地上手使用 Flink,并着手相关开发调试工作。

主要内容:

  • Flink 开发环境的部署和配置

  • 运行 Flink 应用

  • 单机 Standalone 模式

  • 多机 Standalone 模式

  • Yarn 集群模式

一. Flink 开发环境部署和配置

Flink 是一个以 Java 及 Scala 作为开发语言的开源大数据项目,代码开源在 GitHub 上,并使用 Maven 来编译和构建项目。对于大部分使用 Flink 的同学来说,Java、Maven 和 Git 这三个工具是必不可少的,另外一个强大的 IDE 有助于我们更快的阅读代码、开发新功能以及修复 Bug。因为篇幅所限,我们不会详述每个工具的安装细节,但会给出必要的安装建议。

关于开发测试环境,Mac OS、Linux 系统或者 Windows 都可以。如果使用的是 Windows 10 系统,建议使用 Windows 10 系统的 Linux 子系统来编译和运行。

建议选用社区已发布的稳定分支,比如 Release-1.6 或者 Release-1.7。

1. 编译 Flink 代码

在我们配置好之前的几个工具后,编译 Flink 就非常简单了,执行如下命令即可:

 

mvn clean install -DskipTests# 或者mvn clean package -DskipTests

常用编译参数:

 

Dfast 主要是忽略QA plugins和JavaDocs的编译
Dhadoop.version=2.6.1 指定hadoop版本
settings=${maven_file_path} 显式指定maven settings.xml配置文件

当成功编译完成后,能在当前 Flink 代码目录下的 flink-dist/target/子目录 中看到如下文件(不同的 Flink 代码分支编译出的版本号不同,这里的版本号是 Flink 1.5.1):

其中有三个文件可以留意一下:

版本注释flink-1.5.1.tar.gzBinary 的压缩包flink-1.5.1-bin/flink-1.5.1解压后的 Flink binary 目录flink-dist_2.11-1.5.1.jar包含 Flink 核心功能的 jar 包

注意: 国内用户在编译时可能遇到编译失败“Build Failure”(且有 MapR 相关报错),一般都和 MapR 相关依赖的下载失败有关,即使使用了推荐的 settings.xml 配置(其中 Aliyun Maven 源专门为 MapR 相关依赖做了代理),还是可能出现下载失败的情况。问题主要和 MapR 的 Jar 包比较大有关。遇到这些问题时,重试即可。在重试之前,要先根据失败信息删除 Maven local repository 中对应的目录,否则需要等待 Maven 下载的超时时间才能再次出发下载依赖到本地。

2. 开发环境准备

推荐使用 IntelliJ IDEA IDE 作为 Flink 的 IDE 工具。官方不建议使用 Eclipse IDE,主要原因是 Eclipse 的 Scala IDE 和 Flink 用 Scala 的不兼容。

如果你需要做一些 Flink 代码的开发工作,则需要根据 Flink 代码的 tools/maven/目录 下的配置文件来配置 Checkstyle ,因为 Flink 在编译时会强制代码风格的检查,如果代码风格不符合规范,可能会直接编译失败。

二、运行 Flink 应用

1. 基本概念

运行 Flink 应用其实非常简单,但是在运行 Flink 应用之前,还是有必要了解 Flink 运行时的各个组件,因为这涉及到 Flink 应用的配置问题。图 1 所示,这是用户用 DataStream API 写的一个数据处理程序。可以看到,在一个 DAG 图中不能被 Chain 在一起的 Operator 会被分隔到不同的 Task 中,也就是说 Task 是 Flink 中资源调度的最小单位。

图 2 所示,Flink 实际运行时包括两类进程:

  • JobManager(又称为 JobMaster):协调 Task 的分布式执行,包括调度 Task、协调创 Checkpoint 以及当 Job failover 时协调各个 Task 从 Checkpoint 恢复等。

  • TaskManager(又称为 Worker):执行 Dataflow 中的 Tasks,包括内存 Buffer 的分配、Data Stream 的传递等。

图 3 所示,Task Slot 是一个 TaskManager 中的最小资源分配单位,一个 TaskManager 中有多少个 Task Slot 就意味着能支持多少并发的 Task 处理。需要注意的是,一个 Task Slot 中可以执行多个 Operator,一般这些 Operator 是能被 Chain 在一起处理的。

2. 运行环境准备

  • 准备 Flink binary

  • 直接从 Flink 官网上下载 Flink binary 的压缩包

  • 或者从 Flink 源码编译而来

  • 安装 Java,并配置 JAVA_HOME 环境变量

3. 单机 Standalone 的方式运行 Flink

(1)基本的启动流程

最简单的运行 Flink 应用的方法就是以单机 Standalone 的方式运行。

启动集群:

 

./bin/start-cluster.sh

打开 http://127.0.0.1:8081/ 就能看到 Flink 的 Web 界面。尝试提交 Word Count 任务:

 

./bin/flink run examples/streaming/WordCount.jar

大家可以自行探索 Web 界面中展示的信息,比如,我们可以看看 TaskManager 的 stdout 日志,就可以看到 Word Count 的计算结果。

我们还可以尝试通过“–input”参数指定我们自己的本地文件作为输入,然后执行:

 

./bin/flink run examples/streaming/WordCount.jar --input ${your_source_file}

停止集群:

 

./bin/stop-cluster.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2090180.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【分布式定时任务】XXL-JOB_2.4.1部署与实战

部署 分布式任务调度平台XXL-JOBXXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。https://www.xuxueli.com/xxl-job/ 一 数据库配置 执行初始化数据库…

flutter和原生Android以及IOS开发相比有什么优缺点?

Flutter 是 Google 开发的一个开源移动应用开发框架,它使用 Dart 语言编写。Flutter 的主要目标是使开发者能够从单一的代码库构建高性能、高保真的应用程序,这些应用程序可以在 iOS 和 Android 平台上运行,同时保持原生应用的感觉。 Flutte…

tomcat架构设计分析,核心组件详解

提示:tomcat整体架构分析,tomcat核心组件详解、tomcat请求全流程、tomcat设计模式分析。责任链模式设计、tomcat设计详解、tomcat调优的前置文档 文章目录 前言一、相关概念1、tomcat的概念2、web应用部署的3种方式 二、tomcat的整体架构1、tomcat架构图…

三星与海力士发力决战HBM4

在8月中旬,三星宣布正在加速推进下一代HBM(High Bandwidth Memory)的研发,目标是在今年年底前完成HBM4的设计定稿(tape-out)。而SK海力士则继续保持其竞争力,计划在10月份完成HBM4的设计定稿&am…

华为云征文|部署私有云和文档管理系统 Kodcloud

华为云征文|部署私有云和文档管理系统 Kodcloud 一、Flexus云服务器X实例介绍1.1 云服务器介绍1.2 应用场景1.3 对比普通ECS 二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Kodcloud3.1 Jellyfin 介绍3.2 Docker 环境搭建3.3 Jell…

Linux内核6.12新特性:panic之后扫码显示故障信息

Linux 内核 6.12 版本即将引入一项有趣的功能——在内核Panic时显示一个可选的二维码。这一功能将允许用户通过扫描二维码直接访问内核Panic信息的日志,从而更容易地诊断问题所在。 这不是 Linux 第一次尝试使用二维码。早在2014年,就有过关于在内核Pani…

docker-compose容器及Dockerfile的使用

软件资源: 链接: https://pan.baidu.com/s/1iYMP7p7v_HUMc9vakIQfbQ?pwd6fes 提取码: 6fes docker-compose容器 部署nmt---nginxcomposetomcat项目 使用基础的docker指令来创建镜像,实现项目的发布。 Dockerfile--->docker-compose 背景&#x…

[知识技巧] iPhone 15 卡在恢复模式修复方法

如果您发现您的iPhone 15 卡在恢复模式下,这可能是一次相当紧张的经历,尤其是当它阻止您使用手机时。请放心,这是许多 iPhone 用户面临的共同挑战。幸运的是,有一些行之有效的方法可以解决此问题并将您的 iPhone 恢复到正常功能。…

启动盘如何复原

条件: 本教程适合Windows系统 通过Diskpart CMD启动U盘还原U盘在Windows中还有CMD命令可以使用 先“WindowsR”呼出运行窗口,在命令行中搜索"Diskpart"。点击回车输入“list disk”并且回车输入“select disk X”(X为替换可启动u盘的磁盘号)…

Vite项目启动服务器时报错 Error: Cannot find module @rollup/rollup-win32-x64-msvc.

前言: 网上找了很多方法,尝试后都不行。在某篇文章评论区种找到了一种方法解决了,谨以此篇文章记录解决问题的方案,方便日后使用。 解决方法:github链接 Cannot find module rollup/rollup-win32-x64-msvc (rollup 4.…

idea配置连接数据库的操作方法(适配不同版本)

文章目录 一、IDEA找不到database图标的解决方法二、链接数据库 一、IDEA找不到database图标的解决方法 首先很多小伙伴说我左右侧边栏都找了找不到数据库图标 解决办法: 第一种:选择 View --> Tool Windows --> Database 如果你的idea版本在这里…

昂瑞微IPO:华为、小米看重的国产射频芯片,“腾飞”了吗?

从一些科技大厂的投资动向中,往往能够发现一些新的技术力量正在酝酿。 据悉,近日,小米、华为投资的射频芯片供应商——北京昂瑞微电子技术股份有限公司(以下简称“昂瑞微”)在北京证监局办理辅导备案登记,…

docker简单私有仓库的搭建

示例: 【搭建简单的Registry仓库】 1. 下载 Registry 镜像 [rootdocker ~]# docker pull registry #可以查看开放的端口,需要把端口暴露出来 [rootdocker ~]# docker history registry:latest [rootdocker ~]# docker run -d -p 5000:5000 --restartal…

若依微服务ruoyi-auth在knife4j中不显示问题解决

关于若依微服务ruoyi-auth在knife4j中不显示问题解决 解决办法 一、添加swagger依赖文件 在ruoyi-auth模块下的pom.xml文件中添加ruoyi-common-swagger依赖 <!-- RuoYi Common Swagger --><dependency><groupId>com.ruoy

DS1202ZE - 零碎使用记录

文章目录 DS1202ZE - 零碎使用记录概述笔记测量通道频率是使用频率测量还是内建的频率计测量&#xff1f;如何让Ultra Sigma检测到DS1202ZE?如何消除过多的测量结果?通过UltraScope对示波器屏幕进行截图END DS1202ZE - 零碎使用记录 概述 手头在使用DS1202ZE, 将零碎的操作…

javascript网页设计案例详细讲解

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; 我们将以深入讲解一个基于JavaScript的网页设计案例。这个案例不仅涵盖了基础的DOM操作、事件处理和动画效果&#xff0c;还将涉及更高级的主题&#xff0c;如异步数据加载、表单验证、模块化设计和响应式布…

【动态规划】两个数组 / 字符串的dp问题(子序列、子数组问题、匹配问题、字符串问题)

文章目录 前言算法题1.最长公共子序列2.不相交的线3.不同的子序列4.通配符匹配5.正则表达式匹配6.交错字符串7.两个字符串的最小ASCII删除和8.最长重复子数组 前言 两个数组或字符串的动态规划问题通常涉及到比较和匹配元素。以下是两个常见的例子&#xff1a; 最长公共子序列…

「OC」CAlayer——巧用动画实现一个丝滑的折叠cell

「OC」CAlayer——巧用动画实现一个丝滑的折叠cell 前言 在这个暑假集训后的时间&#xff0c;都在家里做着学习笔记的整理&#xff0c;深入学习了CALayer的相关知识&#xff0c;掌握了第三方库Masonry自动布局的用法&#xff0c;以及学习了MVC的相关内容&#xff0c;正好组内…

在Postgresql中计算工单的对应的GPS轨迹距离

一、概述 在某个App开发中&#xff0c;要求记录用户的日常轨迹&#xff0c;在用户巡逻设备的时&#xff0c;将记录的轨迹点当做该设备巡逻时候的轨迹。 由于业务逻辑上没有明确的指示人员巡逻工单-GPS位置之间的关系&#xff0c;所以通过时间关系进行轨迹划定。 二、创建测试表…

Core ML

本文翻译整理自&#xff1a;Core ML : https://developer.apple.com/cn/documentation/coreml/ 文章目录 一、概览二、获取 Core ML 模型三、将 Core ML 模型集成到你的 App 中1、将模型添加到您的Xcode项目2、在代码中创建模型3、获取要传递给模型的输入值4、使用模型进行预测…