注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

セッション履歴とセッションの固定

セッション

Spark モジュール内で Code Workbook 環境を初期化すると、一連のメタデータがモジュールに割り当てられます。このメタデータは、コンピューティング情報と環境情報の2つのカテゴリーに分けられます。セッションとは、Spark モジュールのライフサイクルの一部としてこれらの設定を具体化したものです。簡単に言えば、「特定の Spark モジュールの存続期間中に実際に使われていた設定」を指します。

コンピューティング情報には、Spark モジュールに割り当てられた Spark 設定の詳細に加え、jar の依存関係、リソース識別子、起動するモジュールの種類などの関連情報が含まれます。一方、環境情報は、リクエストされた環境と解決された環境の2つのカテゴリーにさらに分けられます。リクエストされた環境とは、pandas=2.* や python<3.10 といった conda の仕様の集合です。一方、解決された環境とは、リクエストされた環境が定める制約を満たす、解決済みのパッケージの集合です。リクエストされた環境は非決定論的ですが、解決された環境は、定義上、特定のリクエストされた環境に対する恒久的な解です。そのため、同一のリクエストされた環境であっても、異なる解決された環境になる場合があります。たとえば、2017年に python>=3.6 をリクエストすると Python 3.6 に解決された可能性が高いですが、現在同じリクエストを行うと Python 3.10 になる可能性があります。

セッション履歴

Code Workbook では、Workbook の最近のすべてのセッションに関する情報を確認できます。Workbook のセッション履歴を確認するには、Code Workbook の環境ドロップダウンを選択し、セッション履歴を表示を選択します。

セッション履歴を表示するドロップダウンボタン

セッション履歴ウィンドウでは、情報を計算、リクエストされた環境、解決された環境の3つのタブで情報を確認できます。左側のペインには、セッションの ID と、セッションが初期化された時点のタイムスタンプが表示されます。セッションIDの左側のアイコンは、初期化に成功したか(緑)、失敗したか(赤)、それ以外か(青)を示します。青のセッションは通常、初期化がまだ完了しておらず、失敗または成功のいずれの状態にも達していないことを意味します。

セッション履歴ウィンドウ

コンピューティング情報

情報を計算タブには、特定のセッションでリクエストされた Spark モジュールの種類に関する情報が表示されます。

  • moduleAssignmentInfo: 対話的な Workbook の使用のために特定のユーザーが環境を起動したのか、スケジュールされたビルドなどのバックグラウンドジョブが起動したのかについての一般的な情報です。対話型モジュールとビルドモジュールの違いについて詳しくは、バッチビルドと対話型ビルドを参照してください。
  • moduleLaunchInfo: Spark モジュール自体に割り当てられたプロパティに関するメタデータです。次のフィールドが含まれます。
    • sparkModuleRid: Spark モジュールの一意の識別子です。モジュールとセッションは1対1で対応するため、sparkModuleRid と sessionId は同じ一意の識別子を共有します。
    • profileRid: Spark モジュールの初期化に使用されたプロファイルの一意の識別子です。
    • isCustomEnv: そのセッションがカスタム環境を使用して初期化されたかどうかを示します。Code Workbook のカスタム環境とは、Code Workbook インターフェースの環境設定メニューで直接変更された標準プロファイルのことです。
    • jarDependencies: Control Panel でプロファイルに手動で追加されたすべての jar 依存関係のリストです。
    • moduleLaunchType: WARM_MODULE または ON_DEMAND_MODULE のいずれかになります。セッションがウォームモジュールキュー内のすでに初期化されたモジュールを使用したのか、新しいモジュールをリクエストして初期化プロセスを開始したのかを示します。
    • moduleResources: ドライバーとエグゼキューターのメモリー、エグゼキューターの数など、モジュールに関連するすべてのコンピューティング情報です。

リクエストされた環境

