Hadoop 无法在Google Cloud Dataproc上启动Apache Flink 1.7

Hadoop 无法在Google Cloud Dataproc上启动Apache Flink 1.7,hadoop,apache-flink,google-cloud-dataproc,Hadoop,Apache Flink,Google Cloud Dataproc,我使用Hadoop 2.9.2启动了Dataproc群集,下载了Flink 1.7.2,并尝试使用以下命令启动它: ./bin/yarn-session.sh -n 2 此操作失败,并显示以下错误消息: Setting HADOOP_CONF_DIR=/etc/hadoop/conf because no HADOOP_CONF_DIR was set. 2019-02-15 12:56:05,679 INFO org.apache.flink.configuration.GlobalCo

我使用Hadoop 2.9.2启动了Dataproc群集,下载了Flink 1.7.2,并尝试使用以下命令启动它:

./bin/yarn-session.sh  -n 2
此操作失败,并显示以下错误消息:

Setting HADOOP_CONF_DIR=/etc/hadoop/conf because no HADOOP_CONF_DIR was set.
2019-02-15 12:56:05,679 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: jobmanager.rpc.address, localhost
2019-02-15 12:56:05,680 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: jobmanager.rpc.port, 6123
2019-02-15 12:56:05,681 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: jobmanager.heap.size, 1024m
2019-02-15 12:56:05,681 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: taskmanager.heap.size, 1024m
2019-02-15 12:56:05,681 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: taskmanager.numberOfTaskSlots, 1
2019-02-15 12:56:05,681 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: parallelism.default, 1
2019-02-15 12:56:05,682 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: rest.port, 8081
2019-02-15 12:56:06,241 WARN  org.apache.hadoop.util.NativeCodeLoader                       - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2019-02-15 12:56:06,323 INFO  org.apache.flink.runtime.security.modules.HadoopModule        - Hadoop user set to robert (auth:SIMPLE)
2019-02-15 12:56:06,534 ERROR org.apache.flink.yarn.cli.FlinkYarnSessionCli                 - Error while running the Flink Yarn session.
java.lang.NoClassDefFoundError: javax/ws/rs/ext/MessageBodyReader
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.apache.hadoop.yarn.util.timeline.TimelineUtils.<clinit>(TimelineUtils.java:50)
    at org.apache.hadoop.yarn.client.api.impl.YarnClientImpl.serviceInit(YarnClientImpl.java:179)
    at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)
    at org.apache.flink.yarn.cli.FlinkYarnSessionCli.getClusterDescriptor(FlinkYarnSessionCli.java:984)
    at org.apache.flink.yarn.cli.FlinkYarnSessionCli.createDescriptor(FlinkYarnSessionCli.java:273)
    at org.apache.flink.yarn.cli.FlinkYarnSessionCli.createClusterDescriptor(FlinkYarnSessionCli.java:451)
    at org.apache.flink.yarn.cli.FlinkYarnSessionCli.run(FlinkYarnSessionCli.java:588)
    at org.apache.flink.yarn.cli.FlinkYarnSessionCli.lambda$main$2(FlinkYarnSessionCli.java:810)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1836)
    at org.apache.flink.runtime.security.HadoopSecurityContext.runSecured(HadoopSecurityContext.java:41)
    at org.apache.flink.yarn.cli.FlinkYarnSessionCli.main(FlinkYarnSessionCli.java:810)
