第一步,搭建Linux环境
这里我使用的是 WSL2
安装前,先用管理员打开终端,执行以下三条命令,目的是开启安装 WSL2所需要的环境
//开启适用于windows的Linux子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
//开启虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
//开启hyper-v
bcdedit /set hypervisorlaunchtype auto
环境准备好后,更新wsl内核包
wsl --update
指定 wsl 版本
# 将 WSL 默认版本设置为 WSL 2
wsl --set-default-version 2
最后,输入指令安装(windows 会从微软商店下载,可能会被墙,建议开魔法,没有的话也可以直接去搜索Ubuntu安装包进行安装)
可能会提示你输入用户名和密码,要记住自己输入的用户名密码
wsl --install -d Ubuntu
安装完毕后,检验安装:
wsl -l -v
如果输出以下信息,则表示安装成功
NAME STATE VERSION
* Ubuntu-20.04 Running 2
点击开始界面中最近添加的 Ubuntu 打开,即可弹出可供 linux 操作的命令框
另外,本地磁盘会多一个 Linux 目录,如果需要和 Linux 系统进行文件传输可以直接复制粘贴
第二步,下载 flink
我用的是 flink 1.17
这里是阿里镜像下载连接:apache-flink安装包下载_开源镜像站-阿里云
选择第一个 flink-1.14.2-bin-scala_2.12.tgz
下载完毕后,将其复制粘贴到 linux 中的home目录/你的用户名文件夹 之下
第三步,给 linux 安装 JDK11
在 lunux 命令行中,输入如下命令:
sudo apt update
sudo apt install openjdk-11-jdk
验证安装:
java -version
显示如下信息则安装成功
openjdk version "11.0.18" 2023-01-17 OpenJDK Runtime Environment (build 11.0.18+10-post-Ubuntu-0ubuntu122.04) OpenJDK 64-Bit Server VM (build 11.0.18+10-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)
第四步,让防火墙对 WSL2 放行
首先在 linux 环境中查看自己与 windows 相连的主机IP地址
ip addr
flinkuser@LAPTOP-F32HCITG:~/flink-1.17.2$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet 10.255.255.254/32 brd 10.255.255.254 scope global lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:15:5d:27:1a:4b brd ff:ff:ff:ff:ff:ff inet 172.23.168.153/20 brd 172.23.175.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::215:5dff:fe27:1a4b/64 scope link valid_lft forever preferred_lft forever
可以看到我的IP地址是 172.23.168.153
管理员启动 powerShell 让防火墙给这个IP地址放行
# 允许从 Windows 访问 WSL2 的 172.23.168.153 所有端口(TCP 协议)
New-NetFirewallRule -DisplayName "WSL2-IP-All-Ports" `
-Direction Inbound `
-LocalAddress 172.23.168.153 `
-Protocol TCP `
-Action Allow
放行后,使用windows 的 powershell 测试一下能否正常访问 linux 端口
Test-NetConnection -ComputerName 172.23.168.153 -Port 8888
PS C:\Windows\system32> Test-NetConnection -ComputerName 172.23.168.153 -Port 8888 警告: TCP connect to (172.23.168.153 : 8888) failed ComputerName : 172.23.168.153 RemoteAddress : 172.23.168.153 RemotePort : 8888 InterfaceAlias : vEthernet (WSL (Hyper-V firewall)) SourceAddress : 172.23.160.1 PingSucceeded : True PingReplyDetails (RTT) : 0 ms TcpTestSucceeded : False
可以看到访问成功,只不过我们没往 8888 端口放东西,所以TcpTestSucceeded 是 flase
放行后 windows 就可以正常访问运行在 Linux 上的 filnk 集群了
第五步,开启 linux 本地 flink 集群
使用 cd 命令,进入 flink 根目录
$ cd flink-1.17.2-bin-scala_2.12
开启集群
$ ./bin/start-cluster.sh
成功开启后会输出如下信息:
Starting cluster.
Starting standalonesession daemon on host.
Starting taskexecutor daemon on host.
提交一个本地已经有的 jar 包作业
$ ./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)
浏览器访问 localhost:8081 可以看到 flink 的 web UI
可以看到,windows下的浏览器可以正常访问到 linux 环境中的 flink 集群