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) クラスター用にデータベースアカウントが作成されます。
Alibaba Cloudアカウントを使用する場合は、特権アカウントを作成する必要があります。 詳細については、「データベースアカウントの作成」トピックの「特権アカウントの作成」セクションをご参照ください。
RAM (Resource Access Management) ユーザーを使用する場合は、特権アカウントと標準アカウントの両方を作成し、標準アカウントをRAMユーザーに関連付ける必要があります。 詳細については、「データベースアカウントの作成」および「データベースアカウントの関連付けまたは関連付けの解除」をご参照ください。
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開発環境を開始する
Dockerイメージをインストールして起動します。 詳細については、「Dockerドキュメント」をご参照ください。
AnalyticDB for MySQLのJupyterイメージをプルします。 サンプルコマンド:
docker pul l registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:livy.0.5.pre
インタラクティブな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
ステートメントを実行します。
カーネルを再起動します。
JupyterLabを使用してAnalyticDB for MySQL Sparkに接続します。
上部のナビゲーションバーで、
を選択します。 JupyterLabのノートブック開発ページに、実行中のSparkアプリケーションが表示されていないことを確認します。
コードエディターでカスタム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アプリケーション設定パラメーター」をご参照ください。
ボタンをクリックします。
次の結果が返されると、Sparkアプリケーションの設定パラメーターが変更されます。
JupyterLabのノートブック開発ページを閉じると、指定されたカスタム設定パラメーターは無効になります。 JupyterLabのノートブック開発ページを再度開いた後にSparkアプリケーションパラメーターを指定しない場合、デフォルトの設定パラメーターがSparkジョブの実行に使用されます。
JupyterLabのノートブック開発ページでSparkジョブを実行すると、バッチジョブの送信時に必要なJSON構造の
conf
オブジェクトではなく、ジョブのすべての設定がJSON構造に直接書き込まれます。