AnalyticDB for MySQL Spark支援使用Docker鏡像快速啟動Jupyter互動式開發環境,協助您使用本地Jupyter Lab串連AnalyticDB for MySQL Spark,從而利用AnalyticDB for MySQL的彈性資源進行互動測試和計算。
前提條件
已建立AnalyticDB for MySQL企業版及湖倉版叢集。具體操作,請參見建立企業版或湖倉版叢集。
已在企業版及湖倉版叢集中建立Job型資源群組。具體操作,請參見建立資源群組。
已建立企業版及湖倉版叢集的資料庫帳號。
如果是通過阿里雲帳號訪問,只需建立高許可權帳號。具體操作,請參見建立高許可權帳號。
如果是通過RAM使用者訪問,需要建立高許可權帳號和普通帳號並且將RAM使用者綁定到普通帳號上。具體操作,請參見建立資料庫帳號和綁定或解除綁定RAM使用者與資料庫帳號。
已授權AnalyticDB for MySQL扮演AliyunADBSparkProcessingDataRole角色來訪問其他雲資源。具體操作,請參見帳號授權。
注意事項
AnalyticDB for MySQL Spark當前僅支援Python3.7、Scala 2.12版本的Jupyter互動作業。
互動式作業會在空閑一段時間後自動釋放,預設釋放時間為1200秒(即最後一個代碼塊執行完畢,1200秒後自動釋放)。您可通過
spark.adb.sessionTTLSeconds
參數配置互動式作業的自動釋放時間。
啟動Jupyter互動式開發環境
安裝並啟動Docker鏡像。具體操作,請參見Docker官方文檔。
啟動Docker鏡像後,拉取AnalyticDB for MySQL Jupyter鏡像。命令如下:
docker pull registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:livy.0.5.pre
啟動Jupyter互動式開發環境。
命令格式如下:
docker run -it -p {宿主機連接埠}:8888 -v {宿主機檔案路徑}:{Docker容器檔案路徑} registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:livy.0.5.pre -d {ADB Instance Id} -r {Resource Group Name} -e {api endpoint} -i {AkId} -k {aksec}
參數說明:
參數名稱
是否必填
參數說明
-p
否
將宿主機連接埠綁定為容器連接埠。格式為
-p 宿主機連接埠:容器連接埠
。宿主機連接埠可任意填寫,容器連接埠固定填寫為
8888
。本文樣本為-p 8888:8888
。-v
否
在不掛載宿主機檔案夾的情況下,關閉Docker容器後編輯的檔案會丟失。Docker容器關閉時也會自動嘗試終止所有正在啟動並執行Spark互動式作業。您可以選擇如下兩種方案避免編輯檔案丟失:
在啟動Jupyter互動式開發環境時,將宿主機檔案掛載到Docker容器中,並將作業檔案儲存體在對應的檔案路徑下。格式為
-v 宿主機路徑:Docker容器檔案路徑
。Docker容器檔案路徑可任意填寫,建議填寫為/root/jupyter
。在關閉Docker容器前保證所有的檔案被妥善地複製保管。
本文樣本為
-v /home/admin/notebook:/root/jupyter
,表示將宿主機/home/admin/notebook
路徑下的檔案掛載到Docker容器的/root/jupyter
路徑。說明需要注意將編輯中的notebook檔案最終另存到
/tmp
檔案夾,關閉Docker容器後,在宿主機的/home/admin/notebook
檔案夾下可以看到對應的檔案,再次啟動Docker容器時可繼續執行。更多資訊,請參見Docker卷管理文檔。-d
是
AnalyticDB for MySQL企業版及湖倉版叢集ID。
您可以登入AnalyticDB MySQL控制台,在叢集列表查看叢集的ID。
-r
是
AnalyticDB for MySQL Job型資源群組名稱。
您可以登入AnalyticDB MySQL控制台,在叢集管理 > 資源管理頁面,單擊資源群組管理頁簽,查看所有的資源群組資訊。
-e
是
AnalyticDB for MySQL叢集的服務存取點資訊。
詳細資料請參見服務存取點。
-i
是
阿里雲帳號或RAM使用者的AccessKey ID。
如何查看AccessKey ID,請參見帳號與許可權。
-k
是
阿里雲帳號或RAM使用者的AccessKey Secret。
如何查看AccessKey Secret,請參見帳號與許可權。
樣本:
docker run -it -p 8888:8888 -v /home/admin/notebook:/root/jupyter registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:livy.0.5.pre -d amv-bp164l3xt9y3**** -r test -e adb.aliyuncs.com -i LTAI55stlJn5GhpBDtN8**** -k DlClrgjoV5LmwBYBJHEZQOnRF7****
啟動成功後,返回如下提示資訊,您將URL
http://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291
複製到瀏覽器,即可使用Jupyter服務直連AnalyticDB for MySQL Spark。[I 2023-11-24 09:55:09.852 ServerApp] nbclassic | extension was successfully loaded. [I 2023-11-24 09:55:09.852 ServerApp] sparkmagic extension enabled! [I 2023-11-24 09:55:09.853 ServerApp] sparkmagic | extension was successfully loaded. [I 2023-11-24 09:55:09.853 ServerApp] Serving notebooks from local directory: /root/jupyter [I 2023-11-24 09:55:09.853 ServerApp] Jupyter Server 1.24.0 is running at: [I 2023-11-24 09:55:09.853 ServerApp] http://419e63fc7821:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291 [I 2023-11-24 09:55:09.853 ServerApp] or http://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291 [I 2023-11-24 09:55:09.853 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
說明啟動Jupyter環境時如果出現報錯,您可以查看
proxy_{timestamp}.log
日誌記錄檔案,排查並解決問題。
修改Spark應用配置參數
用Jupyter服務直連AnalyticDB for MySQL Spark後,可直接在Jupyter Notebook開發頁面執行Spark作業,此時Spark作業會使用預設的配置參數運行,預設配置參數如下:
{
"kind": "pyspark",
"heartbeatTimeoutInSecond": "60",
"spark.driver.resourceSpec": "medium",
"spark.executor.resourceSpec": "medium",
"spark.executor.instances": "1",
"spark.dynamicAllocation.shuffleTracking.enabled": "true",
"spark.dynamicAllocation.enabled": "true",
"spark.dynamicAllocation.minExecutors": "0",
"spark.dynamicAllocation.maxExecutors": "1",
"spark.adb.sessionTTLSeconds": "1200"
}
如果您想修改Spark應用配置參數,可以使用%%configure
語句修改。具體操作步驟如下:
重啟kernel。
啟動Jupyter互動式開發環境後,使用Jupyter服務直連AnalyticDB for MySQL Spark。
單擊頁面頂部的
,確保當前Notebook開發頁面下沒有任何運行中的Spark應用。
在代碼框中輸入自訂的Spark應用配置參數,樣本如下:
重要自訂Spark應用配置參數時必須將spark.dynamicAllocation.enabled配置為false。
%%configure -f { "spark.driver.resourceSpec":"small", "spark.sql.hive.metastore.version":"adb", "spark.executor.resourceSpec":"small", "spark.adb.executorDiskSize":"100Gi", "spark.executor.instances":"1", "spark.dynamicAllocation.enabled":"false", "spark.network.timeout":"30000", "spark.memory.fraction":"0.75", "spark.memory.storageFraction":"0.3" }
Spark應用配置參數的詳細介紹,請參見Spark應用配置參數說明。
單擊按鈕。
返回結果如下,則代表Spark應用配置參數修改成功。
關閉Jupyter Notebook頁面後,自訂配置參數會失效,重新開啟Jupyter Notebook頁面時,需重新設定Spark應用參數,否則Spark作業會使用預設的應用配置參數運行。
在Jupyter Notebook頁面執行Spark作業時,所有配置項都直接寫入到JSON結構中,無需像提交Batch類型的作業時寫入到
conf
的JSON對象中。