首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了一个胖jar之外,所有东西都会在停靠的flink集群中失败。

除了一个胖jar之外,所有东西都会在停靠的flink集群中失败。
EN

Stack Overflow用户
提问于 2019-04-12 20:57:30
回答 1查看 581关注 0票数 1

我有一个容器化的flink集群,具有独立的JobManager和2个任务管理器。当我提交一个包含我需要的连接器和代码的胖jar时,一切都会正常运行,但是一个只有我的代码的jar将失败--尽管我已经将连接器jar添加到/opt/flink/lib,容器进程显示它们将被添加到类路径中。当我试图从IDE进行远程连接时,也会发生同样的失败;不用说,每次都要打包一个胖jar,这会带来糟糕的开发体验。

我需要做什么才能让flink理解我放置在/opt/flink/lib中的额外jars应该与所有新作业一起使用?

类加载程序异常:

org.apache.flink.streaming.runtime.tasks.StreamTaskException:无法加载用户类: org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer

flink Dockerfile:

代码语言:javascript
复制
FROM flink:1.7.2

ADD http://central.maven.org/maven2/org/apache/flink/flink-connector-kafka_2.12/1.7.2/flink-connector-kafka_2.12-1.7.2.jar /opt/flink/lib/
ADD http://central.maven.org/maven2/org/apache/flink/flink-avro-confluent-registry/1.7.2/flink-avro-confluent-registry-1.7.2.jar /opt/flink/lib/
ADD http://central.maven.org/maven2/org/apache/flink/flink-connector-elasticsearch6_2.12/1.7.2/flink-connector-elasticsearch6_2.12-1.7.2.jar /opt/flink/lib/

作业经理集装箱:

代码语言:javascript
复制
root@2406b722dae1:/tmp# ps ax | more
  PID TTY      STAT   TIME COMMAND
    1 ?        Ssl    1:01 /docker-java-home/jre/bin/java -Xms1024m -Xmx1024m -Dlog4j.configuration=file:/opt/flink/conf/log4j-console.properties -Dlogback.configurationFil
e=file:/opt/flink/conf/logback-console.xml -classpath /opt/flink/lib/flink-avro-confluent-registry-1.7.2.jar:/opt/flink/lib/flink-connector-elasticsearch6_2.12-1.7.2.jar:/o
pt/flink/lib/flink-connector-kafka_2.12-1.7.2.jar:/opt/flink/lib/flink-python_2.12-1.7.2.jar:/opt/flink/lib/log4j-1.2.17.jar:/opt/flink/lib/slf4j-log4j12-1.7.15.jar:/opt/fl
ink/lib/flink-dist_2.12-1.7.2.jar::: org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint --configDir /opt/flink/conf --executionMode cluster

任务管理器容器:

代码语言:javascript
复制
root@bd1aa6e35b5a:/tmp# ps ax | more
  PID TTY      STAT   TIME COMMAND
    1 ?        Ssl    0:28 /docker-java-home/jre/bin/java -XX:+UseG1GC -Xms922M -Xmx922M -XX:MaxDirectMemorySize=8388607T -Dlog4j.configuration=file:/opt/flink/conf/log4j-c
onsole.properties -Dlogback.configurationFile=file:/opt/flink/conf/logback-console.xml -classpath /opt/flink/lib/flink-avro-confluent-registry-1.7.2.jar:/opt/flink/lib/flin
k-connector-elasticsearch6_2.12-1.7.2.jar:/opt/flink/lib/flink-connector-kafka_2.12-1.7.2.jar:/opt/flink/lib/flink-python_2.12-1.7.2.jar:/opt/flink/lib/log4j-1.2.17.jar:/op
t/flink/lib/slf4j-log4j12-1.7.15.jar:/opt/flink/lib/flink-dist_2.12-1.7.2.jar::: org.apache.flink.runtime.taskexecutor.TaskManagerRunner --configDir /opt/flink/conf

