线下的问题已解决,但我面临另一个问题。
我正在这样做:
DistributedCache.createSymlink(job.getConfiguration());
DistributedCache.addCacheFile(new URI
("hdfs:/user/hadoop/harsh/libnative1.so"),conf.getConfiguration());
在映射器中:
System.loadLibrary("libnative1.so");
(我也试过 System.loadLibrary("libnative1"); System.loadLibrary("native1");
但我收到此错误:
java.lang.UnsatisfiedLinkError: no libnative1.so in java.library.path
我完全不知道应该将 java.library.path 设置为什么。我尝试将其设置为 /home 并将每个 .so 从分布式缓存复制到 /home/ 但它仍然不起作用:(
请问有什么建议/解决方案吗?
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
我想设置运行映射器的机器的系统环境变量(特别是 LD_LIBRARY_PATH)。
我试过 :
Runtime run = Runtime.getRuntime();
Process pr=run.exec("export LD_LIBRARY_PATH=/usr/local/:$LD_LIBRARY_PATH");
但它会抛出 IOException。
我也知道
JobConf.MAPRED_MAP_TASK_ENV
但我使用的 hadoop 版本 0.20.2 有 Job & Configuration 而不是 JobConf。
我找不到任何这样的变量,这也不是 Hadoop 特定的环境变量,而是系统环境变量。
任何解决方案/建议?提前致谢..