1

我正在尝试使用现有(独立)火花集群(在 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 路径中,或者我可以将它们放在“常规”文件系统上的某个合理位置。

简而言之,我正在寻找不需要 HDFS 的确认以及可以在某个位置运行 exe 的简单单行提交示例。可悲的是,我尝试过的组合对我不起作用。

4

1 回答 1

0

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

  • 创建使用单声道启动可执行文件的 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.configappSettings 中设置以下值:

<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 将应用程序分发给工作人员。不知道能不能避免。

于 2017-02-08T10:19:22.520 回答