无法在亚马逊 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 提交?
如何修复 pyspark EMR Notebook 上的错误 - AnalysisException:无法实例化 org.apache.hadoop.hive.ql.metadata.SessionH