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

Jim Brennan commented on MAPREDUCE-7069:
----------------------------------------

[~jlowe] thanks for the thorough review.  Much appreciated!
{quote}It's a bit odd and inefficient that setVMEnv calls 
MRApps.setEnvFromInputProperty twice. I think it would be clearer and more 
efficient to call it once, place the results in a temporary map (like it 
already does in the second call), then only set HADOOP_ROOT_LOGGER and 
HADOOP_CLIENT_OPTS in the environment if they are not set in the temporary map. 
Then at the end we can simply call addAll to dump the contents of the temporary 
map into the environment map.
{quote}
The reason it was done with two calls is because of the way environment 
variables are handled when they are already defined in the environment map. If 
you an environment variable that you are updating already exists in the 
environment, setEnvFromInput* functions append the new value to the existing 
value, using the appropriate separator. The special handling for 
HADOOP_ROOT_LOGGER and HADOOP_CLIENT_OPTS is to overwrite them instead of 
appending.  That said, I can definitely change it to do it the way you suggest, 
except I can't just use addAll() - you ultimately need to use 
Apps.addToEnvironment on each k/v pair. I could expose an 
Apps.setEnvFromInputStringMapNoExpand() (or add a noExpand boolean to the 
existing one) to handle this though.  

Thanks for the documentation/comment recommendations - I was going to ask about 
that - I'll clean those up.
{quote}Nit: setEnvFromInputStringMap does not need to be public.
{quote}
Will fix. In an earlier iteration I was calling this directly.
{quote}Would it be easier to call tmpEnv.addAll(inputMap) and pass tmpEnv 
instead of inputMap? Then we don't need to explicitly iterate the map.
{quote}
Yes.  I will make this change.

> Add ability to specify user environment variables individually
> --------------------------------------------------------------
>
>                 Key: MAPREDUCE-7069
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-7069
>             Project: Hadoop Map/Reduce
>          Issue Type: Improvement
>            Reporter: Jim Brennan
>            Assignee: Jim Brennan
>            Priority: Major
>         Attachments: MAPREDUCE-7069.001.patch, MAPREDUCE-7069.002.patch
>
>
> As reported in YARN-6830, it is currently not possible to specify an 
> environment variable that contains commas via {{mapreduce.map.env}}, 
> mapreduce.reduce.env, or {{mapreduce.admin.user.env}}.
> To address this, [~aw] proposed in [YARN-6830] that we add the ability to 
> specify environment variables individually:
> {quote}e.g, mapreduce.map.env.[foo]=bar gets turned into foo=bar
> {quote}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: mapreduce-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: mapreduce-issues-h...@hadoop.apache.org

Reply via email to