Oozie 设置 LD_LIBRARY_PATH

Posted

技术标签:

【中文标题】Oozie 设置 LD_LIBRARY_PATH【英文标题】:Oozie setting LD_LIBRARY_PATH 【发布时间】:2018-03-16 21:14:33 【问题描述】:

我正在通过 oozie 运行一个 java 程序(不是 MR)。这是指一些本机库,我尝试设置以下内容

    <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/

无论如何我的程序似乎没有读取这些路径,我得到了错误

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)

【问题讨论】:

1. 您确定 Tableau 已安装在所有群集节点上吗? 2. 您是否知道 Oozie 启动器会忽略标准 Hadoop 属性并仅强制使用前缀为 oozie.launcher. 的道具? (没有记录,唉……但 *** 上有很多关于此的帖子) ? 参见。以***.com/questions/32438052/… 为例 @SamsonScharfrichter - 添加 oozie.launcher 有效。这很困难,因为我找不到这方面的文档。感谢您指出这一点。 【参考方案1】:

按照@SamsonScharfrichter 的建议,我在属性前面加上了 oozie.launcher,它运行良好。

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

【讨论】:

以上是关于Oozie 设置 LD_LIBRARY_PATH的主要内容,如果未能解决你的问题,请参考以下文章

Oozie 设置 LD_LIBRARY_PATH

Oozie 触发 MapReduce 主类

Spark教程——Oozie编排Spark任务

Azkaban和Oozie的区别

创建 oozie 数据库架构时出错

工作流引擎Oozie:coordinator