全部產品
Search
文件中心

AnalyticDB:Jupyter互動式作業開發

更新時間:Jul 06, 2024

AnalyticDB for MySQL Spark支援使用Docker鏡像快速啟動Jupyter互動式開發環境,協助您使用本地Jupyter Lab串連AnalyticDB for MySQL Spark,從而利用AnalyticDB for MySQL的彈性資源進行互動測試和計算。

前提條件

注意事項

  • AnalyticDB for MySQL Spark當前僅支援Python3.7、Scala 2.12版本的Jupyter互動作業。

  • 互動式作業會在空閑一段時間後自動釋放,預設釋放時間為1200秒(即最後一個代碼塊執行完畢,1200秒後自動釋放)。您可通過spark.adb.sessionTTLSeconds參數配置互動式作業的自動釋放時間。

啟動Jupyter互動式開發環境

  1. 安裝並啟動Docker鏡像。具體操作,請參見Docker官方文檔

  2. 啟動Docker鏡像後,拉取AnalyticDB for MySQL Jupyter鏡像。命令如下:

    docker pull registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:livy.0.5.pre
  3. 啟動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****

    啟動成功後,返回如下提示資訊,您將URLhttp://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語句修改。具體操作步驟如下:

  1. 重啟kernel。

    1. 啟動Jupyter互動式開發環境後,使用Jupyter服務直連AnalyticDB for MySQL Spark。

    2. 單擊頁面頂部的Kernel > Restart Kernel and Clear All Outputs,確保當前Notebook開發頁面下沒有任何運行中的Spark應用。

      image

  2. 在代碼框中輸入自訂的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應用配置參數說明

  3. 單擊image按鈕。

    返回結果如下,則代表Spark應用配置參數修改成功。

    image

重要
  • 關閉Jupyter Notebook頁面後,自訂配置參數會失效,重新開啟Jupyter Notebook頁面時,需重新設定Spark應用參數,否則Spark作業會使用預設的應用配置參數運行。

  • 在Jupyter Notebook頁面執行Spark作業時,所有配置項都直接寫入到JSON結構中,無需像提交Batch類型的作業時寫入到conf的JSON對象中。