如何在Azure HDInsight上向Apache Hadoop YARN提交Apache Spark作业

时间:2014-07-10 09:14:21

标签: azure apache-spark hdinsight

我很高兴HDInsight切换到Hadoop版本2,它通过YARN支持Apache Spark。对于我想要执行的任务,Apache Spark是一个比MapReduce更好的并行编程范例。

我无法找到任何关于如何将Apache Spark作业提交到我的HDInsight群集的文档。对于标准MapReduce作业的远程作业提交,我知道有几个REST端点,如Templeton和Oozie。但至于我能够找到的,通过Templeton无法运行Spark工作。我确实发现可以将Spark工作整合到Oozie中,但我已经读到这是一件非常繁琐的事情,而且我还读过一些工作失败检测的报告,在这种情况下无效。

可能必须有更合适的方式来提交Spark作业。有谁知道如何将Apache Spark作业的远程作业提交到HDInsight?

非常感谢提前!

3 个答案:

答案 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人员提出同样的问题。以下是他们的解决方案:

"关于该主题的两个问题:1。如何在没有" Remote to ..." - Tao Li

目前,不支持此功能。一种解决方法是自己构建作业提交Web服务:

  1. 创建将使用Spark API在群集上启动作业的Scala Web服务。
  2. 在与群集相同的VNet内的VM中托管此Web服务。
  3. 通过某种身份验证方案在外部公开Web服务端点。你也可以使用中间地图减少工作,但这需要更长的时间。

答案 2 :(得分:-1)

您可以考虑使用Brisk(https://brisk.elastatools.com),它提供Azure上的Spark作为配置服务(提供支持)。有一个免费的层,它允许你使用wasb:// path / to / files来访问blob存储,就像HDInsight一样。

它并不适合YARN;相反,它是Spark的轻量级和Azure分布。

免责声明:我参与该项目!

祝福,

安迪