yarn.log.dir 在哪里定义的?

Where is yarn.log.dir defined?

在 Apache Hadoop 3.0.0 的 yarn-default.xml 中,它显示 yarn.nodemanager.log-dirs 的默认值为 ${yarn.log.dir}/userlogs。

yarn.log.dir在哪里定义的?它有默认值吗?

我没有在任何默认配置中找到它(core-default.xml、hdfs-default.xml、mapred-default.xml、yarn-default.xml)。

我没有在任何环境脚本中找到它(hadoop-env.sh、httpfs-env.sh、kms-env.sh、mapred-env.sh、纱线-env.sh.

同样让我感到困惑的是,当我对 "yarn.nodemanager.log-dirs" 的代码进行 grep 时,它唯一出现的地方是 yarn-default.xml 和 markdown 文件,而不是任何 java 代码任何地方。那么设置 yarn.nodemanager.log-dirs 是如何做的呢?

yarn.log.dir 是 Java 属性,基于 -D 标志

yarn-env.sh 中,您应该会看到 YARN_LOG_DIR

# default log directory and file
if [ "$YARN_LOG_DIR" = "" ]; then
  YARN_LOG_DIR="$HADOOP_YARN_HOME/logs"
  ...
fi

YARN_OPTS="$YARN_OPTS -Dyarn.log.dir=$YARN_LOG_DIR"