0

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)
OneCricketeer
  • 179,855
  • 19
  • 132
  • 245
nnc
  • 790
  • 2
  • 14
  • 31
  • 1
    **1.** Are you sure that Tableau is installed on all cluster nodes? **2.** Are you aware that the Oozie launcher ignores standard Hadoop properties and enforces only props prefixed by `oozie.launcher.` ? _(not documented, alas... but there are multiple posts about that on StackOverflow)_ ? – Samson Scharfrichter Mar 19 '18 at 15:41
  • 1
    Cf. https://stackoverflow.com/questions/32438052/job-queue-for-hive-action-in-oozie for instance – Samson Scharfrichter Mar 19 '18 at 15:44
  • @SamsonScharfrichter - Adding oozie.launcher works. It was difficult as I could not find a documentation for this. Thanks for pointing this out. – nnc Mar 19 '18 at 18:19

1 Answers1

0

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>
nnc
  • 790
  • 2
  • 14
  • 31