运行的JobManager和TaskManagers上的/opt/flink/lib:

代码语言:javascript
复制
root@bd1aa6e35b5a:/opt/flink/lib# ls -lh
total 84M
-rw------- 1 root  root  2.7M Feb 11 16:25 flink-avro-confluent-registry-1.7.2.jar
-rw------- 1 root  root   30K Feb 11 16:21 flink-connector-elasticsearch6_2.12-1.7.2.jar
-rw------- 1 root  root   67K Feb 11 16:24 flink-connector-kafka_2.12-1.7.2.jar
-rw-r--r-- 1 flink flink  81M Feb 11 14:50 flink-dist_2.12-1.7.2.jar
-rw-r--r-- 1 flink flink 139K Feb 11 14:49 flink-python_2.12-1.7.2.jar
-rw-rw-r-- 1 flink flink 479K Feb 11 14:32 log4j-1.2.17.jar
-rw-rw-r-- 1 flink flink 9.7K Feb 11 14:32 slf4j-log4j12-1.7.15.jar

万一有任何疑问--这门课就在预期的罐子里:

代码语言:javascript
复制
root@bd1aa6e35b5a:/opt/flink/lib# unzip -l flink-connector-kafka_2.12-1.7.2.jar | grep FlinkKafkaConsumer
    14272  2019-02-12 00:24   org/apache/flink/streaming/connectors/kafka/FlinkKafkaConsumer.class
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-13 02:51:06

我想明白了。我的第一个问题是flink在flink用户下运行,从清单中可以看出,我在Dockerfile中添加的文件属于root。之后我遇到的问题是,sbt程序集为您打包了所有传递的依赖项,您必须在Dockerfile中手动完成这些工作(胖jar文件大小与我添加的文件之间的差异应该会导致这种情况)。

我修正了所有权问题的Dockerfile和Kafka连接器的传递依赖关系(elasticsearch可能仍然有很多缺少的依赖项):

代码语言:javascript
复制
FROM flink:1.7.2

ADD --chown=flink:flink http://central.maven.org/maven2/org/apache/flink/flink-connector-kafka_2.12/1.7.2/flink-connector-kafka_2.12-1.7.2.jar /opt/flink/lib/
ADD --chown=flink:flink http://central.maven.org/maven2/org/apache/flink/flink-connector-kafka-base_2.12/1.7.2/flink-connector-kafka-base_2.12-1.7.2.jar /opt/flink/lib/
ADD --chown=flink:flink http://central.maven.org/maven2/org/apache/flink/flink-avro/1.7.2/flink-avro-1.7.2.jar /opt/flink/lib/
ADD --chown=flink:flink http://central.maven.org/maven2/org/apache/flink/flink-json/1.7.2/flink-json-1.7.2.jar /opt/flink/lib/
ADD --chown=flink:flink http://central.maven.org/maven2/org/apache/avro/avro/1.8.2/avro-1.8.2.jar /opt/flink/lib/
ADD --chown=flink:flink http://central.maven.org/maven2/org/apache/kafka/kafka-clients/0.10.2.1/kafka-clients-0.10.2.1.jar /opt/flink/lib/
ADD --chown=flink:flink http://central.maven.org/maven2/net/jpountz/lz4/lz4/1.3.0/lz4-1.3.0.jar /opt/flink/lib/
ADD --chown=flink:flink http://central.maven.org/maven2/org/xerial/snappy/snappy-java/1.1.2.6/snappy-java-1.1.2.6.jar /opt/flink/lib/
ADD --chown=flink:flink http://central.maven.org/maven2/org/apache/flink/flink-avro-confluent-registry/1.7.2/flink-avro-confluent-registry-1.7.2.jar /opt/flink/lib/
ADD --chown=flink:flink http://central.maven.org/maven2/org/apache/flink/flink-connector-elasticsearch6_2.12/1.7.2/flink-connector-elasticsearch6_2.12-1.7.2.jar /opt/flink/lib/
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55659326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档