リクエストされた環境タブには、初期化の開始前に希望された環境設定に関する情報が表示されます。

  • 初期化モード: そのセッションで実行する Code Workbook の初期化の種類です。solve、file、docker のいずれかになります。Code Workbook の初期化の種類について詳しくは、環境の最適化に関するドキュメントを参照してください。
  • 環境リポジトリ: 対象の環境を保存する際のキーです。カスタム環境でない場合は、セッションで使用された profileRid になります。カスタム環境の場合は、プロファイルをカスタマイズした Workbook の workbookRid になります。
  • リクエストされたパッケージ: 初期化プロセスに送信された、リクエストされたパッケージのリストです。このリストには、プロファイルで明示的にリクエストされたパッケージと、Code Workbook が機能するために自動的にリクエストされた追加のパッケージの両方が含まれます。
  • 取得元リポジトリ: インストールされたパッケージの取得元となったチャネルのリストです。

解決された環境

解決された環境タブには、初期化の一環として使用された環境パッケージに関する情報が表示されます。これには、環境の初期化にかかった時間と、最終的にモジュールにインストールされたパッケージおよびそのバージョンが含まれます。Code Workbook のセッションロールバック機能は、リクエストされた環境ではなく過去のセッションの解決された環境を使用するため、この情報は特に重要です。

セッションを比較する

環境がどのように変化したかを理解するには、2つのセッションを比較すると役立つことがよくあります。セッション履歴ウィンドウでは、現在のセッションと任意の過去のセッションを比較できます。セッション履歴ウィンドウの右上にあるセッションを比較を選択すると、セッション履歴の比較タブにアクセスできます。

セッション比較メニューには、2つのウィンドウが横に並んで表示されます。右側には、現在のセッションの情報が表示されます。左側には、セッションリストから任意のセッションを表示して比較できます。左側で比較するセッションを切り替えるには、セッションリストから任意のセッションを選択します。ウィンドウの右上にある比較を編集を選択すると、いつでも比較表示を終了できます。左側で選択したセッションは、引き続き選択されたままになります。

利用可能な3つのタブすべてでセッションを比較できます。2つのセッションの情報を計算を比較すると、モジュールで利用可能なメモリーの変化を理解するのに役立つ場合があります。リクエストされた環境の比較は、2つのセッションの環境間で何が手動で変更されたかを理解するのに役立ちます。一方、解決された環境の比較は、2つのセッション間でインストールされたバージョンの違いを理解するのに役立つ場合があります。

以下の例では、セッション比較の各タブを使用すると、2つのセッションについて次の情報が分かります。

セッション履歴のコンピューティングタブ

  • 異なるプロファイルが使用されました。
  • プロファイルがカスタマイズされました。
  • モジュールに適用されたメモリー設定が小さくなりました。

セッション履歴のリクエストされた環境タブ

  • Python や pandas などについて、より新しいパッケージバージョンがリクエストされました。

セッション履歴の解決された環境タブ

  • 最終的に、環境に異なるバージョンの Python がインストールされました。

セッションのピン留め

過去のセッションとまったく同じ設定に一時的にロールバックしたい場合があります。Code Workbook では、セッションをピン留めすることでこの操作を行えます。セッションのピン留めとは、過去のセッションと同じメタデータを使用して新しいセッションと Spark モジュールを初期化し、見かけ上同一の環境を再現することです。ピン留めされたセッションでは、過去のセッションの解決済みの情報を利用して新しいモジュールを初期化します。これは特に重要です。同じ解決済み環境を使用すれば、インストールされるパッケージが同一であることが保証されますが、同じ要求環境を使用しても保証されないためです。そのため、セッションをピン留めすると、以前動作していた環境にロールバックする効果を再現できます。ただし、初期化モードなど、一部のメタデータは過去のセッションから引き継がれません。

セッションをピン留めする方法

セッションをピン留めするには、セッション履歴ウィンドウに移動し、ピン留めするセッションを選択します。次に、パネルの右下にあるセッションをピン留めを選択します。Workbook の現在のブランチには、ピン留めされたセッションによるオーバーライドが最大24時間適用されます。バナーには、オーバーライドの残り時間と、ピン留めを解除するオプションが表示されます。この期間中、それ以降のすべてのインタラクティブ環境の初期化では、ピン留めされたセッションの情報が利用されます。期間が終了するか、セッションのピン留めを手動で解除すると、Workbook は現在設定されている環境を使用する状態に戻ります。

