簡體   English   中英

在HDInsight群集上遠程執行Spark作業

[英]Remotely execute a Spark job on an HDInsight cluster

我試圖從Microsoft Azure自動在HDInsight群集上啟動Spark作業。 我知道有幾種方法可以自動化Hadoop作業提交(由Azure本身提供),但到目前為止,我還沒有找到一種方法來遠程運行Spark作業,而無需使用主實例設置RDP。

有沒有辦法實現這個目標?

Spark-jobserver提供RESTful接口,用於提交和管理Apache Spark作業,jar和作業上下文。

https://github.com/spark-jobserver/spark-jobserver

我的解決方案是使用Scheduler和Spark-jobserver定期啟動Spark-job。

在撰寫本文時,似乎沒有正式的方法來實現這一目標。 然而,到目前為止,我已經能夠以某種方式使用Oozie shell工作流遠程運行Spark作業。 它只不過是一個補丁,但到目前為止它對我有用。 這些是我遵循的步驟:

先決條件

  • 微軟Powershell
  • Azure Powershell

處理

定義Oozie工作流* .xml *文件:

<workflow-app name="myWorkflow" xmlns="uri:oozie:workflow:0.2">
  <start to = "myAction"/>
  <action name="myAction">
        <shell xmlns="uri:oozie:shell-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
            <exec>myScript.cmd</exec>
            <file>wasb://myContainer@myAccount.blob.core.windows.net/myScript.cmd#myScript.cmd</file>
            <file>wasb://myContainer@myAccount.blob.core.windows.net/mySpark.jar#mySpark.jar</file>
        </shell>
        <ok to="end"/>
        <error to="fail"/>
    </action>
    <kill name="fail">
        <message>Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name="end"/>
</workflow-app>   

請注意,無法識別要在哪個HDInsight節點上執行腳本,因此有必要將它與Spark應用程序.jar一起放在wasb存儲庫中。 然后將其重定向到執行Oozie作業的本地目錄。

定義自定義腳本

C:\apps\dist\spark-1.2.0\bin\spark-submit --class spark.azure.MainClass
                                          --master yarn-cluster 
                                          --deploy-mode cluster 
                                          --num-executors 3 
                                          --executor-memory 2g 
                                          --executor-cores 4 
                                          mySpark.jar  

有必要將.cmdSpark .jar上傳到wasb存儲庫(此答案中未包含的進程),具體到工作流中指向的方向:

wasb://myContainer@myAccount.blob.core.windows.net/

定義powershell腳本

powershell腳本非常取自官方Oozie的HDInsight教程。 由於它與我的方法幾乎完全相同,因此我不在此答案中包含腳本。

我在天藍色反饋門戶上提出了一個新的建議,表明需要官方支持遠程Spark作業提交。

2016年8月17日更新:我們的火花群集現在包括一個Livy服務器,它提供休息服務以提交火花作業。 您也可以通過Azure Data Factory自動執行spark作業。


原帖:1)目前不支持針對spark的遠程作業提交。

2)如果您希望每次都自動設置主設備(即每次執行時添加--master yarn-client),您可以使用以下配置在%SPARK_HOME \\ conf \\ spark-defaults.conf文件中設置值:

spark.master紗線客戶端

您可以在apache spark網站上找到有關spark-defaults.conf的更多信息。

3)如果要在部署時將其自動添加到spark-defaults.conf文件,請使用群集自定義功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM