Flink实战(1):在WSL2中快速部署本地模式并运行首个流处理作业 📅 2026/7/15 19:58:56 1. 为什么选择WSL2作为Flink开发环境如果你是一名Windows平台的开发者想要学习或测试Apache Flink流处理框架WSL2Windows Subsystem for Linux 2可能是目前最理想的本地开发环境选择。相比传统的虚拟机方案如VMware或Cygwin这样的兼容层WSL2具有几个显著优势首先WSL2的资源占用要小得多。它直接运行在Windows内核之上不需要像VMware那样虚拟化整个操作系统。在我的实际测试中一个运行Ubuntu的WSL2实例内存占用通常只有几百MB而相同配置的VMware虚拟机至少需要2GB内存才能流畅运行。其次启动速度极快。从打开终端到完全启动Flink集群整个过程可以在30秒内完成。这对于需要频繁重启集群进行调试的场景特别友好。我记得有一次在VMware中调试Flink作业每次修改代码后重启集群就要等待2-3分钟效率非常低下。最重要的是WSL2与Windows文件系统的无缝集成。你可以在Linux环境中直接访问Windows文件也可以从Windows资源管理器中查看和修改Linux系统的文件。这个特性对于需要频繁在Windows和Linux之间交换数据的场景特别有用。比如你可以用Windows上的IDE编写代码然后在WSL2中直接运行Flink作业。2. 准备WSL2环境2.1 安装WSL2如果你还没有安装WSL2可以按照以下步骤操作。首先以管理员身份打开PowerShell运行以下命令启用WSL功能wsl --install这个命令会自动安装WSL2和默认的Ubuntu发行版。安装完成后你需要重启计算机。重启后Ubuntu会自动开始安装按照提示设置用户名和密码即可。如果你想安装其他Linux发行版比如Ubuntu 22.04 LTS可以使用以下命令wsl --install -d Ubuntu-22.042.2 配置WSL2安装完成后建议进行一些基本配置。首先更新软件包列表并升级现有软件sudo apt update sudo apt upgrade -y然后安装一些常用工具这些工具在后续的Flink使用中可能会用到sudo apt install -y curl wget unzip zip net-toolsWSL2默认会把Linux文件系统挂载在/mnt目录下。你可以通过df命令查看所有挂载点df -h在我的机器上输出显示Windows的C盘挂载在/mnt/cD盘挂载在/mnt/d这样我就可以直接在Linux中访问Windows文件了。3. 安装Java环境Flink需要Java运行环境目前官方推荐使用Java 11。在WSL2中安装Java非常简单sudo apt install -y openjdk-11-jdk安装完成后验证Java版本java -version你应该能看到类似下面的输出openjdk version 11.0.22 2024-01-16 OpenJDK Runtime Environment (build 11.0.227-post-Ubuntu-0ubuntu222.04.1) OpenJDK 64-Bit Server VM (build 11.0.227-post-Ubuntu-0ubuntu222.04.1, mixed mode, sharing)如果你需要同时管理多个Java版本可以考虑安装jenv工具。不过对于Flink本地开发来说Java 11已经足够。4. 下载和安装Flink4.1 下载Flink访问Flink官网下载页面选择适合的版本。我推荐使用国内镜像站下载速度会快很多。以下是使用wget从清华镜像站下载Flink 1.18.0的命令wget https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.18.0/flink-1.18.0-bin-scala_2.12.tgz下载完成后解压文件tar -xzf flink-1.18.0-bin-scala_2.12.tgz然后进入解压后的目录cd flink-1.18.04.2 验证安装Flink是解压即用的不需要额外的安装步骤。你可以直接尝试启动本地集群./bin/start-cluster.sh如果一切正常你会看到类似下面的输出Starting cluster. Starting standalonesession daemon on host DESKTOP-B2S657C. Starting taskexecutor daemon on host DESKTOP-B2S657C.5. 运行第一个流处理作业5.1 访问Web UIFlink提供了一个Web界面默认运行在8081端口。在WSL2中你可以直接在Windows浏览器中访问http://localhost:8081这个界面会显示集群的状态、运行的作业、TaskManager等信息是监控和管理Flink集群的重要工具。5.2 提交WordCount示例Flink自带了许多示例程序我们可以用经典的WordCount来测试集群是否正常工作。运行以下命令提交作业./bin/flink run examples/streaming/WordCount.jar这个作业会处理一些内置的文本数据统计单词出现次数。作业完成后你可以查看输出日志tail log/flink-*-taskexecutor-*.out你应该能看到类似下面的输出(nymph,1) (in,3) (thy,1) (orisons,1) (be,4) (all,2) (my,1) (sins,1) (remember,1) (d,4)5.3 停止集群测试完成后记得停止集群以释放资源./bin/stop-cluster.sh6. 常见问题解决在WSL2中运行Flink可能会遇到一些特殊问题以下是几个我遇到过的典型问题及解决方法6.1 Java环境问题如果启动时遇到Java相关的错误首先确认Java是否正确安装并配置了JAVA_HOME环境变量。可以添加以下内容到~/.bashrc文件中export JAVA_HOME/usr/lib/jvm/java-11-openjdk-amd64 export PATH$JAVA_HOME/bin:$PATH然后执行source ~/.bashrc使配置生效。6.2 文件路径问题在WSL2中Windows文件系统和Linux文件系统的路径表示方式不同。如果你需要在Flink作业中处理Windows文件系统中的文件记得使用/mnt/c/这样的路径前缀而不是C:\。6.3 内存不足问题WSL2默认会限制内存使用量。如果你发现Flink经常因为内存不足而崩溃可以在Windows用户目录下创建或修改.wslconfig文件内容如下[wsl2] memory4GB swap2GB这会将WSL2的内存限制提高到4GB通常足够运行简单的Flink作业了。7. 进阶使用建议一旦你成功运行了第一个Flink作业可以尝试以下进阶操作使用Flink SQL客户端Flink提供了交互式SQL客户端可以直接执行SQL查询尝试连接外部系统比如从Kafka读取数据或写入到MySQL使用Flink Web UI的作业提交功能可以直接上传JAR文件并通过Web界面提交作业调试自定义作业开发自己的Flink应用程序并部署到本地集群WSL2提供了一个接近生产环境的Linux开发体验同时又保持了Windows的易用性。对于想要学习Flink的Windows开发者来说这可能是目前最理想的解决方案。