Mobius SparkClr入门(在Linux上)

时间:2017-01-26 21:08:02

标签: apache-spark mobius

我希望尝试使用现有的(独立的)spark集群(在Ubuntu Linux上)的C#驱动程序,我通过python或scala愉快地进行交互。

我不清楚如何运行一个简单的c#示例,已将最新的Mobius版本下载到linux框中。我不清楚的是clr spark提交所需的两个额外参数(超出通常所需的参数)。当我尝试按照文档记录提交参数时(或者我误解了指令),我遇到了各种错误。

首先,对于--exe,只需指向.exe文件或是否需要传递; --exe [mono] [my_app.exe] [params] 其次,remote-spark-clr似乎坚持HDFS路径,但我在没有HDFS的情况下运行spark。 HDFS真的有必要吗? 第三,与问题(二)相关,如果为工人分配exe /包,那么这些也必须在hdfs路径中,或者我可以把它们放在#34;常规"文件系统。

简而言之,我正在寻找不需要HDFS的确认和一个简单的单行提交示例,它可以在某个位置运行exe。我试过的组合对我来说不是很好。

1 个答案:

答案 0 :(得分:0)

在Linux上运行Mobius需要一个小技巧:

  • 创建使用mono
  • 启动可执行文件的shell脚本
  • 将扩展名.exe添加到您的shell脚本中,以便sparkclr-submit接受它们。
  • 确保您的shell脚本是linux编码的 - 当他们有CRLF行结尾时我们遇到了问题。

如果您的应用程序名为Driver.exe,我建议使用以下内容创建文件driver.sh.exe

#!/bin/sh
exec mono ./Driver.exe "$@"

同样,使用以下内容创建文件CSharpDriver.sh.exe

#!/bin/sh
exec mono ./CSharpWorker.exe "$@"

App.config中,在appSettings中设置以下值:

<add key="CSharpWorkerPath" value="CSharpWorker.sh.exe"/>

最后,在提交申请时,请使用以下参数:

$SPARKCLR_HOME/scripts/sparkclr-submit.sh \
--master yarn \
--deploy-mode client \
--exe driver.sh.exe \
/path/to/driver

请注意, - exe参数只接受文件名,路径是下一个参数。

您可以将应用程序放在常规文件系统上(不需要使用HDFS),但根据我的经验,Mobius将在内部使用HDFS将应用程序分发给工作人员。我不知道你是否可以避免它。