无法在亚马逊 emr 中使用 apache flink

Posted

技术标签:

【中文标题】无法在亚马逊 emr 中使用 apache flink【英文标题】:Cannot use apache flink in amazon emr 【发布时间】:2015-08-13 15:02:51 【问题描述】:

我无法在 Amazon EMR 中启动 Apache Flink 的纱线会话。我得到的错误信息是

$ tar xvfj flink-0.9.0-bin-hadoop26.tgz
$ cd flink-0.9.0
$ ./bin/yarn-session.sh -n 4 -jm 1024 -tm 4096
...
Diagnostics: File file:/home/hadoop/.flink/application_1439466798234_0008/flink-conf.yaml does not exist
java.io.FileNotFoundException: File file:/home/hadoop/.flink/application_1439466798234_0008/flink-conf.yaml does not exist
...

我使用的是 Flink 0.9 版和 Amazons Hadoop 4.0.0 版。有什么想法或提示吗?

完整的日志可以在这里找到:https://gist.github.com/headmyshoulder/48279f06c1850c62c28c

【问题讨论】:

报错之前发生了什么?你能分享更多的输出吗? 好的,我添加了完整的日志。 【参考方案1】:

来自日志:

文件系统方案是“文件”。这表明指定的Hadoop配置路径错误,系统使用的是默认的Hadoop配置值。Flink YARN客户端需要将其文件存储在分布式文件系统中

Flink 读取 Hadoop 配置文件失败。它们要么从环境变量中获取,例如HADOOP_HOME,或者您可以在执行 YARN 命令之前在 flink-conf.yaml 中设置配置目录。

Flink 需要读取 Hadoop 配置才能知道如何将 Flink jar 上传到集群文件系统,以便新创建的 YARN 集群可以访问它。如果 Flink 无法解析 Hadoop 配置,它会使用本地文件系统上传 jar。这意味着 jar 将被放置在您启动集群的机器上。因此,它将无法从 Flink YARN 集群访问。

请参阅Flink configuration page 了解更多信息。

编辑:在 Amazong EMR 上,export HADOOP_CONF_DIR=/etc/hadoop/conf 让 Flink 发现 Hadoop 配置目录。

【讨论】:

一些配置文件在/etc/hadoop/conf 其他没有。我在 flink 配置中指向这个目录,但它没有改变任何东西。 能否执行env命令查看是否设置了环境变量?还有,你是不是把fs.hdfs.hadoopconf: /etc/hadoop/放到Flink配置文件里了? /etc/hadoop 是否包含 Hadoop xml 配置文件? HADOOP_HOME 未设置。 /etc/hadoop/conf 包含一些配置文件,但不是全部。例如,它包含hdfs-site.xml,但不包含hdfs-default.xml。根据 flinks 文档,这两个文件是必需的。 你可以执行export HADOOP_CONF_DIR=/etc/hadoop/conf再试一次吗? 不客气 :) 将 fs.hdfs.hadoopconf: /etc/hadoop/conf 放入 Flink 配置中也应该可以。【参考方案2】:

如果我是你,我会试试这个:

./bin/yarn-session.sh -n 1 -jm 768 -tm 768

【讨论】:

以上是关于无法在亚马逊 emr 中使用 apache flink的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Amazon EMR 上的 pig 中使用 Python 流 UDF

如何从 Lambda 函数在亚马逊 EMR 上执行 spark 提交?

amazon emr pig:使用参数文件

亚马逊网络服务 EMR 定价 [关闭]

亚马孙EMR学习网站

如何修复 pyspark EMR Notebook 上的错误 - AnalysisException:无法实例化 org.apache.hadoop.hive.ql.metadata.SessionH