我很高兴HDInsight切换到Hadoop版本2,它通过YARN支持Apache Spark。对于我想要执行的任务,Apache Spark是一个比MapReduce更好的并行编程范例。
我无法找到任何关于如何将Apache Spark作业提交到我的HDInsight群集的文档。对于标准MapReduce作业的远程作业提交,我知道有几个REST端点,如Templeton和Oozie。但至于我能够找到的,通过Templeton无法运行Spark工作。我确实发现可以将Spark工作整合到Oozie中,但我已经读到这是一件非常繁琐的事情,而且我还读过一些工作失败检测的报告,在这种情况下无效。
可能必须有更合适的方式来提交Spark作业。有谁知道如何将Apache Spark作业的远程作业提交到HDInsight?
非常感谢提前!
答案 0 :(得分:3)
您可以在hdinsight群集上安装spark。您必须在creating a custom cluster之前执行此操作并添加一个操作脚本,该脚本将在为群集创建VM时在群集上安装Spark。
集群安装上的install with an action script非常简单,只需在标准的自定义创建集群脚本/程序中添加几行代码,就可以在C#或powershell中完成。
的powershell:
# ADD SCRIPT ACTION TO CLUSTER CONFIGURATION
$config = Add-AzureHDInsightScriptAction -Config $config -Name "Install Spark" -ClusterRoleCollection HeadNode -Urin https://hdiconfigactions.blob.core.windows.net/sparkconfigactionv02/spark-installer-v02.ps1
C#:
// ADD THE SCRIPT ACTION TO INSTALL SPARK
clusterInfo.ConfigActions.Add(new ScriptAction(
"Install Spark", // Name of the config action
new ClusterNodeType[] { ClusterNodeType.HeadNode }, // List of nodes to install Spark on
new Uri("https://hdiconfigactions.blob.core.windows.net/sparkconfigactionv02/spark-installer-v02.ps1"), // Location of the script to install Spark
null //because the script used does not require any parameters.
));
然后您可以将RDP导入headnode并运行使用spark-shell或使用spark-submit来运行作业。我不确定如何运行spark工作而不是rdp进入headnode,但这是另一个问题。
答案 1 :(得分:0)
我也向Azure人员提出同样的问题。以下是他们的解决方案:
目前,不支持此功能。一种解决方法是自己构建作业提交Web服务:
答案 2 :(得分:-1)
您可以考虑使用Brisk(https://brisk.elastatools.com),它提供Azure上的Spark作为配置服务(提供支持)。有一个免费的层,它允许你使用wasb:// path / to / files来访问blob存储,就像HDInsight一样。
它并不适合YARN;相反,它是Spark的轻量级和Azure分布。
免责声明:我参与该项目!
祝福,
安迪