hadoop - 在 hadoop reducer 中加载 native 库?

标签 hadoop mapreduce native

我有一个 native 库,我需要为我的 reduce 方法加载,我将它添加到分布式缓存中,但是当我在我的 map 方法中调用 System.loadLibrary(mylib.so) 时,我得到一个错误和失败的 map 任务:

Error: no mylib.so in java.library.path

即使我将它添加到分布式缓存中。我错过了一步吗?在我的工作配置中,我调用:

DistributedCache.addCacheFile(uri, job.getConfiguration());

其中uri是hadoop文件系统上mylib.so的路径。

这个本地库依赖于许多其他库,它们都存在于 hadoop fs 上我的/hadoop/fs/mystuff/libs 中。我将它们全部添加到分布式缓存中,我什至尝试使用 System.loadLibrary() 调用将它们全部加载到我的 reduce 任务中。但我一直收到同样的 java.library.path 错误。我还尝试将库作为命令行参数添加到 -files 标志,但我仍然收到上述错误。

最佳答案

虽然不确定为什么会发生这种情况,但请检查 How to Include Third-Party Libraries in Your Map-Reduce Job Cloudera 的博客条目。

关于hadoop - 在 hadoop reducer 中加载 native 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12962508/

相关文章:

hadoop - 如何在 dataproc 集群上重启 hadoop 服务

hadoop - ISO 日期格式的转换,从字符串到日期,给出错误?

hadoop - cassandra可以在非hadoop环境中工作吗

hadoop - 使用outputcollector映射WordCount示例

MapReduce 输入/输出为每个键值对发出

java - 为什么我使用 native 代码会收到此 UnsatisfiedLinkError?

hadoop - MapReduce寻找社交网络影响力

java - 如何将此旧的api mapreduce作业代码转换为新的mapreduce

android - 相机焦距

JavaScript 数组范围