すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:インタラクティブなJupyterジョブを開発する

最終更新日:Jun 13, 2024

AnalyticDB for MySQL Sparkを使用すると、Dockerイメージを使用してインタラクティブなJupyterLab開発環境を開始できます。 この環境は、AnalyticDB for MySQL Sparkに接続し、エラスティックリソースに基づいてインタラクティブなテストとコンピューティングを実行するのに役立ちます。

前提条件

  • AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターが作成されます。 詳細については、「Data Lakehouse Editionクラスターの作成」をご参照ください。

  • ジョブのリソースグループがAnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターに作成されます。 詳細については、「リソースグループの作成」をご参照ください。

  • AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスター用にデータベースアカウントが作成されます。

  • AnalyticDB for MySQLは、AliyunADBSparkProcessingDataRoleロールを引き受けて他のクラウドリソースにアクセスする権限があります。 詳細については、「権限付与の実行」をご参照ください。

使用上の注意

  • AnalyticDB for MySQL Sparkは、Python 3.7またはScala 2.12でのみインタラクティブなJupyterジョブをサポートします。

  • 対話型Jupyterジョブが、最後のコードスニペットが実行されてから1,200秒の有効期間 (TTL) の間アイドル状態のままである場合、ジョブは自動的にリリースされます。 spark.adb.sessionTTLSecondsパラメーターを使用して、インタラクティブなJupyterジョブのTTL期間を指定できます。

インタラクティブなJupyterLab開発環境を開始する

  1. Dockerイメージをインストールして起動します。 詳細については、「Dockerドキュメント」をご参照ください。

  2. AnalyticDB for MySQLのJupyterイメージをプルします。 サンプルコマンド:

    docker pul l registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:livy.0.5.pre
  3. インタラクティブなJupyterLab開発環境を開始します。

    コマンド構文:

    docker run -it -p {ホストポート}:8888 -v {ホストファイルパス }:{ Dockerファイルパス} registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:livy.0.5.pre -d {AnalyticDB for MySQLインスタンスID} -r {リソースグループ名} -e {APIエンドポイント} -i {AccessKey ID} -k {AccessKey secret}

    下表に、各パラメーターを説明します。

    パラメーター

    必須

    説明

    -p

    任意

    ホストポートをコンテナーポートにマップします。 パラメーターを -p {Host port }:{ Container port} 形式で指定します。

    ホストポートにランダムな値を指定し、コンテナーポートを8888に設定します。 例: -p 8888:8888

    -v

    任意

    ホストパスをマウントせず、Dockerコンテナを無効にすると、編集ファイルが失われる可能性があります。 Dockerコンテナを無効にすると、コンテナは実行中のすべての対話型Sparkジョブを終了しようとします。 次のいずれかの方法を使用して、編集ファイルの損失を防ぐことができます。

    • インタラクティブなJupyterLab開発環境を起動するときに、ホストパスをDockerコンテナにマウントし、対応するファイルパスにジョブファイルを格納します。 -v {Host file path }:{ Docker file path} 形式でパラメーターを指定します。 Dockerコンテナのファイルパスにランダムな値を指定します。 推奨値: /root/jupyter

    • Dockerコンテナを無効にする前に、すべてのファイルがコピーされて保存されていることを確認してください。

    例: -v /home/admin/notebook:/root/jupyter この例では、/home/admin/notebookパスに格納されているホストファイルは、Dockerコンテナの /root/jupyterパスにマウントされます。

    説明

    編集中のノートブックファイルを /tmpフォルダに保存します。 Dockerコンテナを無効にすると、ホストの /home/admin/notebookパスに対応するファイルを表示できます。 Dockerコンテナを再度有効にすると、ファイルを変更して実行できます。 詳細については、「Volumes」をご参照ください。

    -d

    AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターのID。

    AnalyticDB for MySQLコンソールにログインし、[クラスター] ページに移動してクラスターIDを表示します。

    -r

    AnalyticDB for MySQLクラスター内のリソースグループの名前。

    AnalyticDB for MySQLコンソールにログインし、左側のナビゲーションウィンドウで [クラスター管理]> [リソース管理] を選択し、[リソースグループ] タブをクリックしてリソースグループ名を表示します。

    -e

    AnalyticDB for MySQLクラスターのエンドポイント。

    詳細については、「エンドポイント」をご参照ください。

    -i

    Alibaba CloudアカウントまたはRAMユーザーのAccessKey ID。

    AccessKey IDの表示方法については、「アカウントと権限」をご参照ください。

    -k

    Alibaba CloudアカウントまたはRAMユーザーのAccessKeyシークレット。

    AccessKeyの表示方法については、「アカウントと権限」をご参照ください。

    例:

    docker run -it -p 8888:8888 -v /home/admin/notebook:/root/jupyte r 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 ****

    インタラクティブなJupyterLab開発環境を起動すると、次の情報が返されます。 http:// 127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef29 1のURLをコピーしてブラウザに貼り付け、JupyterLabを使用してAnalyticDB for MySQL Sparkに接続できます。

    [I 2023-11-24 09:55:09.852 ServerApp] nbclassic | 拡張子が正常に読み込まれました。
    [I 2023-11-24 09:55:09.852 ServerApp] sparkmagic extension enabled!
    [2023-11-24 09:55:09.853 ServerApp] sparkmagic | 拡張機能が正常にロードされました。
    [I 2023-11-24 09:55:09.853 ServerApp] ローカルディレクトリからノートブックを提供する: /root/jupyter
    [I 2023-11-24 09:55:09.853 ServerApp] Jupyter Server 1.24.0は次の場所で実行されています。[I 2023-11-24 09:55:09.853 ServerApp] http:// 419e63fc7821:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291
    [I 2023-11-24 09:55:09.853 ServerApp] またはhttp:// 127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291
    [I 2023-11-24 09:55:09.853 ServerApp] Control-Cを使用してこのサーバーを停止し、すべてのカーネルをシャットダウンします (確認をスキップするには2回) 。
    説明

    インタラクティブなJupyterLab開発環境の起動時にエラーメッセージが返された場合は、トラブルシューティングのためにproxy_{timestamp}.logファイルを表示できます。