Caused by: java.lang.ClassNotFoundException: javax.ws.rs.ext.MessageBodyReader
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 49 more
设置HADOOP\u CONF\u DIR=/etc/HADOOP/CONF,因为没有设置HADOOP\u CONF\u DIR。
2019-02-15 12:56:05679 INFO org.apache.flink.configuration.GlobalConfiguration-加载配置属性:jobmanager.rpc.address,localhost
2019-02-15 12:56:05680 INFO org.apache.flink.configuration.GlobalConfiguration-加载配置属性:jobmanager.rpc.port,6123
2019-02-15 12:56:05681 INFO org.apache.flink.configuration.GlobalConfiguration-加载配置属性:jobmanager.heap.size,1024m
2019-02-15 12:56:05681 INFO org.apache.flink.configuration.GlobalConfiguration-加载配置属性:taskmanager.heap.size,1024m
2019-02-15 12:56:05681 INFO org.apache.flink.configuration.GlobalConfiguration-加载配置属性:taskmanager.numberOfTaskSlots,1
2019-02-15 12:56:05681 INFO org.apache.flink.configuration.GlobalConfiguration-加载配置属性:parallelism.default,1
2019-02-15 12:56:05682 INFO org.apache.flink.configuration.GlobalConfiguration-加载配置属性:rest.port,8081
2019-02-15 12:56:06241警告org.apache.hadoop.util.NativeCodeLoader-无法为您的平台加载本机hadoop库。。。在适用的情况下使用内置java类
2019-02-15 12:56:06323 INFO org.apache.flink.runtime.security.modules.HadoopModule-Hadoop用户设置为robert(auth:SIMPLE)
2019-02-15 12:56:06534错误org.apache.flink.warn.cli.FlinkYarnSessionCli-运行flink-warn会话时出错。
NoClassDefFoundError:javax/ws/rs/ext/MessageBodyReader
位于java.lang.ClassLoader.defineClass1(本机方法)
位于java.lang.ClassLoader.defineClass(ClassLoader.java:763)
位于java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
位于java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
在java.net.URLClassLoader.access$100(URLClassLoader.java:74)
在java.net.URLClassLoader$1.run(URLClassLoader.java:369)
在java.net.URLClassLoader$1.run(URLClassLoader.java:363)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:362)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
位于java.lang.ClassLoader.defineClass1(本机方法)
位于java.lang.ClassLoader.defineClass(ClassLoader.java:763)
位于java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
位于java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
在java.net.URLClassLoader.access$100(URLClassLoader.java:74)
在java.net.URLClassLoader$1.run(URLClassLoader.java:369)
在java.net.URLClassLoader$1.run(URLClassLoader.java:363)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:362)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
位于java.lang.ClassLoader.defineClass1(本机方法)
位于java.lang.ClassLoader.defineClass(ClassLoader.java:763)
位于java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
位于java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
在java.net.URLClassLoader.access$100(URLClassLoader.java:74)
在java.net.URLClassLoader$1.run(URLClassLoader.java:369)
在java.net.URLClassLoader$1.run(URLClassLoader.java:363)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:362)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
位于org.apache.hadoop.warn.util.timeline.TimelineUtils(TimelineUtils.java:50)
位于org.apache.hadoop.warn.client.api.impl.YarnClientImpl.serviceInit(YarnClientImpl.java:179)
位于org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)
位于org.apache.flink.warn.cli.FlinkYarnSessionCli.getClusterDescriptor(FlinkYarnSessionCli.java:984)
位于org.apache.flink.warn.cli.FlinkYarnSessionCli.createDescriptor(FlinkYarnSessionCli.java:273)
位于org.apache.flink.warn.cli.FlinkYarnSessionCli.createClusterDescriptor(FlinkYarnSessionCli.java:451)
位于org.apache.flink.warn.cli.FlinkYarnSessionCli.run(FlinkYarnSessionCli.java:588)
位于org.apache.flink.warn.cli.FlinkYarnSessionCli.lambda$main$2(FlinkYarnSessionCli.java:810)
位于java.security.AccessController.doPrivileged(本机方法)
位于javax.security.auth.Subject.doAs(Subject.java:422)
位于org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1836)
位于org.apache.flink.runtime.security.HadoopSecurityContext.runSecured(HadoopSecurityContext.java:41)
位于org.apache.flink.warn.cli.FlinkYarnSessionCli.main(FlinkYarnSessionCli.java:810)
原因:java.lang.ClassNotFoundException:javax.ws.rs.ext.MessageBodyReader
位于java.net.URLClassLoader.findClass(URLClassLoader.java:382)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 49多

要解决此问题,我需要导出以下变量:

export HADOOP_CLASSPATH=`hadoop classpath`

通常,安装Flink的最佳方法是使用从Dataproc发行版通过apt get安装的来获取版本