hadoop - 在分布式 Hadoop 集群中使用 ENV 变量

标签 hadoop oozie ambari bigdata

我的目标是在我们的 Hadoop 集群上运行应用程序,而无需将显式配置放入每个应用程序。因此,我试图将集群的配置放入 ENV 变量中,并将它们传播到集群中的每个节点。

例如我定义:

export HIVE2_JDBC_URL=jdbc:hive2://localhost:10000

以后像这样使用它:

beeline -u $HIVE2_JDBC_URL/<db_name> -e "SELECT * FROM <table_name>;"

虽然这适用于这个特定的用例(在 cli 中),但它有两个很大的缺点:

  • 我必须根据更改手动更新每个节点上的 ENV 变量
  • Oozie 工作流无法读取 ENV 变量

有没有一种方法可以使用 Ambari 检索此设置,我可以定义我自己的自定义设置,然后在每个节点上可用吗?是否有一种方法也适用于 Oozie 工作流?

最佳答案

您可以通过 mapred-site.xml 强制“集群范围”环境变量yarn-site.xml -- 但我不能 100% 确定必须在 ResourceManager 服务和/或每个 NodeManager 服务和/或 的配置中设置哪些属性客户端节点。哪个级别覆盖(或添加到)哪个级别。您将必须进行一些研究和实验。

查看 mapred-default.xml 的文档和 yarn-default.xml (例如 Hadoop 2.7.0 的 herehere)用于...

mapred.child.env
mapreduce.admin.user.env
yarn.app.mapreduce.am.env
yarn.app.mapreduce.am.admin.user.env
yarn.nodemanager.admin-env
yarn.nodemanager.env-whitelist

[编辑] 还要查看这些在“默认”列表中没有正确条目的属性(又是另一个文档错误...)并忘记“mapred.child”的东西

mapreduce.map.env 
mapreduce.reduce.env 


对于Oozie 作业,有两种设置环境的方法。变量:

  • Shell Action 有一个明确的 <env-var>VAR=VALUE</env-var>语法,因为 shell 脚本非常依赖 env。变量
  • 所有使用“启动器”YARN 作业的操作(即 Java、Pig、Sqoop、Spark、Hive、Hive2、Shell...) 都可以受益于
    <property>
    <name>oozie.launcher.xxx.xxx.xxx.env</name><value>****</value>
    </property>
    覆盖上面提到的客户端配置文件中的值
  • MapReduce 操作是直接启动的,没有“启动器”作业,因此该属性将直接设置为
    <property>
    <name>xxx.xxx.xxx.env</name><value>****</value>
    </property>
  • 此外,在核心工作流模式(即 Java、Pig、MapReduce)中定义的操作可以使用 <global>部分仅定义一次属性
    => 唉,其他操作被定义为具有不同 XML 架构的插件,并且不继承全局属性...

不幸的是,Oozie 的文档(例如 Oozie 4.1 的 here)完全没有提到 oozie.launcher.*。属性,您必须在 Stack Overflow 中进行一些研究——在 that post 中例如。

关于hadoop - 在分布式 Hadoop 集群中使用 ENV 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39207745/

相关文章:

csv - 指向带有嵌入双引号的 CSV 文件的 Hive 外部表

hadoop - Apache Drill支持所有ANSI SQL 2003查询

hadoop - 无法在 HDP 2.2 沙盒上安装 Storm

shell - Oozie Job 仍处于 RUNNING 状态

hadoop - 看不到在Ambari Web UI中运行的任何服务

scala - 从 HDFS 读取文件并将内容分配给字符串

hadoop - 在 oozie 中多次提交相同的协调员工作

hadoop - 在 Oozie 中,如何将查询的输出重定向到文件?

mysql - 使用正确凭据挂起 Ambari 管理员登录,使用无效凭据引发正确错误

hadoop - 使用Ambari安装特定版本的hadoop