Sparkアプリケーション設定パラメーターの変更

JupyterLabを使用してAnalyticDB for MySQL Sparkに接続した後、JupyterLabのノートブック開発ページでSparkジョブを直接実行できます。 Sparkジョブの実行には、次のデフォルト設定パラメーターが使用されます。

{
   "kind": "pyspark" 、
    "heartbeatTimeoutInSecond": "60" 、
    "spark.driver.resourceSpec": "medium" 、
    "spark.exe cutor.resourceSpec": "medium" 、
    "spark.exe cutor.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. カーネルを再起動します。

    1. JupyterLabを使用してAnalyticDB for MySQL Sparkに接続します。

    2. 上部のナビゲーションバーで、[カーネル] > [カーネルの再起動とすべての出力のクリア] を選択します。 JupyterLabのノートブック開発ページに、実行中のSparkアプリケーションが表示されていないことを確認します。

      image

  2. コードエディターでカスタムSparkアプリケーション設定パラメーターを指定します。

    重要

    カスタムSparkアプリケーション構成パラメーターを指定する場合、spark.dynamicAllocation.enabledパラメーターをfalseに設定する必要があります。

    % % configure -f
    {
       "spark.driver.resourceSpec":"small" 、
       "spark.sql.hive.metastore.version":"adb" 、
       "spark.exe cutor.resourceSpec":"small" 、
       "spark.adb.exe cutorDiskSize":"100Gi" 、
       "spark.exe cutor.instances":"1" 、
       "spark.dynamicAllocation.enabled":"false" 、
       "spark.net仕事. timeout":"30000" 、
       "spark.memory.fraction":"0.75" 、
       "spark.memory.storageFraction":"0.3"
    } 

    Sparkアプリケーション設定パラメーターの詳細については、「Sparkアプリケーション設定パラメーター」をご参照ください。

  3. ボタンをクリックしimageます。

    次の結果が返されると、Sparkアプリケーションの設定パラメーターが変更されます。

    image

重要
  • JupyterLabのノートブック開発ページを閉じると、指定されたカスタム設定パラメーターは無効になります。 JupyterLabのノートブック開発ページを再度開いた後にSparkアプリケーションパラメーターを指定しない場合、デフォルトの設定パラメーターがSparkジョブの実行に使用されます。

  • JupyterLabのノートブック開発ページでSparkジョブを実行すると、バッチジョブの送信時に必要なJSON構造のconfオブジェクトではなく、ジョブのすべての設定がJSON構造に直接書き込まれます。