Cluster failed to launch - Databricks [2022/3/4時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
本書では、クラスターの起動に失敗するいくつかのシナリオを説明し、ログに表示されるエラーメッセージに基づいてそれぞれのシナリオにおけるトラブルシュートのステップを説明します。
クラスターのタイムアウト
エラーメッセージ:
Driver failed to start in time
INTERNAL_ERROR: The Spark driver failed to start within 300 seconds
Cluster failed to be healthy within 200 seconds
原因
外部のHiveメタストアに接続しており、MavenリポジトリからすべてのHiveメタストアライブラリをダウンロードしようとする際、起動に失敗することがあります。クラスターは依存関係を含む約200個のJARファイルをダウンロードします。Databricksのクラスターマネージャがドライバーノードが5分以内に準備できたことを確認できない場合、起動に失敗します。これは、JARのダウンロードに時間がかかりすぎることによって発生します。
解決策
HiveのライブラリをDBFSに格納し、DBFSロケーションからローカルにアクセスしてください。Spark Optionsをご覧ください。
グローバルあるいはクラスターのinitスクリプト
エラーメッセージ:
The cluster could not be started in 50 minutes. Cause: Timed out with exception after <xxx> attempts
原因
クラスターの起動ステージにおいて実行されるinitスクリプトは、スクリプトをワーカーのローカルで実行するためにそれぞれのワーカーマシンにRPC(リモートプロシージャコール)を送信します。すべてのRPCはプロセスを継続する前に自分のステータスを返信しなくてはなりません。(ネットワークの問題などによって)いずれかのRPCに問題が生じて返信せず、1時間のタイムアウトになる場合があり、結果としてセットアップのジョブが失敗します。
解決策
グローバルやクラスター固有のinitスクリプトではなく、クラスタースコープのinitスクリプトを使用してください。クラスタースコープのinitスクリプトでは、Databricksはinitスクリプトの実行ステータスを取得するためにRPCの同期ブロックを使用しません。
クラスターUIでインストールしたライブラリが多すぎる
エラーメッセージ:
Library installation timed out after 1800 seconds. Libraries that are not yet installed:
原因
これは、通常はネットワークの問題に起因する一時的な問題です。
解決策
通常は、ジョブを再実行するかクラスターを再起動することでこの問題を解決することができます。
ライブラリのインストーラーは3分後にタイムアウトになるように設定されています。JARを取得し、インストールしている際にも、ネットワーク問題によってタイムアウトが発生することがあります。この問題を回避するために、MavenからDBFSロケーションにライブラリをダウンロードし、そこからライブラリをインストールすることができます。
クラウドプロバイダーの制限
エラーメッセージ:
Cluster terminated. Reason: Cloud Provider Limit
原因
通常このエラーはクラウドプロバイダーによって引き起こされます。
解決策
Databricksクラスターの予期しない停止への対応方法におけるクラウドプロバイダーのエラー情報をご覧ください。
クラウドプロバイダーによるシャットダウン
エラーメッセージ:
Cluster terminated. Reason: Cloud Provider Shutdown
原因
通常このエラーはクラウドプロバイダーによって引き起こされます。
解決策
Databricksクラスターの予期しない停止への対応方法におけるクラウドプロバイダーのエラー情報をご覧ください。
インスタンスに到達できない(Azure)
エラーメッセージ:
Cluster terminated. Reason: Instances Unreachable
An unexpected error was encountered while setting up the cluster. Please retry and contact Azure Databricks if the problem persists. Internal error message: Timeout while placing node
原因
通常このエラーはクラウドプロバイダーによって引き起こされます。特に、(新規のAzure Databricksワークスペースを起動する際に作成されるデフォルトのVNetではなく)自分のバーチャルネットワーク(VNet)にAzure Databricksワークスペースをデプロイした際に発生します。ワークスペースがデプロイされているバーチャルネットワークがすでにオンプレミスのリソースに対するExpressRoute接続とピアリングしてるあるいは接続を有している場合、Azure Databricksがクラスターを作成しようとした際、バーチャルネットワークはクラスターノードにssh接続を行うことができません。
解決策
クラスターインスタンス、Blobストレージインスタンス、アーティファクトのリソースに対するsshアクセスをAzure Databricksコントロールプレーンに与えるために、ユーザー定義ルート(UDR)を追加します。このカスタムUDRによって、アウトバウンドの通信が可能となり、クラスター作成を阻害しません。UDRの詳細手順に関しては、Step 3: Create user-defined routes and associate them with your Azure Databricks virtual network subnetsをご覧ください。VNetに関連するトラブルシュートの情報に関しては、Troubleshootingをご覧ください。