DEA / ドメイン1 データの取り込みと変換
データ処理のコスト最適化
データ処理の費用は、「どれだけの計算資源を、どれだけの時間使うか」と「どれだけのデータを読み、置き、動かすか」で決まります。DEA では、同じ結果を安く得る方法として、計算の買い方 (Flex、スポット、)、読む量の削減 (パーティション、列指向、圧縮)、費用の監視 (、) が問われます。
Point
- スポットインスタンスは、EC2 の空き容量を大きな割引で使う買い方です。AWS の都合で中断されることがあります。
- Flex は AWS Glue の実行クラスで、空いている資源を使って安く実行します。開始が遅れることがあります。
- 和訳
- Optimization: 最適化
- Weblio英和辞書「optimization」
概要
| 費用を決める要素 | 例 |
|---|---|
| 計算 | の 時間、 の の時間、 の GB 秒、 の 時間 |
| スキャン量 | と のスキャンしたバイト数 |
| 保管 | の、Redshift のマネージドストレージ |
| リクエストと転送 | S3 の PUT/GET の回数、間や 間の転送、 ゲートウェイのデータ処理 |
主要技術
①計算資源の買い方 ⚠️ 頻出
| サービス | 安くする方法 | 条件 |
|---|---|---|
| Flex 実行クラス | 急がないジョブ。G.1X/G.2X、Glue 3.0 以降 | |
| AWS Glue | オートスケーリング、適切なワーカーの種類と数 | 段階で処理量が変わる |
| AWS Glue | ジョブのタイムアウトを適切に設定 | 異常に長い実行の費用を防ぐ |
| タスクノードをスポット、インスタンスフリート | 中断されてもデータを失わない構成 | |
| Amazon EMR | 一時的なクラスター、自動終了、マネージドスケーリング | 待機時間をなくす |
| Amazon EMR | Graviton のインスタンス、 | 常時動く部分 |
| メモリ (と ) の最適な設定、Arm (Graviton) のアーキテクチャ | 実行時間とメモリの積が最小になる設定を測る | |
| Serverless の最大 や使用量の上限、プロビジョンドの一時停止、リザーブドノード | 利用の時間帯が偏る / 常時使う |
⚠️ 頻出: 「時間に余裕のある夜間の Glue ジョブのコストを下げたい」は Flex、「EMR のコストを下げたいが中断でデータを失いたくない」はタスクノードのスポットです。
②サーバーレスとプロビジョニングの費用の考え方
| 負荷の形 | 有利な選択 |
|---|---|
| 散発的、1日に数回、予測できない | (、 Serverless、 Serverless、、)。使わない時間の費用がない |
| 常に高い負荷が一定に続く | (EMR on のリザーブド、Redshift のプロビジョンドのリザーブドノード)。単価を下げられる |
詳しい比較は「サーバーレスとプロビジョニングのトレードオフ」の章で扱います。
③読む量を減らす ⚠️ 頻出
や はスキャンしたデータ量で課金され、 や も読む量が多いほど時間がかかります。
| 手段 | 効果 |
|---|---|
| パーティション (日付など) | WHERE 句の条件に合うフォルダだけを読む |
| 列指向の形式 (/) | 必要な列だけを読む |
| 圧縮 | 読むバイト数そのものを減らす |
| 増分の処理 (ブックマーク、) | 毎回全量を処理しない |
| Glue で読む前にパーティションを絞る | |
| SELECT * を避ける | 必要な列だけを指定する |
| 結果の再利用 | Athena のクエリ結果の再利用で、同じクエリを再実行しない |
Athena のワークグループでは、1クエリあたりのスキャン量の上限 (データ使用量の制御) を設定し、想定外に大きなクエリを止められます。
④保管と転送の費用
| 手段 | 内容 |
|---|---|
| のライフサイクル | 古い raw データを低頻度アクセスやのクラスへ移す、不要になれば削除する |
| S3 Intelligent-Tiering | アクセスの頻度が読めないデータを自動で安い階層へ |
| 未完了のマルチパートアップロードの削除 | ライフサイクルルールで残骸を消す |
| の結合 | S3 のリクエストの回数と、処理のオーバーヘッドを減らす |
| 同じで処理 | リージョン間の転送料金を避ける |
| S3 のゲートウェイ | からの S3 へのアクセスで、 ゲートウェイのデータ処理料金を避ける |
⑤AWS Budgets と Cost Explorer による監視 ⚠️ 頻出
| サービス | 役割 | 使いどころ |
|---|---|---|
| 予算 (費用や使用量) を決め、実績や予測が閾値を超えたら通知する。アクションで ポリシーの適用などもできる | 「月の費用が予算の 80% を超えたら知らせる」 | |
| 過去の費用と使用量をサービス、タグ、アカウントで分けてグラフで分析し、予測する | 「どのパイプラインの費用が増えたか」を調べる | |
| コスト配分タグ | リソースのタグ (例: pipeline=sales) で費用を分ける | チームやパイプラインごとの費用を見る |
| Cost Anomaly Detection | で、いつもと違う費用の増加を検知して通知する | 設定ミスによる急な費用の増加に気づく |
⚠️ 頻出: 「費用が予算を超えそうになったら通知」は AWS Budgets、「費用の増減の内訳を分析」は Cost Explorer です。タグで分けるには、タグをコスト配分タグとして有効にしておきます。
試験対策
①判断マトリクス
| 問題文のキーワード | 選ぶ手段 |
|---|---|
| 急がない ジョブを安く | Flex 実行クラス |
| Glue のワーカーが段階によって余る | オートスケーリング |
| を安く、データは失わない | タスクノードをスポット、インスタンスフリート |
| EMR が処理のない時間も動いている | 一時的なクラスター、自動終了、EMR Serverless |
| 散発的な処理の待機時間の費用をなくす | |
| のスキャン量が多く高い | パーティション、、圧縮 |
| 想定外に大きな Athena のクエリを止める | ワークグループのデータ使用量の制御 |
| の費用と速さの最適点 | メモリの設定を測って調整、Arm |
| ゲートウェイの料金が へのアクセスで高い | S3 のゲートウェイ |
| 予算超過の前に通知 | |
| どのパイプラインの費用が増えたか | + コスト配分タグ |
| 急な費用の増加を自動で検知 | Cost Anomaly Detection |
②よくある誤答
- 期限の厳しいジョブに Flex やスポットを使うこと。開始の遅れや中断で SLA を守れません。
- のコアノードやプライマリノードをスポットにして費用を下げること。
- で予算超過の通知を設定しようとすること。通知は です。
- 計算の費用だけを見て、スキャン量や転送の費用を見落とすこと。
参考文献
- Configuring job properties for Spark jobs (Flex execution)
- Using auto scaling for AWS Glue
- Best practices for Amazon EC2 Spot Instances with Amazon EMR
- Optimize data (Amazon Athena)
- Using workgroups to control query access and costs (Amazon Athena)
- Managing your costs with AWS Budgets
- Analyzing your costs with AWS Cost Explorer