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

Nie*_*Tax 6 azure hdinsight apache-spark

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

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

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

提前谢谢了!

loc*_*obr 3

您可以在 hdinsight 集群上安装 Spark。您必须通过 创建自定义集群并添加一个操作脚本来完成此操作,该脚本将在为集群创建 VM 时在集群上安装 Spark。

要在集群安装上使用操作脚本进行安装非常简单,您可以在 C# 或 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
Run Code Online (Sandbox Code Playgroud)

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.
));
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过 RDP 进入头节点并使用 Spark-Shell 或使用 Spark-Submit 来运行作业。我不确定如何运行 Spark 作业而不是 rdp 到头节点,但这是另一个问题。