[ 
https://issues.apache.org/jira/browse/YARN-4789?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15191345#comment-15191345
 ] 

Sangjin Lee commented on YARN-4789:
-----------------------------------

Thanks for filing the issue and the patch [~jira.shegalov]! This definitely is 
a bug.

I also find the descriptions of the admin env properties very confusing:
{noformat}
<property>
  <name>mapreduce.admin.user.env</name>
  <value></value>
  <description>
  Expert: Additional execution environment entries for
  map and reduce task processes. This is not an additive property.
  You must preserve the original value if you want your map and
  reduce tasks to have access to native libraries (compression, etc).
  When this value is empty, the command to set execution
  envrionment will be OS dependent:
  For linux, use LD_LIBRARY_PATH=$HADOOP_COMMON_HOME/lib/native.
  For windows, use PATH = %PATH%;%HADOOP_COMMON_HOME%\\bin.
  </description>
</property>
<property>
  <name>yarn.app.mapreduce.am.admin.user.env</name>
  <value></value>
  <description> Environment variables for the MR App Master
  processes for admin purposes. These values are set first and can be
  overridden by the user env (yarn.app.mapreduce.am.env) Example :
  1) A=foo  This will set the env variable A to foo
  2) B=$B:c This is inherit app master's B env variable.
  </description>
</property>
{noformat}

The statement about it being non-additive is confusing, as for PATH-like 
variables they are very much additive. Also, 
{{yarn.app.mapreduce.am.admin.user.env}} says 
bq. These values are set first and can be overridden by the user env 
(yarn.app.mapreduce.am.env)

So it seems to me that we should revisit these descriptions and improve them, 
especially if we are going to reject user values for non-PATH environment 
variables.

I only took a quick look at the patch, but it appears the exception will be 
thrown every time {{Apps.addToEnvironment()}} is called for a non-PATH 
environment variable? That would cause exceptions for more types of situations 
than we're targeting, right? For example, I suspect even the attempt to set 
{{yarn.app.mapreduce.am.admin.user.env}} would fail:

{code}
    // Setup the environment variables for Admin first
    MRApps.setEnvFromInputString(environment, 
        conf.get(MRJobConfig.MR_AM_ADMIN_USER_ENV,
            MRJobConfig.DEFAULT_MR_AM_ADMIN_USER_ENV), conf);
{code}

I think it'd be better to target this change more narrowly.

> Provide helpful exception for non-PATH-like conflict with admin.user.env
> ------------------------------------------------------------------------
>
>                 Key: YARN-4789
>                 URL: https://issues.apache.org/jira/browse/YARN-4789
>             Project: Hadoop YARN
>          Issue Type: Bug
>    Affects Versions: 2.7.2
>            Reporter: Gera Shegalov
>            Assignee: Gera Shegalov
>         Attachments: YARN-4789.001.patch
>
>
> Environment variables specified in mapreduce.admin.user.env are supposed to 
> be paths (class, shell, library) and they can be merged with the 
> user-provided values. However, it's also possible that the cluster admins 
> specify some non-PATH-like variable such as JAVA_HOME. In this case if there 
> is the same variable provided by the user, we'll get a concatenation that 
> does not make sense and is difficult to debug.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to