sun*_*llp 6 c++ hadoop mapreduce
我有一个C++程序,我试图在hadoop上作为流媒体作业运行(它只有映射器,没有减速器).虽然简单的C++程序可以正常工作.与许多共享库链接的另一个C++程序无法在网格上运行.ldd在这个C++程序上显示如下:(它使用了许多第三方库,如opencv和boost_serialization)
/usr/local/lib/libboost_serialization.so.1.48.0 /usr/local/lib/libfftw3f.so.3 /usr/local/lib/libconfig++.so.9 /usr/local/lib/liblog4cpp.so.4 /usr/local/lib/libopencv_core.so.2.3 /usr/local/lib/libopencv_contrib.so.2.3
Run Code Online (Sandbox Code Playgroud)
我认为因为这些共享库没有安装在数据节点上,所以它失败了.我尝试将这些库放在tarball中,并使用-archives选项(分布式缓存)将其指定为流作业.这也不起作用(我不确定来自tarball的内容是否安装在数据节点上的相应目录中).
知道如何去做吗?
静态编译 C++ 程序。基本上:
g++ -o <progra> -static <object-files>
Run Code Online (Sandbox Code Playgroud)
这将生成一个没有依赖项的二进制文件。它会很笨重(strip在上面运行!),但如果它连续运行,就不会有问题。
| 归档时间: |
|
| 查看次数: |
1100 次 |
| 最近记录: |