本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
新增 Spark 步驟
您可以使用 Amazon EMR 步驟來將工作提交到在 EMR 叢集上安裝的 Spark 架構。如需詳細資訊,請參閱《Amazon EMR 管理指南》中的步驟。在主控台與 CLI 中,使用 Spark 應用程式步驟 (其會代表您執行 spark-submit
指令碼做為步驟),來完成此動作。您透過 API 呼叫,使用 spark-submit
來使用步驟以叫用 command-runner.jar
。
如需有關將應用程式提交到 Spark 的詳細資訊,請參閱 Apache Spark 文件中的提交應用程式
使用主控台來提交 Spark 步驟
在 https://console.aws.amazon.com/emr
:// 開啟 Amazon EMR 主控台。 -
在 Cluster List (叢集清單) 中,選擇您的叢集名稱。
-
向下捲動至 Steps (步驟) 區段並展開,接著選擇 Add step (新增步驟)。
-
在 Add Step (新增步驟) 對話方塊中:
-
在 Step type (步驟類型),選擇 Spark application (Spark 應用程式)。
-
對於 Name (名稱),接受預設名稱 (Spark 應用程式) 或輸入新名稱。
-
使用 Deploy mode (部署模式) 時,請選擇 Client (用戶端) 或 Cluster (叢集) 模式。用戶端模式會啟動叢集主要執行個體上的驅動程式程式,而叢集模式則會在該叢集上啟動您的驅動程式。對於客戶端模式,驅動程式的日誌輸出會出現在步驟日誌中,而對於叢集模式,驅動程式的日誌輸出會出現在第一個 YARN 容器的日誌中。如需詳細資訊,請參閱 Apache Spark 文件中的叢集模式概觀
。 -
指定所需的 Spark-submit 選項。如需有關
spark-submit
選項的詳細資訊,請參閱透過 spark-submit 啟動應用程式。 -
對於 Application location (應用程式位置),指定應用程式本機或 S3 URI 路徑。
-
針對 Arguments (引數),將欄位保留空白。
-
針對 Action on failure (失敗的動作),接受預設選項 (Continue (繼續))。
-
-
選擇新增。該步驟會出現在主控台中,且狀態為待定。
-
隨著步驟的執行,步驟的狀態會依序從 Pending (待定)、Running (執行中) 變成 Completed (完成)。若要更新狀態,您可以選擇 Actions (動作) 欄上的 Refresh (重新整理) 圖示。
-
如果您有設定記錄,步驟結果會位於日誌檔案下步驟旁 Amazon EMR 主控台的「叢集詳細資訊」頁面中。您可以在啟動叢集時設定的日誌儲存貯體中選擇尋找步驟資訊。
使用 將工作提交至 Spark AWS CLI
當您建立叢集,或是在現有叢集中使用 aws emr
add-steps
子指令時提交步驟。
-
如下列範例所示,使用
create-cluster
。注意
包含 Linux 行接續字元 (\) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows,請將其移除或取代為插入符號 (^)。
aws emr create-cluster --name "Add Spark Step Cluster" --release-label
emr-7.7.0
--applications Name=Spark \ --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \ --steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,Args=[--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/examples/jars/spark-examples.jar,10] --use-default-roles替代方案是如下列範例所示,使用
command-runner.jar
。aws emr create-cluster --name "Add Spark Step Cluster" --release-label
emr-7.7.0
\ --applications Name=Spark --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \ --steps Type=CUSTOM_JAR,Name="Spark Program",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[spark-example,SparkPi,10] --use-default-roles注意
包含 Linux 行接續字元 (\) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows,請將其移除或取代為插入符號 (^)。
-
或者,將步驟新增至執行中的叢集。請使用
add-steps
。aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,Args=[--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/examples/jars/spark-examples.jar,10]
替代方案是如下列範例所示,使用
command-runner.jar
。aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=CUSTOM_JAR,Name="Spark Program",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[spark-example,SparkPi,10]
若要使用適用於 Java 的 SDK 將工作提交給 Spark
-
以下範例說明如何使用 Java 透過 Spark 新增叢集步驟。
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); AmazonElasticMapReduce emr = new AmazonElasticMapReduceClient(credentials); StepFactory stepFactory = new StepFactory(); AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials); AddJobFlowStepsRequest req = new AddJobFlowStepsRequest(); req.withJobFlowId("j-
1K48XXXXXXHCB
"); List<StepConfig> stepConfigs = new ArrayList<StepConfig>(); HadoopJarStepConfig sparkStepConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("spark-submit","--executor-memory","1g","--class","org.apache.spark.examples.SparkPi","/usr/lib/spark/examples/jars/spark-examples.jar","10"); StepConfig sparkStep = new StepConfig() .withName("Spark Step") .withActionOnFailure("CONTINUE") .withHadoopJarStep(sparkStepConf); stepConfigs.add(sparkStep); req.withSteps(stepConfigs); AddJobFlowStepsResult result = emr.addJobFlowSteps(req); -
檢查步驟日誌以查看步驟的結果。 AWS Management Console 如果您已啟用記錄,則可以在 中執行此操作,方法是選擇步驟、選擇步驟,然後在日誌檔案中選擇
stdout
或stderr
。若要查看可用的日誌,請選擇 View Logs (檢視日誌)。
覆寫 Spark 預設組態設定
您可以根據每個應用程式覆寫 Spark 預設組態值。您可以使用基本上會將選項傳遞至 spark-submit
的步驟來在提交應用程式時這麼做。例如,您可以想要透過變更 spark.executor.memory
來變更對執行器程序分配的記憶體。您可以使用如下引數提供 --executor-memory
參數:
spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10
同樣地,您可以微調 --executor-cores
和 --driver-memory
。在步驟中,您會將下列引數提供給步驟:
--executor-memory 1g --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10
您可以使用 --conf
選項來微調可能沒有內建參數的設定。如需有關其他可微調設定的詳細資訊,請參閱 Apache Spark 文件中的動態載入 Spark 屬性