ubuntu安装flink

建议沿用 Flink on YARN:在 master 安装、提交任务,由 YARN 在两个 worker 上启动计算进程。这样可以与 Spark 共用现有资源管理方式。

选择 Flink 1.20.3 + Java 11 。下面使用官方的 Scala 2.12 二进制包,不需要单独安装 Scala 。官方下载包

节点 作用
master 安装 Flink、提交任务
worker1、worker2 YARN 分配资源,运行 Flink 服务和任务

JobManager 的实际运行位置由 YARN 安排,不一定在 master。以下操作都在 master 上,用普通用户 dyl 执行。

1. 确认 Hadoop 正常

bash 复制代码
hdfs dfsadmin -report
yarn node -list

应看到两个存储节点和两个 RUNNING 计算节点。尚未启动时:

bash 复制代码
start-dfs.sh
start-yarn.sh

先退出正在运行的 spark-shell,停止暂时不用的 HBase、Hive 等服务,给 Flink 留出内存。本次基础实验无需 ZooKeeper。

2. 下载并校验

bash 复制代码
mkdir -p ~/software
cd ~/software

wget -c https://downloads.apache.org/flink/flink-1.20.3/flink-1.20.3-bin-scala_2.12.tgz

wget https://downloads.apache.org/flink/flink-1.20.3/flink-1.20.3-bin-scala_2.12.tgz.sha512

查看校验值:

bash 复制代码
sha512sum flink-1.20.3-bin-scala_2.12.tgz
cat flink-1.20.3-bin-scala_2.12.tgz.sha512

两个 SHA-512 值一致后继续。

3. 解压安装

以下假设 /home/dyl/flink 尚未安装其他版本:

bash 复制代码
mkdir -p /home/dyl/flink

tar -xzf flink-1.20.3-bin-scala_2.12.tgz \
  -C /home/dyl/flink --strip-components=1

检查:

bash 复制代码
ls /home/dyl/flink

应包含 bin、conf、lib、examples 等目录。

4. 配置环境变量

打开:

bash 复制代码
nano ~/.bashrc

在末尾添加:

bash 复制代码
export FLINK_HOME=/home/dyl/flink
export PATH=$FLINK_HOME/bin:$PATH

export HADOOP_CONF_DIR=/home/dyl/hadoop-3.4.3/etc/hadoop
export HADOOP_CLASSPATH=$(/home/dyl/hadoop-3.4.3/bin/hadoop classpath)

保存后执行:

bash 复制代码
source ~/.bashrc

确认本次会话使用 Java 11:

bash 复制代码
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

检查:

bash 复制代码
java -version
flink --version
echo "$HADOOP_CLASSPATH"

应分别显示 Java 11、Flink 1.20.3,以及非空的 Hadoop 类库路径。HADOOP_CLASSPATH 用于让 Flink 加载 Hadoop 客户端依赖。官方 YARN 配置说明

5. 创建 HDFS 实验目录

bash 复制代码
hdfs dfs -mkdir -p /user/dyl/flink-input
hdfs dfs -mkdir -p /user/dyl/flink-results

准备输入数据:

bash 复制代码
printf 'hello flink\nhello hadoop\n' > /home/dyl/flink-words.txt

hdfs dfs -put /home/dyl/flink-words.txt /user/dyl/flink-input/

检查:

bash 复制代码
hdfs dfs -cat /user/dyl/flink-input/flink-words.txt

6. 启动 Flink YARN Session

执行:

bash 复制代码
/home/dyl/flink/bin/yarn-session.sh \
  -jm 1024 \
  -tm 1536 \
  -s 1 \
  -Dparallelism.default=2 \
  -Denv.java.home=/usr/lib/jvm/java-11-openjdk-amd64 \
  -d

参数含义:

参数 含义
-jm 1024 JobManager 进程内存 1024 MB
-tm 1536 每个 TaskManager 进程内存 1536 MB
-s 1 每个 TaskManager 提供一个任务槽
parallelism.default=2 默认并行度为 2
-d 提交后退出客户端,集群继续运行

这套设置用于你目前的内存配置。TaskManager 会根据任务资源需求申请,刚启动 Session 时不一定立即出现两个。

启动成功后,记录输出的应用编号,例如:

text 复制代码
application_XXXXXXXXXXXXX_0001

后续命令中的 <应用编号>,都替换成你实际看到的编号,不要保留尖括号。

7. 查看管理页面

打开:

YARN 管理页面

找到 Flink 应用,状态应为 RUNNING。点击该应用的 Tracking UI / ApplicationMaster 链接,进入 Flink 页面。

不要直接假设页面地址是 master:8081,YARN 部署时应使用输出的地址或 YARN 提供的链接。

8. 提交 WordCount 测试

在 master 执行:

bash 复制代码
flink run \
  -t yarn-session \
  -Dyarn.application.id=<应用编号> \
  -p 2 \
  /home/dyl/flink/examples/streaming/WordCount.jar \
  --execution-mode BATCH \
  --input hdfs://master:9000/user/dyl/flink-input/flink-words.txt \
  --output hdfs://master:9000/user/dyl/flink-results/wordcount-1

这是使用有限输入文件的批处理测试。首次运行会申请资源,可能需要等待。

成功后查看结果:

bash 复制代码
hdfs dfs -ls -R /user/dyl/flink-results/wordcount-1

读取输出文件:

bash 复制代码
hdfs dfs -cat '/user/dyl/flink-results/wordcount-1/*'

应看到包含以下计数的结果,顺序和格式可能略有不同:

text 复制代码
hello  2
flink  1
hadoop 1

同时在 Flink 页面检查:

  • 作业状态为 FINISHED。
  • TaskManagers 页面能看到计算进程。
  • TaskManager 地址可以用来确认任务实际运行在哪台机器。

重新测试时,把输出目录换成 wordcount-2,避免覆盖已有结果。

9. 使用完后释放资源

Session 模式下,作业完成后 Flink 集群仍会继续占用资源。实验结束后,在 master 执行:

bash 复制代码
yarn application -kill <应用编号>

这会停止该 Flink Session 中的所有任务并释放资源。下次使用时,重新运行第六步,取得新的应用编号即可。

这种方式只需在 master 安装 Flink,不需要向 worker 手动分发安装目录,也不需要执行 start-cluster.sh。 如果应用一直停在 ACCEPTED,先检查是否被 Spark 或其他 YARN 应用占满资源:

bash 复制代码
yarn application -list

遇到失败,保留应用编号并查看日志:

bash 复制代码
yarn logs -applicationId <应用编号>

如果提示日志聚合未开启,则从 YARN 应用页面进入对应容器日志查看报错。

相关推荐
爱和冰阔落2 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨2 小时前
WSL2的安装与使用
linux·wsl
微小的鱼2 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng2 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮3 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
Linux-lucky15 小时前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
禁默15 小时前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu
skywalk816315 小时前
把 去也网站 从 Ubuntu 搬到 FreeBSD:一次 Service Jail + nginx 的部署实录
linux·运维·nginx·ubuntu·freebsd
爱莉希雅&&&17 小时前
GitLab 完整学习笔记
linux·运维·服务器