AnalyticDB for MySQL提供Spark-Submit命令列工具,當您在通過用戶端串連叢集進行Spark開發時,需要藉助該命令列工具提交Spark應用。本文介紹如何通過AnalyticDB for MySQL的Spark-Submit命令列工具進行Spark應用開發。
前提條件
叢集的產品系列為湖倉版。
已建立Job型資源群組。具體操作,請參見建立資源群組。
叢集與OSS儲存空間位於相同地區。
已安裝JDK,且JDK的版本為1.8及以上版本。
注意事項
通過Spark-Submit命令列工具進行作業開發時,僅支援提交Spark Jar應用,不支援提交Spark SQL。
下載並安裝Spark-Submit
執行以下命令,下載Spark-Submit命令列工具的安裝包
adb-spark-toolkit-submit-0.0.1.tar.gz
。wget https://dla003.oss-cn-hangzhou.aliyuncs.com/adb-spark-toolkit-submit-0.0.1.tar.gz
執行以下命令,解壓並安裝Spark-Submit。
tar zxvf adb-spark-toolkit-submit-0.0.1.tar.gz
Spark應用配置參數
Spark-Submit安裝包解壓完成後,進入adb-spark-toolkit-submit/conf
目錄,執行vim spark-defaults.conf
命令修改配置項。修改後,Spark-Submit命令列工具的指令碼將自動讀取設定檔中的資訊,配置參數會對所有Spark應用生效。
Spark應用配置參數列表如下:
參數 | 是否必填 | 參數說明 | 樣本值 |
keyId | 是 | 阿里雲帳號或具備AnalyticDB for MySQL存取權限的RAM使用者的AccessKey ID。 如何擷取AccessKey ID和AccessKey Secret,請參見帳號與許可權。 | LTAI5tFosFYFgrt3NzBX**** |
secretId | 是 | 阿里雲帳號或具備AnalyticDB for MySQL存取權限的RAM使用者的AccessKey Secret。 如何擷取AccessKey ID和AccessKey Secret,請參見帳號與許可權。 | 1BvoSGRT4FV7GB07VVgrRGUty**** |
regionId | 是 | AnalyticDB for MySQL叢集的地區ID。 | cn-hangzhou |
clusterId | 是 | AnalyticDB for MySQL叢集的叢集ID。 | amv-bp1908350u5**** |
rgName | 是 | 執行Spark應用的Job型資源群組名稱。 | test |
ossKeyId | 否 | Spark Jar應用需要的JAR包儲存在本地路徑時,需要配置ossKeyId、ossSecretId、ossUploadPath。
| LTAI5tFosFYFgrt3NzBX**** |
ossSecretId | 否 | 1BvoSGRT4FV7GB07VVgrRGUty**** | |
ossUploadPath | 否 | oss://testBucketname/jars/test1.jar | |
conf參數 | 否 | 與開源Spark中的配置項基本一致,參數格式為 |
提交Spark應用
將Spark應用依賴JAR包上傳到OSS中,具體操作,請參見簡單上傳。
執行以下命令,進入Spark-Submit工具的目錄。
cd adb-spark-toolkit-submit
按如下格式提交應用。
./bin/spark-submit \ --class com.aliyun.spark.oss.SparkReadOss \ --verbose \ --name Job1 \ --jars oss://testBucketname/jars/test.jar,oss://testBucketname/jars/search.jar\ --conf spark.driver.resourceSpec=medium \ --conf spark.executor.instances=1 \ --conf spark.executor.resourceSpec=medium \ oss://testBucketname/jars/test1.jar args0 args1
說明Spark應用提交後,返回碼說明如下:
255:應用執行失敗。
0:應用執行成功。
143:應用被Kill。
參數說明如下。
參數名稱
參數說明
--class
Java或者Scala程式入口類名稱。Python不需要指定入口類。
--verbose
列印出提交Spark過程中產生的日誌。
--name
Spark應用程式名稱。
--jars
Spark應用依賴的JAR包所在的路徑,可以是本地路徑或OSS路徑。需為絕對路徑。如果有多個JAR包,路徑之間以英文逗號(,)分隔。
如果您配置本地路徑,您需注意以下內容:
RAM使用者具備OSS的AliyunOSSFullAccess許可權。
需在
conf/spark-defaults.conf
設定檔中設定ossUploadPath
參數,指定本地檔案資源上傳到OSS的路徑。
檔案資源上傳時,會使用md5校正檔案內容,當指定的OSS路徑中有相同檔案名稱且md5相同時,將不再重複上傳。
如果手動更新了OSS路徑中的JAR包,請刪除對應的md5檔案。
--conf
Spark應用的配置參數。
與開源Spark-Submit中的配置基本一致。與開源Spark-Submit用法不一致的配置參數及AnalyticDB for MySQL Spark-Submit特有的配置參數,請參見AnalyticDB for MySQL Spark-Submit與開源Spark-Submit的區別。
說明配置多個conf時,格式為:--conf key1=value1 --conf key2=value2。
oss://testBucketname/jars/test1.jar args0 args1
Spark應用主檔案的儲存路徑,檔案路徑需為絕對路徑。主檔案是入口類所在的JAR包或者Python的入口執行檔案。
說明Spark應用主檔案目前只支援儲存在OSS中。
args
請根據業務需求,填寫使用JAR包時需要使用的參數。多個參數之間以空格分隔。
查看Spark應用列表
./bin/spark-submit --list --clusterId <cluster_Id> --rgName <ResourceGroup_name> --pagenumber 1 --pagesize 3
參數說明:
cluster_Id:AnalyticDB for MySQL叢集的叢集ID。
ResourceGroup_name:執行Spark應用使用的Job型資源群組名稱。
查詢Spark應用狀態
./bin/spark-submit --status <appId>
appId可在Spark應用列表中查看,詳情請參見查看Spark應用列表。
查詢Spark應用提交參數和SparkUI
./bin/spark-submit --detail <appId>
appId可在Spark應用列表中查看,詳情請參見查看Spark應用列表。
返回結果中Spark WEB UI欄位即Spark UI地址。
查詢Spark應用日誌
./bin/spark-submit --get-log <appId>
appId可在Spark應用列表中查看,詳情請參見查看Spark應用列表。
結束Spark應用
./bin/spark-submit --kill <appId>
appId可在Spark應用列表中查看,詳情請參見查看Spark應用列表。
AnalyticDB for MySQL Spark-Submit與開源Spark-Submit的區別
AnalyticDB for MySQL Spark-Submit特有的參數
參數名稱 | 參數說明 |
--api-retry-times | AnalyticDB for MySQL Spark-Submit內部執行命令失敗時的重試次數(除提交命令外),預設值:3。 提交任務不是一個等冪操作,由於網路逾時等原因導致的提交失敗,實際上任務可能在後台執行成功,為防止任務重複提交,提交任務失敗將不會重試。您需要自行擷取已經提交的工作清單( |
--time-out-seconds | AnalyticDB for MySQL Spark-Submit內部預設的網路逾時時間,逾時命令將會失敗重試。單位:秒(s),預設值:10。 |
--enable-inner-endpoint | 當您使用阿里雲ECS機器提交Spark時,可以指定此選項,AnalyticDB for MySQL Spark-Submit將使用VPC內網環境來訪問各個服務。 |
--list | 擷取應用列表,常搭配 例如,返回第一頁的5個應用,則配置如下:
|
--pagenumber | 指定應用列表的頁數。預設值為1。 |
--pagesize | 指定應用列表每頁顯示的應用個數。預設值為10。 |
--kill | 終止應用。 |
--get-log | 查詢應用日誌。 |
--status | 查詢應用詳情。 |
AnalyticDB for MySQL Spark-Submit不支援的開源Spark-Submit參數
AnalyticDB for MySQL Spark-Submit暫不支援開源Spark-Submit的配置參數。詳情請參見AnalyticDB for MySQL不支援的配置參數。