在hadoop reducer中加载本机库?
我需要为reduce方法加载一个本机库,并将其添加到分布式缓存中,但当我在映射方法中调用System.loadLibrary(mylib.so)时,我收到一个错误,映射任务失败:在hadoop reducer中加载本机库?,hadoop,mapreduce,native,Hadoop,Mapreduce,Native,我需要为reduce方法加载一个本机库,并将其添加到分布式缓存中,但当我在映射方法中调用System.loadLibrary(mylib.so)时,我收到一个错误,映射任务失败: Error: no mylib.so in java.library.path 即使我将其添加到分布式缓存中。我漏了一步吗?在我的作业配置中,我调用: DistributedCache.addCacheFile(uri, job.getConfiguration()); 其中uri是hadoop文件系统上mylib
Error: no mylib.so in java.library.path
即使我将其添加到分布式缓存中。我漏了一步吗?在我的作业配置中,我调用:
DistributedCache.addCacheFile(uri, job.getConfiguration());
其中uri是hadoop文件系统上mylib.so的路径
这个本机库依赖于许多其他库,它们都存在于hadoop fs上的my/hadoop/fs/mystuff/libs上。我将它们全部添加到分布式缓存中,甚至尝试使用System.loadLibrary()调用在reduce任务中加载它们。但我一直得到相同的java.library.path错误。我还尝试将这些库作为命令行参数添加到-files标志中,但仍然出现上述错误。虽然不确定发生这种情况的原因,但请查看Cloudera的博客条目。您是否尝试独立编写代码,而不是在map reduce中编写?据我所知,System.loadLibrary期望库名不带“.so”或“.dll”后缀…以上链接似乎已断开。新链接: