You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-issues@hadoop.apache.org by "Enis Soztutar (JIRA)" <ji...@apache.org> on 2013/11/02 03:00:18 UTC

[jira] [Commented] (MAPREDUCE-5451) MR uses LD_LIBRARY_PATH which doesn't mean anything in Windows

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

Enis Soztutar commented on MAPREDUCE-5451:
------------------------------------------

We need this in Hbase since the unit tests that uses a MiniMRCluster fails to run any jobs because the native libraries cannot be referenced. 
{code}
Hbase unit tests with MR are failing right now:
2013-10-25 19:00:22,641 WARN  [ContainersLauncher #0] nodemanager.DefaultContainerExecutor(207): Exit code from container container_1382752780780_0001_01_000002 is : 137
Error: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
{code}

However, why are we not using java.library.path from the parent job, and start the child tasks with it, instead of doing a platform dependent env-variable approach ?  

> MR uses LD_LIBRARY_PATH which doesn't mean anything in Windows
> --------------------------------------------------------------
>
>                 Key: MAPREDUCE-5451
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-5451
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>    Affects Versions: 3.0.0, 2.1.1-beta
>         Environment: Windows
>            Reporter: Mostafa Elhemali
>            Assignee: Yingda Chen
>         Attachments: MAPREDUCE-5451-2.patch, MAPREDUCE-5451-3.patch, MAPREDUCE-5451-4.patch, MAPREDUCE-5451-5.patch, MAPREDUCE-5451-6.patch, MAPREDUCE-5451.patch, YARN-729.patch
>
>
> In order to set the path for loading native libraries, MR relies on the default value of the mapreduce.admin.user.env configuration setting the LD_LIBRARY_PATH environment entry. There are two problems with this setting in Windows:
> a) LD_LIBRARY_PATH doesn't mean anything in Windows.
> b) It sets it using $HADOOP_COMMON_HOME, instead of %HADOOP_COMMON_HOME%.
> The default value here should be platform-dependent (use the PATH variable in Windows instead of LD_LIBRARY_PATH), or we should rely on another mechanism. The net effect is that in Windows unless this configuration is over-ridden MR jobs fail with this error:
> {code}
> 2013-05-29 13:51:41,049 FATAL [main] org.apache.hadoop.mapred.YarnChild: Error running child : java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
> 	at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
> 	at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:393)
> 	at org.apache.hadoop.fs.FileUtil.canRead(FileUtil.java:928)
> 	at org.apache.hadoop.util.DiskChecker.checkAccessByFileMethods(DiskChecker.java:177)
> 	at org.apache.hadoop.util.DiskChecker.checkDirAccess(DiskChecker.java:164)
> 	at org.apache.hadoop.util.DiskChecker.checkDir(DiskChecker.java:98)
> 	at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.confChanged(LocalDirAllocator.java:288)
> 	at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathToRead(LocalDirAllocator.java:431)
> 	at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathToRead(LocalDirAllocator.java:164)
> 	at org.apache.hadoop.mapred.YarnChild.configureLocalDirs(YarnChild.java:235)
> 	at org.apache.hadoop.mapred.YarnChild.configureTask(YarnChild.java:294)
> 	at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:143)
> {code}



--
This message was sent by Atlassian JIRA
(v6.1#6144)