我想我应该试试hadoop,用c#二进制文件作为-mapper和-reducer。不幸的是,流媒体jar似乎不能接受c#exes。有什么方法可以让hadoop更好地使用c代码?
rbl8hiat1#
基本上问题是.exe文件在linux上不可执行。。。你可以尝试葡萄酒,但是,我不确定标准的输入和标准的输出流是否可以很好地工作,这就是流所使用的。当您使用流媒体时(以非常简化的方式),会发生以下情况:
cat inputfile > mapper > reducer > output
这里的mapper和reducer是必须由操作系统运行的程序。所以装酒,试试看 -mapper "wine your_program.exe" 而不是 -mapper your_program.exe . 问题是,wine应该安装在所有worker节点上,而且您可能需要修复与wine使用相关的问题。。。我鼓励你先用一个简单的东西来尝试hadoop流媒体。。。例如,shell脚本、python或其他在工作节点上开箱即用的东西。
-mapper "wine your_program.exe"
-mapper your_program.exe
y53ybaqx2#
到目前为止,最好的解决方案(尽管我很乐意这样称呼它)是制作一个shell脚本来调用c可执行文件,并将其传递到hadoop的流jar中。
2条答案
按热度按时间rbl8hiat1#
基本上问题是.exe文件在linux上不可执行。。。你可以尝试葡萄酒,但是,我不确定标准的输入和标准的输出流是否可以很好地工作,这就是流所使用的。
当您使用流媒体时(以非常简化的方式),会发生以下情况:
这里的mapper和reducer是必须由操作系统运行的程序。
所以装酒,试试看
-mapper "wine your_program.exe"
而不是-mapper your_program.exe
. 问题是,wine应该安装在所有worker节点上,而且您可能需要修复与wine使用相关的问题。。。我鼓励你先用一个简单的东西来尝试hadoop流媒体。。。例如,shell脚本、python或其他在工作节点上开箱即用的东西。
y53ybaqx2#
到目前为止,最好的解决方案(尽管我很乐意这样称呼它)是制作一个shell脚本来调用c可执行文件,并将其传递到hadoop的流jar中。