hadoop-mapreduce-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Kozlov <ale...@cloudera.com>
Subject Re: Hadoop Mapreduce jobs and LD_LIBRARY_PATH
Date Mon, 02 May 2011 15:07:39 GMT
Try adding -Djava.library.path=... to the *mapred.child.java.opts* string.
Otherwise, upgrade to 0.21.

On Mon, May 2, 2011 at 2:24 AM, Donatella Firmani <
donatellafirmani@yahoo.com> wrote:

>  Hi Alex,
>
> thanks for your reply. The value of *mapred.child.java.opts* in the
> job.xml is just -Xmx200m.
>
> Yes, for "standalone" I mean exactly a single JVM. To test my program in
> this environment I followed the mepreduce tutorial at the section "Standalone
> Operation".
>
> With a single JVM my program, if I - instead exporting the LD_LIBRARY_PATH
> - use the "-Djava.library.path=..."
> option of the bin/hadoop command, does not work. Same situation with a
> similar experiment, i.e. using the option  "-Dmapred.child.env="
> LD_LIBRARY_PATH=....".
> It works just if I explicitly set the system environment variable
> LD_LIBRARY_PATH.
>
> Do you think that using the 0.21 could be a good idea?
>
> Thanks,
> DF
>
>
> ------------------------------
> *From:* Alex Kozlov <alexvk@cloudera.com>
> *To:* mapreduce-user@hadoop.apache.org
> *Sent:* Mon, May 2, 2011 5:11:08 AM
>
> *Subject:* Re: Hadoop Mapreduce jobs and LD_LIBRARY_PATH
>
> And what is the value of *mapred.child.java.opts* in the job.xml?  Is it
> something like `-Djava.library.path=...`?  The problem might be that *
> mapred.child.env* was introduced only in 0.21.
>
> I assume by the "standalone" installation you mean a single JVM.  Does your
> program works with -Dava.library.path=... in this environment?
>
> On Sun, May 1, 2011 at 9:01 AM, Donatella Firmani <
> donatellafirmani@yahoo.com> wrote:
>
>>
>> Maybe can help that in a standalone installation of hadoop map reduce it
>> works.
>> I know that it is trivial because it is sufficient to type "export
>> LD_LIBRARY_PATH=..." in the user shell...
>> It is just to be sure that I did not forget anything that may be useful.
>>
>> Cheers,
>> DF
>>
>> ------------------------------
>> *From:* Donatella Firmani <donatellafirmani@yahoo.com>
>> *To:* mapreduce-user@hadoop.apache.org
>> *Sent:* Sun, May 1, 2011 2:32:03 PM
>>
>> *Subject:* Re: Hadoop Mapreduce jobs and LD_LIBRARY_PATH
>>
>> Dear Alex,
>>
>> thanks for you kind assistance.
>>
>> I ran the job giving the option with a -Dmapred.child.env="
>> LD_LIBRARY_PATH=/home/mylibpath1/lib1;home/mylibpath2/lib2;home/mylibpath3/lib3"
>> flag.
>>
>> Checking the job.xml file via JT UI, I can verify that the parameters have
>> the correct values for the job.
>> There appears a line with :
>>
>> mapred.child.env
>>
>> LD_LIBRARY_PATH=/home/mylibpath1/lib1;home/mylibpath2/lib2;home/
>> mylibpath3/lib3
>>
>> Unfortunately, the value of the call System.getenv("LD_LIBRARY_PATH") is
>> different (without the libs) and so the job does not still work.
>>
>> What do you think about it?
>> Cheers,
>> DF
>>
>> ------------------------------
>> *From:* Alex Kozlov <alexvk@cloudera.com>
>> *To:* mapreduce-user@hadoop.apache.org
>> *Sent:* Fri, April 29, 2011 8:01:30 PM
>> *Subject:* Re: Hadoop Mapreduce jobs and LD_LIBRARY_PATH
>>
>> The next step is to find the job.xml file and check (either in the
>> mapred.local.dir in local FS or in the JT web UI)...
>>
>> On Fri, Apr 29, 2011 at 10:59 AM, Donatella Firmani <
>> donatellafirmani@yahoo.com> wrote:
>>
>>> Dear Alex,
>>>
>>> that's exactly the point. I made my mapper process dump on log files the
>>> result of
>>>
>>> System.getenv("LD_LIBRARY_PATH")
>>> System.getProperty("java.library.path")
>>>
>>> and none of the values seem to be affected neither by the setting of mapred.child.java.opts
>>> or of mapred.child.env. in the mapred-site.xml file.
>>>
>>> Maybe is there something else that I have to do to make LD_LIBRARY_PATH
>>> in the JVM environment be correctly set? There are some restrictions on
>>> the values that it can assume (i.e. under HDFS an non in the FS of the
>>> node)?
>>>
>>> Cheers,
>>> DF
>>>
>>> ------------------------------
>>> *From:* Alex Kozlov <alexvk@cloudera.com>
>>> *To:* mapreduce-user@hadoop.apache.org
>>> *Sent:* Fri, April 29, 2011 7:52:19 PM
>>>
>>> *Subject:* Re: Hadoop Mapreduce jobs and LD_LIBRARY_PATH
>>>
>>> The option should be passed to the child JVM environment when it is
>>> started.  You can set most of the environment variables to garbage with no
>>> side-effect.  A more important question what is the LD_LIBRARY_PATH in
>>> your JVM environment.
>>>
>>> Once again, check the job.xml file in the mapred.local.dir (should be
>>> /tmp/cache/${user.name}/... or something like this in the pseudo-config
>>> environment) or try to print out the environment variables directly in your
>>> map/reduce task.
>>>
>>> Alex K
>>>
>>> On Fri, Apr 29, 2011 at 10:37 AM, Donatella Firmani <
>>> donatellafirmani@yahoo.com> wrote:
>>>
>>>> I just tried giving the option -Dmapred.child.env="LD_LIBRARY_PATH=/
>>>> home/mylibpath1/lib1;home/mylibpath2/lib2;home/mylibpath3/lib3" writing
>>>> no-sense environment variables like  -Dmapred.child.env="blahblablah".
>>>>
>>>> It continues working... so I think that the option is completely ignored
>>>> by the bin/hadoop script.
>>>>
>>>> Do you think it is an expected behavior?
>>>>
>>>> Cheers,
>>>> DF
>>>>
>>>> ------------------------------
>>>> *From:* Alex Kozlov <alexvk@cloudera.com>
>>>>
>>>> *To:* mapreduce-user@hadoop.apache.org
>>>> *Sent:* Fri, April 29, 2011 7:03:50 PM
>>>>
>>>> *Subject:* Re: Hadoop Mapreduce jobs and LD_LIBRARY_PATH
>>>>
>>>> You need only to edit the config files on the client or give the option
>>>> with a -Dmapred.child.env="LD_LIBRARY_PATH=/home/mylibpath1/lib1;home/
>>>> mylibpath2/lib2;home/mylibpath3/lib3" flag (if you implement Tool).
>>>> You can check the job.xml file via JT UI to verify that the parameters have
>>>> the correct values for the job.
>>>>
>>>> On Fri, Apr 29, 2011 at 9:05 AM, Donatella Firmani <
>>>> donatellafirmani@yahoo.com> wrote:
>>>>
>>>>> Dear Yin,
>>>>>
>>>>> Good point: I can try to install 0.19 and reproduce the problem. I'll
>>>>> let you know ASAP.
>>>>>
>>>>> Thanks,
>>>>> DF
>>>>>
>>>>>
>>>>> ------------------------------
>>>>> *From:* Yin Lou <yin.lou.07@gmail.com>
>>>>>
>>>>> *To:* mapreduce-user@hadoop.apache.org
>>>>> *Sent:* Fri, April 29, 2011 5:59:14 PM
>>>>> *Subject:* Re: Hadoop Mapreduce jobs and LD_LIBRARY_PATH
>>>>>
>>>>> Just curious, can we do this in 0.19?
>>>>>
>>>>> Thanks,
>>>>> Yin
>>>>>
>>>>> On Fri, Apr 29, 2011 at 10:29 AM, Robert Evans <evans@yahoo-inc.com>wrote:
>>>>>
>>>>>>  DF,
>>>>>>
>>>>>> You can set mapred.child.java.opts to set java options, but you can
>>>>>> also set mapred.child.env to set environment variables, be careful
because
>>>>>> they are space separated with an = in between them.
>>>>>>
>>>>>>      <property>
>>>>>>
>>>>>>    <name>mapred.child.env</name>
>>>>>>
>>>>>>     <value>LD_LIBRARY_PATH=/home/mylibpath1/lib1;home/mylibpath2/lib2;home/mylibpath3/lib3</value>
>>>>>>
>>>>>>     </property>
>>>>>>
>>>>>> --Bobby
>>>>>>
>>>>>>
>>>>>> On 4/29/11 5:58 AM, "Donatella Firmani" <donatellafirmani@yahoo.com>
>>>>>> wrote:
>>>>>>
>>>>>> To solve the issue addressed in my previous message, i tried setting
>>>>>> property
>>>>>> mapred.child.java.opts in mapred-site.xml. But - even if it seems
the
>>>>>> right
>>>>>> approach in relation to what said in blogs & forums - there is
a big
>>>>>> problem
>>>>>> with it.
>>>>>>
>>>>>> Following the tutorial (hadoop website) as section Task Execution
&
>>>>>> Environment,
>>>>>>
>>>>>> my xml looks like:
>>>>>>
>>>>>> <configuration>
>>>>>>      <property>
>>>>>>          <name>mapred.job.tracker</name>
>>>>>>          <value>localhost:9001</value>
>>>>>>      </property>
>>>>>>      <property>
>>>>>>          <name>mapred.child.java.opts</name>
>>>>>>          <value>
>>>>>>
>>>>>> -Djava.library.path=/home/mylibpath1/lib1;home/mylibpath2/lib2;home/mylibpath3/lib3
>>>>>>
>>>>>>
>>>>>>          </value>
>>>>>>      </property>
>>>>>> </configuration>
>>>>>>
>>>>>> The problem arises when executing the job, because it is thrown an
>>>>>> exception:
>>>>>>
>>>>>> Exception in thread "main" java.lang.NoClassDefFoundError:
>>>>>>
>>>>>> -Djava/library/path=/home/mylibpath1/lib1;home/mylibpath2/lib2;home/mylibpath3/lib3
>>>>>>
>>>>>>
>>>>>>
>>>>>> Any help would be appreciated.
>>>>>> Thanks in advance,
>>>>>>
>>>>>> DF
>>>>>>
>>>>>>
>>>>>>
>>>>>> ----- Original Message ----
>>>>>> From: Donatella Firmani <donatellafirmani@yahoo.com>
>>>>>> To: mapreduce-user@hadoop.apache.org
>>>>>> Sent: Fri, April 29, 2011 12:57:52 PM
>>>>>> Subject: Hadoop Mapreduce jobs and LD_LIBRARY_PATH
>>>>>>
>>>>>>
>>>>>>
>>>>>> Hi to all,
>>>>>>
>>>>>> I just subscribed to this mailing list and I'd like to ask you if
>>>>>> anyone knows
>>>>>> how to deal with LD_LIBRARY_PATH.
>>>>>> I have a Java application that needs a proper setting of this
>>>>>> environment
>>>>>> variable to work under Linux-Ubuntu.
>>>>>> I want to use tis application from a mapreduce job, unfortunately
I
>>>>>> could not
>>>>>> find a way to make things work against the LD_LIBRARY_PATH environment
>>>>>> variable.
>>>>>>
>>>>>> I tried so many different strategies and I am stuck. Maybe someone
of
>>>>>> you can
>>>>>> help.
>>>>>>
>>>>>> Thanks in advance,
>>>>>> Cheers.
>>>>>>
>>>>>> DF
>>>>>>
>>>>>> PS: I use hadoop-0-20-2
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Mime
View raw message