Airflowオーケストレーションクイズ
Step 3で学んだAirflow基礎、DAG設計、タスク依存関係、エラーハンドリングについて理解度を確認しましょう。10問中8問以上の正解で合格です。
Q1. Airflowの役割
Apache Airflowの主な役割として最も適切なものはどれですか?
- A: データの抽出と変換を高速に実行する
- B: ワークフローをプログラムで定義・スケジュール・監視する
- C: データウェアハウスのストレージを管理する
- D: 機械学習モデルの学習を最適化する
正解と解説
正解: B
Airflowはワークフローオーケストレーターであり、DAGとしてワークフローを定義し、スケジュール実行と監視を行います。データ処理そのものではなく、処理の順序管理が主な役割です。
Q2. DAGの冪等性
DAGの冪等性(Idempotency)の説明として正しいものはどれですか?
- A: DAGが常に最速で実行されること
- B: 同じ入力で何度実行しても同じ結果が得られること
- C: DAGが並列実行できること
- D: DAGのタスク数が一定であること
正解と解説
正解: B
冪等性とは、同じDAGを同じパラメータで何度実行しても結果が同じであることを保証する性質です。INSERT の代わりに DELETE + INSERT(UPSERT)を使うなどの工夫が必要です。
Q3. センサーモード
Airflowのセンサーでrescheduleモードを使用する利点はどれですか?
- A: チェック間隔を短くできる
- B: チェック間にワーカースロットを解放し、リソースを節約できる
- C: タイムアウトが発生しない
- D: 外部システムへの負荷が減る
正解と解説
正解: B
rescheduleモードはチェックとチェックの間にワーカースロットを解放するため、長時間の待機でもリソースを無駄にしません。pokeモードはスロットを占有し続けます。
Q4. トリガールール
タスクのtrigger_ruleをone_failedに設定した場合の動作はどれですか?
- A: 全上流タスクが失敗した場合に実行される
- B: 1つ以上の上流タスクが失敗した場合に実行される
- C: 1つでも成功した上流タスクがあれば実行される
- D: 上流タスクの状態に関係なく実行される
正解と解説
正解: B
one_failedは1つ以上の上流タスクが失敗した場合にタスクを実行するルールです。エラー通知タスクなどに使用します。全上流タスクの失敗にはall_failedを使います。
Q5. XCom
AirflowのXComの用途として正しいものはどれですか?
- A: 大量のデータフレームをタスク間で受け渡す
- B: タスク間でメタデータ(行数、パス、ステータス等)を受け渡す
- C: 外部データベースへの接続情報を保存する
- D: DAGの定義情報を保存する
正解と解説
正解: B
XComはメタデータDBに保存されるため、行数やファイルパスなどの小さなデータの受け渡しに適しています。大量データの受け渡しにはS3やデータベースを使用すべきです。
Q6. リトライ戦略
指数バックオフ(exponential backoff)のリトライが有効なケースはどれですか?
- A: データの形式エラーによるパース失敗
- B: 外部APIのレート制限やネットワーク一時障害
- C: SQLの文法エラー
- D: 権限不足によるアクセスエラー
正解と解説
正解: B
指数バックオフは一時的な障害(ネットワーク、レート制限)に対して有効です。リトライ間隔を徐々に長くすることで、相手システムの回復を待てます。文法エラーや権限不足は何度リトライしても成功しません。
Q7. TaskGroup
AirflowのTaskGroupの主な目的はどれですか?
- A: タスクの実行速度を向上させる
- B: 関連タスクをグループ化してWeb UIの可読性を向上させる
- C: タスクを別のDAGに分離する
- D: タスクの権限を一括管理する
正解と解説
正解: B
TaskGroupは関連するタスクを論理的にグループ化し、Web UIでの表示を整理する機能です。実行速度やDAG分離とは関係ありません。
Q8. SLA
AirflowのSLA(Service Level Agreement)機能の説明として正しいものはどれですか?
- A: タスクの実行時間が設定値を超えると自動でタスクを停止する
- B: タスクの実行時間が設定値を超えるとSLA miss callbackが呼ばれる
- C: DAGの実行頻度を保証する
- D: タスクのリトライ回数を制限する
正解と解説
正解: B
SLA設定は「期待される完了時間」を定義し、超過した場合にコールバック関数が呼ばれます。タスクの自動停止は行いません。
Q9. DAG間依存
Airflow 2.4以降のDataset機能の説明として正しいものはどれですか?
- A: データセットの保存先を管理する
- B: 上流DAGがDatasetを更新すると、そのDatasetに依存する下流DAGが自動トリガーされる
- C: データセットのバックアップを自動で取得する
- D: データセットのスキーマを管理する
正解と解説
正解: B
Dataset機能により、DAGのoutletとしてDatasetの更新を宣言し、別のDAGがそのDatasetをscheduleに指定することで、データ駆動のDAG間依存を実現できます。
Q10. デッドレターキュー
データパイプラインにおけるデッドレターキュー(DLQ)パターンの目的はどれですか?
- A: 全レコードの処理に失敗したらパイプラインを停止する
- B: 処理に失敗したレコードを別の場所に退避し、成功レコードの処理を継続する
- C: 古いデータを自動的に削除する
- D: データを暗号化して保存する
正解と解説
正解: B
デッドレターキューパターンは、処理失敗レコードを別途保存して後で調査・再処理できるようにしつつ、成功レコードの処理は中断せずに継続します。
結果
| 正答数 | 判定 |
|---|---|
| 8-10問 | 合格 - Step 4に進みましょう |
| 6-7問 | もう一度レッスンを復習しましょう |
| 5問以下 | Step 3のレッスンを最初から再学習しましょう |
推定所要時間:30分