セッションのピン留めはデバッグを目的として設計されており、長期的に使用する本番運用向けのパイプラインで依存すべき機能ではありません。そのため、ピン留めされたセッションが影響するのは、_インタラクティブ_環境のみです。スケジュールされたビルドなど、Code Workbook インターフェースの外部で実行されるビルドは、ピン留めされたセッションによるオーバーライドの影響を受けません。セッションのピン留めは、必要に応じたトラブルシューティングや試行に用途を限定することを推奨します。それ以外では、セッション履歴機能を使用してセッション間の違いを把握し、環境定義を直接編集します。

セッションのピン留めの制限

セッションのピン留めには、いくつかの制限があります。ピン留めされたセッションは無期限には維持されず、すべてのセッションをピン留めできるわけではなく、すべての初期化がピン留めされたセッションの影響を受けるわけでもありません。セッションのピン留めを検討する際には、次の制限に注意してください。

  • セッションのピン留めは最大24時間維持されます。この時間を延長するには、セッションを再度ピン留めする必要があります。セッションを再度ピン留めすると、新しいモジュールが起動し、モジュール上のすべてのローカル状態が失われます。
  • ピン留めされたセッションは、関連付けられた過去のセッションからすべてのメタデータを引き継ぐわけではありません。初期化モードなどの設定は異なる場合があります。
  • ピン留めできるのは、以前に成功したセッションのみです。未完了のセッションや失敗したセッションはピン留めできません。また、Code Workbook では、互換性のないバージョン、ブラックリストに登録されたパッケージバージョン、API の破壊的変更などに対する保護措置として、ピン留めするバージョンを選択できない場合があります。ピン留めできないセッションについては、赤いバナーで通知されます。
  • ピン留めされたセッションが影響するのはインタラクティブジョブのみで、ビルドジョブには影響しません。
  • ピン留めできるのは、アーティファクトプロファイルを使用するセッションのみです

上記の理由から、セッションのピン留めはデバッグ機能であり、長期的に使用する本番運用向けのパイプラインで依存すべき機能ではありません。

セッション履歴を使用して環境をトラブルシューティングする

上記のセッション履歴、セッションの比較、セッションのピン留め機能は、失敗する環境のトラブルシューティングに役立ちます。特に、以前動作していた環境での失敗に対処する際に役立ちます。このような場合は、次の手順に沿って対処します。

  1. 環境は過去に動作したことがありますか?

  2. セッションを比較機能を使用して、現在失敗しているセッションと以前成功したセッションを選択し、環境の違いを確認します。

    • コンピューティング情報の詳細に変更がある場合、モジュールの設定では、モジュールを正しく初期化するためのメモリーが不足している可能性があります。
    • 要求環境の詳細に変更がある場合、環境に破壊的変更が手動で加えられたことが原因で失敗しています。
    • 要求環境の詳細に変更がなく、解決済み環境の変更が原因で失敗している場合、使用しているパッケージのいずれかの新しいバージョンに破壊的変更が含まれている可能性があります。これらのパッケージは、一般にオープンソース由来です。問題のあるパッケージを直接調査するか、該当するパッケージまたはバージョンを要求しないように環境を変更できます。
    • 環境に明らかな変更がない場合、または上記の手順で解決しなかった場合は、環境のトラブルシューティングガイドを参照するか、Palantir サポートにお問い合わせください。
  3. (任意)前のステップでトラブルシューティングを行う際に、セッションのピン留め機能を使用して、まずピン留めされたバージョンの環境が動作することを確認し、より恒久的な解決策が見つかるまで Workbook の機能を一時的に利用できる状態にします。

  4. 環境が失敗する根本原因を特定したら、それに応じてプロファイルの設定を調整し、状況を恒久的に解決します。