今天记录一下这两天部署flink程序的过程以及遇到的坑。
首先我的服务是一个flink计算服务,里边用到了kafka、redis等。
一、flink下载安装
点击下载flink版本,这里要选择好自己的flink匹配的hadoop版本以及scala版本。
这里我们选择的是比较稳定的1.7.2
hadoop27 这里可能与后边的健康点检查存储hdfs有关,所以要选择与你自己的hadoop集群相同的版本。
scala2.12 这个与你使用的部分包版本相关。
安装启动:
.tgz 用tar zxvf 解压即可
解压完毕,先对配置文件进行简单修改,具体看之前的文章介绍的。
进入目录,进入bin目录
启动: 运行 ./start-cluster.sh (注意权限) windows运行 start-cluster.bat
启动成功,访问 对应的8081 看到ui界面即启动成功!
二、flink程序打包
首先修改pom (主要针对1.7版本)
增加build 修改里边的主类
主类就是main入口,右键复制引用即可
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<!-- 修改主类-->
<mainClass>Project.CalcHealthWarn</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>reference.conf</resource>
</transformer>
</transformers>
<relocations>
<relocation>
<pattern>org.codehaus.plexus.util</pattern>
<shadedPattern>org.shaded.plexus.util</shadedPattern>
<excludes>
<exclude>org.codehaus.plexus.util.xml.Xpp3Dom</exclude>
<exclude>org.codehaus.plexus.util.xml.pull.*</exclude>
</excludes>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
添加编码:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
Flink相关的包进行修改,避免与flink里的jar包冲突
Flink相关的版本都换成1.7.2 scala选择与下载的flink相同的2.12
每个包增加provided 打包的时候不会进行打包
打包:
在maven生命周期分别双击
添加jar包到flink
将服务用到的jar包添加到flink的lib目录下 jar包在maven仓库寻找即可,根据依赖里边的路径
将target下生成好的这个放到服务器上运行
./bin/flink run /root/guangyi/kafka_test-1.0-SNAPSHOT.jar
查看运行状况
查看输出以及日志
三、问题解决
问题一:java.lang.ClassNotFoundException: org.apache.flink.streaming.connectors.kafk
找不到某个类 这个问题就是因为缺少了jar包,将需要的jar包添加到flink的lib目录下边
如果还是不行 就将maven下flink下所有的jar包添加
问题二:无法加载类用户classloader
比如之前可以运行 后边运行有这个错误怎么解决
将temp下边该job id的目录删除掉即可
或者修改配置文件
修改后重启。