深度了解flink Flink 本地运行Standalone模式

环境准备

  • IDEA 必须
  • git 必须
  • maven 必须
  • jdk 1.8+ 必须
  • scala 2.12.7

源码下载

如果能访问github,下载github的源码(flink的代码托管网站)

复制代码
git clone https://github.com/apache/flink.git

如果不能访问github,可以通过码云下载(国内的代码托管平台)

复制代码
git clone https://gitee.com/apache/flink.git

flink tag出来的分支是release出来的版本,本次使用flink 1.19.1的tag,查看所有tag

复制代码
 git tag 

check out出来1.19.1的tag

复制代码
#从tagrelease-1.19.1 创建新的本地分支release-1.19.1_my
git checkout release-1.19.1 -b release-1.19.1_my

IDEA打开Flink项目

设置JDK版本

点击File---> Project Structure--->Project设置Jdk版本(如下图),jdk版本设置1.8或者1.8之后的版本

设置scala版本

点击File---> Project Structure--->Platfrom Settings ---> Global Libraries--->ScalaSdk 设置scala版本(如下图)

添加scala sdk,然后选中所有的模块

源码编译

1.跳过测试

2.clean

3.install

然后就等待install结束,最后每个模块都是success,则install成功,就会出现flink的bin包,包含flink的lib和conf等

如果install失败,可以直接去flink官网下载对应的二进制包(Apache Download Mirrors)

编译或者下载flink二进制包解压后的目录如下

在本地创建a-lib和a-conf两个目录,便于后续使用

  • a-lib:将flink二进制包目录下的lib的包复制到该目录下
  • a-conf:将flink二进制包目录下的conf下文件复制到该目录下

本地运行

修改配置

修改a-conf下的config.yaml

复制代码
################################################################################

env.java.opts.all: --add-exports=java.base/sun.net.util=ALL-UNNAMED --add-exports=java.rmi/sun.rmi.registry=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.krb5=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED

jobmanager.resource-id: q1


jobmanager.rpc.address: localhost

# The RPC port where the JobManager is reachable.

jobmanager.rpc.port: 6123

jobmanager.bind-host: localhost

jobmanager.memory.process.size: 1600m



taskmanager.bind-host: localhost
taskmanager.resource-id: q2

#唯一标识 window下必须配置
taskmanager.cpu.cores: 1
#任务的堆内存
taskmanager.memory.task.heap.size: 512m
#托管内存
taskmanager.memory.managed.size: 512m
#网络内存(Network Memory)
taskmanager.memory.network.min: 128m
taskmanager.memory.network.max: 128m
#任务堆外内存
taskmanager.memory.task.off-heap.size: 0m
#框架内存
taskmanager.memory.framework.heap.size: 256m
#框架堆外内存
taskmanager.memory.framework.off-heap.size: 128m
#JVM Metaspace
taskmanager.memory.jvm-metaspace.size: 128m
#JVM 开销
taskmanager.memory.jvm-overhead.min: 128m
taskmanager.memory.jvm-overhead.max: 128m
#心跳参数
heartbeat.timeout: 50000
heartbeat.interval: 10000


taskmanager.host: localhost


taskmanager.memory.process.size: 1728m


taskmanager.numberOfTaskSlots: 1

# The parallelism used for programs that did not specify and other parallelism.

parallelism.default: 1

jobmanager.execution.failover-strategy: region

rest.address: localhost

rest.bind-address: localhost

启动JobManager

1.搜索 StandaloneSessionClusterEntrypoint类

2.设置参数 右键选择Modify Run Configuration

3.配置启动参数

复制代码
-c a-conf

4.添加jvm参数

复制代码
-Dlog.file=./log/flink-jobmanager-1.local.log 
-Dlog4j.configuration=./a-conf/log4j.properties 
-Dlog4j.configurationFile=./a-conf/log4j.properties 
-Dlogback.configurationFile=./a-conf/logback.xml

5.添加需要用到lib

6.启动JobManager

7.验证

http://localhost:8081/#/job-manager/metrics

启动TaskManager

1.搜索TaskManagerRunner

2.找到TaskManagerRunner main方法,右键Modify Run Configuration

3.配置启动参数,和JobManager配置一样

4.添加jvm参数

复制代码
-Dlog.file=./log/flink-taskmanager-1.local.log 
-Dlog4j.configuration=./a-conf/log4j.properties 
-Dlog4j.configurationFile=./a-conf/log4j.properties 
-Dlogback.configurationFile=./a-conf/logback.xml

5.添加需要用到lib,操作步骤和JobManager一致

6.启动TaskManagr

7.验证

相关推荐
陕西企来客7 分钟前
NAP 信息统一治理:构建生成式 AI 时代企业 GEO 增长的坚实底座-企来客科技NAP方法论-企来客科技NAP信息治理实战解析
大数据·人工智能·科技
CubeSandbox14 分钟前
沙箱是选项,不是标配:花椒 Agent 平台的架构思考与 Cube 实践
大数据·人工智能·架构
重生之我是小技15 分钟前
Selenium自动化爬虫怎么实现?Python实战与反爬应对指南
大数据
55873 生态系统26 分钟前
55873 全域文明生态系统:技术价值矩阵与底层创新内核
大数据·人工智能·55873全域文明生态体系·55873操作系统
2601_9623552343 分钟前
深度解析279模式:【279模式的最新发展趋势2025】行业白皮书
大数据·人工智能·pygame
龙亘川1 小时前
数智赋能民生保障:亘川智城智慧民政系统构建民政一体化业务闭环
大数据·人工智能·智慧城市·开源软件·数据可视化·政务
智商网输送线配件供应1 小时前
广东自动化流水线配件滚筒输送线选型实战:小批量混批采购模式如何重构供应链效率
大数据·重构·自动化
ACP广源盛139246256731 小时前
接口适配方案选型|GSV6125@ACP HDMI2.0 转 Type‑C/DP1.4 桥接芯片工程评估
大数据·c语言·开发语言·硬件架构·硬件工程·国产芯片
YH行业报告分析2 小时前
2026真空热处理碳纤维材料:大丝束与沥青基路线如何撬动高温热场国产化?
大数据·科技
2601_962202982 小时前
万象生鲜系统:首衡集配移动端审批高效
大数据·人工智能