Flink on yarn ClassNotFoundException

背景

最近,我司决定将flink 从1.7.2升级到1.8.1。但是,flink 1.8.1运行jar,基于on yarn的模式就会报错。

问题以及解决

运行日志,一开始

Setting HADOOP_CONF_DIR=/etc/hadoop/conf because no HADOOP_CONF_DIR was set.

然后就出现Could not build the program from JAR file。但是用1.7.2的版本就可以跑通,于是发现1.8.1版本中,flink不会自带hadoop的jar了,需要自己去官网下载 https://flink.apache.org/downloads.html 

可以选择对应版本,我是2.5版本的hadoop,选择了2.6.5。然后将下载下来的jar放入,flink的jar目录下(我这边是/var/flink-1.8.1/lib) 

再运行,就会出现各种ClassNotFoundException。

包括:

ClassNotFoundException: com.sun.jersey.core.util.FeaturesAndProperties

ClassNotFoundException: org.glassfish.jersey.internal.RuntimeDelegateImpl

ClassNotFoundException: javax.ws.rs.ext.MessageBodyReader

这里整理了一下,所需要的jar

<!--        &lt;!&ndash; https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-common &ndash;&gt;-->
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-common</artifactId>
            <version>2.27</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-core -->
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-core</artifactId>
            <version>1.19.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-client -->
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.19.4</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.0.1</version>
        </dependency>

将上述的依赖放入IDE中,让maven去下载,然后在去对应的maven仓库去拿下载好的jar,再上传上去,即可。

最后将上传的jar,都变为777权限(这步,不知道需不需要,反正我是都改了)

问题得到解决,可以正常运行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值