从命令行获取纱线配置
Get a yarn configuration from commandline
在 EMR 中,有没有办法使用 yarn
命令在给定配置密钥的情况下获取配置的特定值?
例如我想做这样的事情
yarn get-config yarn.scheduler.maximum-allocation-mb
有点non-intuitive,但事实证明 hdfs getconf
命令能够检查 YARN 和 MapReduce 的配置属性,而不仅仅是 HDFS。
> hdfs getconf -confKey fs.defaultFS
hdfs://localhost:19000
> hdfs getconf -confKey dfs.namenode.name.dir
file:///Users/chris/hadoop-deploy-trunk/data/dfs/name
> hdfs getconf -confKey yarn.resourcemanager.address
0.0.0.0:8032
> hdfs getconf -confKey mapreduce.framework.name
yarn
使用它的一个好处是您将看到 Hadoop 实际使用的任何配置属性的实际、最终结果。这将解释一些更高级的配置模式,例如在 XML 文件中使用 XInclude 或 属性 替换,如下所示:
<property>
<description>The address of the applications manager interface in the RM.</description>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
任何尝试直接解析 XML 文件的脚本方法都不太可能准确匹配在 Hadoop 内部完成的实现,因此最好询问 Hadoop 本身。
您可能想知道为什么 hdfs
命令可以获得 YARN 和 MapReduce 的配置属性。好问题!需要将 MapReduce 的 JobConf
的实例注入通过反射创建的某些对象的实现有点巧合。相关代码可见:
此代码作为 运行 hdfs getconf
命令的一部分执行。通过触发对 JobConf
的引用,它会强制 class 加载和静态初始化相关的 MapReduce 和 YARN classes 添加 yarn-default.xml, yarn-site.xml、mapred-default.xml 和 mapred-site.xml 到有效的配置文件集。
由于实现的巧合,此行为的某些部分可能会在未来的版本中发生变化,但这将是 backwards-incompatible 变化,因此我们绝对不会在当前版本中更改该行为Hadoop 2.x 行。 Apache Hadoop Compatibility 策略在主要版本行中提交到 backwards-compatibility,因此您可以相信它至少会在 2.x 版本行中继续工作。
在 EMR 中,有没有办法使用 yarn
命令在给定配置密钥的情况下获取配置的特定值?
例如我想做这样的事情
yarn get-config yarn.scheduler.maximum-allocation-mb
有点non-intuitive,但事实证明 hdfs getconf
命令能够检查 YARN 和 MapReduce 的配置属性,而不仅仅是 HDFS。
> hdfs getconf -confKey fs.defaultFS
hdfs://localhost:19000
> hdfs getconf -confKey dfs.namenode.name.dir
file:///Users/chris/hadoop-deploy-trunk/data/dfs/name
> hdfs getconf -confKey yarn.resourcemanager.address
0.0.0.0:8032
> hdfs getconf -confKey mapreduce.framework.name
yarn
使用它的一个好处是您将看到 Hadoop 实际使用的任何配置属性的实际、最终结果。这将解释一些更高级的配置模式,例如在 XML 文件中使用 XInclude 或 属性 替换,如下所示:
<property>
<description>The address of the applications manager interface in the RM.</description>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
任何尝试直接解析 XML 文件的脚本方法都不太可能准确匹配在 Hadoop 内部完成的实现,因此最好询问 Hadoop 本身。
您可能想知道为什么 hdfs
命令可以获得 YARN 和 MapReduce 的配置属性。好问题!需要将 MapReduce 的 JobConf
的实例注入通过反射创建的某些对象的实现有点巧合。相关代码可见:
此代码作为 运行 hdfs getconf
命令的一部分执行。通过触发对 JobConf
的引用,它会强制 class 加载和静态初始化相关的 MapReduce 和 YARN classes 添加 yarn-default.xml, yarn-site.xml、mapred-default.xml 和 mapred-site.xml 到有效的配置文件集。
由于实现的巧合,此行为的某些部分可能会在未来的版本中发生变化,但这将是 backwards-incompatible 变化,因此我们绝对不会在当前版本中更改该行为Hadoop 2.x 行。 Apache Hadoop Compatibility 策略在主要版本行中提交到 backwards-compatibility,因此您可以相信它至少会在 2.x 版本行中继续工作。