Apache flink flink-conf.yaml中fs.hdfs.hadoopconf的用途

Apache flink flink-conf.yaml中fs.hdfs.hadoopconf的用途,apache-flink,Apache Flink,新手到弗林克 我能够在远程hdfs集群中的文件上运行示例wordcount.jar,而无需在flink conf中声明fs.hdfs.hadoopconf变量 所以想知道上述变量的确切用途是什么。 声明它是否会改变运行示例jar的方式 命令: flink-cluster.vm ~]$ /opt/flink/bin/flink run /opt/flink/examples/batch/WordCount.jar --input hdfs://hadoop-master:9000/tmp/tes

新手到弗林克
我能够在远程hdfs集群中的文件上运行示例wordcount.jar,而无需在flink conf中声明fs.hdfs.hadoopconf变量

所以想知道上述变量的确切用途是什么。
声明它是否会改变运行示例jar的方式

命令:

flink-cluster.vm ~]$ /opt/flink/bin/flink run  /opt/flink/examples/batch/WordCount.jar --input hdfs://hadoop-master:9000/tmp/test-events
输出:

.......
07/13/2016 00:50:13 Job execution switched to status FINISHED.
(foo,1)
.....
(bar,1)
(one,1)
设置:

  • 上的远程HDFS群集hdfs://hadoop-master.vm:9000
  • Flink-cluster.vm上运行的Flink群集
谢谢

更新
正如Serhiy所指出的,在conf中声明了fs.hdfs.hadoopconf,但在运行带有更新参数的作业时
hdfs:///tmp/test-events.1468374669125
出现以下错误

flink-conf.yaml

# You can also directly specify the paths to hdfs-default.xml and hdfs-site.xml
# via keys 'fs.hdfs.hdfsdefault' and 'fs.hdfs.hdfssite'.
#
fs.hdfs.hadoopconf: hdfs://hadoop-master:9000/
fs.hdfs.hdfsdefault :  hdfs://hadoop-master:9000/
命令:

flink-cluster.vm ~]$ /opt/flink/bin/flink run  /opt/flink/examples/batch/WordCount.jar --input hdfs:///tmp/test-events
输出:

Caused by: org.apache.flink.runtime.JobException: Creating the input splits caused an error: The given HDFS file URI (hdfs:///tmp/test-events.1468374669125) did not describe the HDFS NameNode. The attempt to use a default HDFS configuration, as specified in the 'fs.hdfs.hdfsdefault' or 'fs.hdfs.hdfssite' config parameter failed due to the following problem: Either no default file system was registered, or the provided configuration contains no valid authority component (fs.default.name or fs.defaultFS) describing the (hdfs namenode) host and port.
    at org.apache.flink.runtime.executiongraph.ExecutionJobVertex.<init>(ExecutionJobVertex.java:172)
    at org.apache.flink.runtime.executiongraph.ExecutionGraph.attachJobGraph(ExecutionGraph.java:679)
    at org.apache.flink.runtime.jobmanager.JobManager.org$apache$flink$runtime$jobmanager$JobManager$$submitJob(JobManager.scala:1026)
    ... 19 more
原因:org.apache.flink.runtime.JobException:创建输入拆分导致错误:给定的HDFS文件URI(hdfs:///tmp/test-events.1468374669125)没有描述HDFS名称节点。由于以下问题,尝试使用“fs.HDFS.hdfsdefault”或“fs.HDFS.hdfssite”配置参数中指定的默认HDFS配置失败:未注册默认文件系统,或者提供的配置不包含描述(HDFS namenode)的有效授权组件(fs.default.name或fs.defaultFS)主机和端口。
位于org.apache.flink.runtime.executiongraph.ExecutionJobVertex.(ExecutionJobVertex.java:172)
位于org.apache.flink.runtime.executiongraph.executiongraph.attachJobGraph(executiongraph.java:679)
位于org.apache.flink.runtime.jobmanager.jobmanager.org$apache$flink$runtime$jobmanager$jobmanager$$submitJob(jobmanager.scala:1026)
... 还有19个
来自:

fs.hdfs.hadoopconf
:Hadoop文件系统 (HDFS)配置目录(可选值)。指定此值 允许程序使用短URI引用HDFS文件 (
hdfs:///path/to/files
,但不包括 文件URI中的名称节点)。如果没有此选项,HDFS文件可以 已访问,但需要完全限定的URI,如
hdfs://address:port/path/to/files
。此选项还会导致文件丢失 写入程序获取HDFS的块大小和 复制因子。Flink将查找“core site.xml”和 指定目录中的“hdfs site.xml”文件


感谢您的快速回复,即使我也在考虑同样的问题,但是声明变量并使用更新的命令行参数会导致错误。请检查原始问题中更新的部分。Thanks@coredumpfs.hdfs.hadoopconf应该指向包含hadoop配置的目录(core-site.xml和hdfs-site.xml),而不是namenode:)的url。正在执行作业的节点应该在某个位置定义这些文件,否则它没有关于远程群集终结点的信息。啊,这是有道理的,因为我正在一个独立的flink群集上运行作业,该群集具有一个独立的HDFS群集(无线程)。因此变量的值应该是
/opt/hadoop/etc/hadoop/
。你知道应该在哪里声明namenode吗?我在flink conf目录中没有看到任何地方。再次感谢。@coredump Hadoop配置一般放在
/etc/Hadoop/conf
(安装Hadoop的集群上)。namenode配置通常放在
hdfs site.xml
中。如果提交作业的计算机中没有hdfs-site.xml,则应将文件复制到该计算机,并将
fs.hdfs.hadoopconf
指向该计算机。