更新时间:2022-02-22 GMT+08:00

多个NameService环境下,运行MapReduce任务失败

问题

多个NameService环境下,运行使用viewFS功能的MapReduce或YARN任务失败。

回答

当使用viewFS时,只有在viewFS中挂载的目录才能被访问到。所以最可能的原因是配置的路径没有在viewFS的挂载点上。例如:

<property>
<name>fs.defaultFS</name>
<value>viewfs://ClusterX/</value>
</property>
<property>
<name>fs.viewfs.mounttable.ClusterX.link./folder1</name>
<value>hdfs://NS1/folder1</value>
</property>
<property>
<name>fs.viewfs.mounttable.ClusterX.link./folder2</name>
<value>hdfs://NS2/folder2</value>
</property>

对于依赖HDFS的MR配置中,需要使用已挂载的目录。

错误示例:

<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/tmp/hadoop-yarn/staging</value>
</property>

根目录(/)在viewFS中是无法访问的。

正确示例:

<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/folder1/tmp/hadoop-yarn/staging</value>
</property>