Search code examples
javahadoopoozieoozie-workflow

Oozie setting LD_LIBRARY_PATH


I am running a java program (not MR) via oozie. This is referring to some native libraries and I tried setting the following

    <configuration>
                    <property>
                        <name>mapreduce.map.env</name>
                        <value>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/tableau/</value>
                    </property>
                    <property>
                        <name>mapreduce.child.env</name>
                        <value>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/tableau/</value>
                    </property>
                    <property>
                        <name>mapreduce.admin.user.env</name>
                        <value>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/tableau/</value>
                    </property>
                    <property>
                        <name>mapreduce.reduce.env</name>
                        <value>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/tableau/</value>
                    </property>
                    <property>
                        <name>mapred.child.java.opts</name>
                        <value>-Djava.library.path=/usr/lib/tableau/</value>
                    </property>
</configuration>

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/tableau/

Anyhow my program does not seem to read these path and I am getting the error

java.lang.UnsatisfiedLinkError: Unable to load library 'TableauHyperExtract': libTableauHyperExtract.so: cannot open shared object file: No such file or directory
    at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:194)
    at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:283)
    at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:244)
    at com.sun.jna.Native.register(Native.java:1065)
    at com.tableausoftware.hyperextract.ExtractAPI.<clinit>(Unknown Source)

Solution

  • I prefixed the properties with oozie.launcher as suggested by @SamsonScharfrichter and it works perfect.

     <property>
       <name>oozie.launcher.mapreduce.map.env</name>
       <value>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/tableau/</value>
    </property>