
Cloud Data Fusionがスケジュール実行エラーした時の対処法
・外部ソースとGoogle Cloudのパイプラインをノーコードで構築できるCloud Data Fusion
・設定済みのスケジュールタスクにおいて、エラーが発生することがある
・スケジュール設定を見直すだけで解決する場合がある
SalesforceやAWSのRedshift等の外部ソースをGoogle Cloudへ連携する方法はいくつかありますが、最も簡単でメジャーな方法はCloud Data Fusionです。
Cloud Data Fusionは、外部ソースとGoogle BigQueryなどGoogle Cloudを連携できるノーコードツールで、パイプラインを簡単に構築できます。
インスタンスを作成することで、毎日およそ数十ドルのコストが発生しますが、とても簡単にパイプラインを構築できるので、利用されている企業様も多いです。
成功したはずのデプロイが、スケジュール実行するとエラーになる
簡単にパイプラインを構築できるCloud Data Fusionは、デプロイしたパイプラインをスケジュール設定することで、簡単にバッチ化できます。
しかし、デプロイに成功したはずのパイプラインを、スケジュール実行すると、エラーになる場合があります。
エラーになったログをダウンロードして確認すると、以下のようなキーワードが出力されます。
Spark Program 'phase-1' failed
Cloud Data Fusionは、複数のステップを踏んで、外部ソースをGoogle Cloudに連携します。
このエラーは、’pahse-1’で失敗しており、そのエラーメッセージの付近に、このような記述もあります。
Caused by ...省略... The connection attempt failed.
接続に失敗したというエラーが発生しています。
このエラーは、外部ソースへの接続情報やファイヤーウォールなど設定関連が誤っている時に発生します。
でも、おかしいですよね。
デプロイに成功しています。
設定は正しいので、エラーになるはずがありません。
高負荷の処理が集中すると、外部ソースもCloud Data Fusionもリソースがひっ迫してエラーになりやすい
Cloud Data Fusionは、同時に複数のデプロイを実行できます。
その上限は開示されていませんが、おそらくCloud Data Fusionのバージョンや、インスタンスのエディション等で異なります。
私の経験上ではありますが、現行のBasicエディションであれば、50個程度は実行できたと思います。
しかし、スケジュール設定においては、最大で10個しか同時に実行できません。
これは、同時実行数を減らすことで、高負荷の処理を分散する意図だと思われます。
おそらく、10個同時にスケジュール実行したことで、リソースがひっ迫し、エラーになったようです。
スケジュール設定を見直すだけで解決する場合がある
10個同時に実行してダメな場合、同時実行数を減らさなければなりません。
しかし、デプロイ数が多い場合、同時実行数を1つに設定してしまうと、全体の処理が終わらず、データ更新が終わりません。
もし、100個のデプロイをスケジュールしたい場合、100個を1つずつ実行するので、相当な時間がかかります。
このような場合、以下のように設定を見直すだけで、解決する場合があります。
10個同時に実行する点においては、外部ソースやCloud Data Fusionへの負荷がかかる点は変わらず、根本的な解決にはなりませんが、起動処理などのタイミングをずらすことはできます。
変更前
デプロイ番号 | スケジュール 開始時刻 |
#1~#10 | 0:00AM |
#11~20 | 1:00AM |
・・・省略・・・ | |
#91~#100 | 9:00AM |
変更後
デプロイ番号 | スケジュール 開始時刻 |
#1 | 0:00AM |
#2 | 0:06AM |
・・・省略・・・ | |
#91 | 9:00AM |
・・・省略・・・ | |
#100 | 9:54AM |
Google Cloud開発お承ります
datacompanyでは、お客様のご予算・環境に応じたクラウド開発を承ります。
お困りごとがございましたら是非ご相談ください。