Flink开发-服务器上运行

前言

在开发Flink程序的时候很多时候我们本地打包Jar在服务器中运行,比较麻烦。

我们就可以使用以下的方式来让远程服务器运行本地程序。

步骤

添加运行配置

image-20221115113446303

按如下配置

image-20221115112918553

下拉选择SSH

image-20221115113030598

输入密码,一直下一步

image-20221115113116496

其中JDK会自动获取位置,我们只需要修改程序的目标位置就行。

之后运行的时候,会自动把本地的依赖和代码上传至服务器端自动运行。

Rsync

默认上传的是使用的scp方式,比较慢,我们可以配置为rsync方式。

下载客户端

Windows客户端cwRsync

链接:https://pan.baidu.com/s/1RbPZ6RntpzF3dJ5HLKkRUQ
提取码:psvm

CwRsync已经集成了cygwin类库,因此安装的时候可以省去cygwin包。

设置环境变量

1
Path=D:\Program Files (x86)\cwRsync\bin

添加环境变量

1
HOME=C:\Users\Administrator

否则会报错

Could not create directory ‘/home/Administrator/.ssh’

配置使用rsync方式

image-20221122100634718

image-20221122100804375

但是并不能正常运行

IDEA中同步后无法运行类

在Windows环境同步到Linux环境中不能运行

IDEA自带的SSH+Rsync有BUG,不能使用,这里使用脚本来实现。

准备知识

编译

1
mvn compile

同步代码

1
rsync -avzP --password-file=/cygdrive/d/auth.txt ./target/classes/ zj@192.168.7.101::zjhome

生成jar

1
mvn dependency:copy-dependencies -DincludeScope=compile

说明:
默认会将jar包放在项目中的target下的dependency目录下面

同步Jar

1
rsync -avzP --password-file=/cygdrive/d/auth.txt ./target/dependency/ zj@192.168.7.101::zjhome

运行

服务器上在同步的文件夹内

1
java -cp a.jar:b.jar cn.psvmc.WordCount

或者本地运行

1
ssh root@192.168.7.101 "cd /root/zjhome/&&java -cp a.jar:b.jar cn.psvmc.WordCount"

注意

所有jar包之间要拼接,不能使用通配符*

脚本

先运行以下命令生成jar

1
mvn dependency:copy-dependencies -DincludeScope=compile

同步Jar

1
rsync -avzP --password-file=/cygdrive/d/auth.txt ./target/dependency/ zj@192.168.7.101::zjhome

把脚本文件放到项目的根目录

syncrun.bat

1
2
3
4
5
6
7
8
9
10
11
@echo off  
setlocal enabledelayedexpansion
set MYPATH=%cd%\target\dependency\
set pathAll=.
for /f "delims=" %%a in ('dir /b %MYPATH%\') do (
set pathAll=!pathAll!:%%a
)
rem echo %pathAll%
call mvn compile
rsync -avzP --password-file=/cygdrive/d/auth.txt ./target/classes/ zj@192.168.7.101::zjhome
ssh root@192.168.7.101 "cd /root/zjhome/&&java -cp %pathAll% cn.psvmc.WordCount"

本地添加运行脚本选择上面的脚本文件

image-20221125202607948

添加免密登录

Windows中运行

1
ssh-keygen -t rsa

把本地用户目录.ssh下的id_rsa.pub中的内容追加到服务器用户目录.ssh下的authorized_keys的内容后面。

比如我本地路径为

1
C:\Users\Administrator\.ssh

如果报错:

password file must be owned by root when running as root

进入安装目录下D:\Program Files (x86)\cwRsync\bin

1
2
chmod -c 600 /cygdrive/d/auth.txt
chown administrator /cygdrive/d/auth.txt