Chuyển đến nội dung chính

第1課:Data Repositories & Ingestion — S3、Kinesis、Glue

MLデータレイクとしてのS3。ストリーミング取り込み用Kinesis Data Streams/Firehose。 AWS Glue ETLジョブとData Catalog。Lake Formation。Data Wrangler。 ストレージ戦略:Parquet、ORC、CSV、JSON。

AWS ML Data Repositories & Ingestion

Data Repositories & Ingestion:MLパイプラインにおけるS3、Kinesis、Glue、Lake Formation

1. MLS-C01におけるデータエンジニアリングの概要

データエンジニアリングドメインはMLS-C01試験の20%を占めます。「ML向けデータの取り込み・保存・変換にどのサービスを使うべきか?」という質問が頻出します。

試験のヒント: データエンジニアリングの問題の大半はシナリオが提示され、適切なサービスを選ぶ形式です。主要パターン:バッチ → S3 + Glue、ストリーミング → Kinesis、構造化/SQL → Athena、カタログ → Glue Data Catalog。

2. Amazon S3 — MLデータレイク

Amazon S3はAWS上のMLデータストレージの基盤です。すべてのMLパイプラインはS3から始まりS3で終わります:訓練データ、モデルアーティファクト、予測結果。

2.1. ML向けS3ストレージクラス

ストレージクラスユースケースコスト
S3 Standardアクティブな訓練データ、頻繁なアクセス最も高い
S3 Intelligent-Tieringアクセスパターンが混在(自動階層化)自動最適化
S3 Standard-IAバックアップデータセット、低頻度アクセスStandardより低い
S3 Glacier Instant Retrievalアーカイブデータセット、時折の取得低い
S3 Glacier Deep Archive長期コンプライアンスアーカイブ最も低い

2.2. ML向けファイルフォーマット

フォーマットタイプ最適な用途圧縮
Parquetカラムナー分析、大規模データセット、Feature Store優秀
ORCカラムナーHive/EMRワークロード優秀
CSV行ベースシンプル、SageMaker訓練入力悪い
JSON半構造化ネストデータ、API悪い
RecordIOバイナリSageMaker Pipe Mode訓練良い

試験のヒント: 大規模訓練のパフォーマンス最適化について問われた場合、正解は通常Parquet(カラムナー、圧縮)への変換とSageMakerでのPipe Mode(File Modeの代わり)の使用です。

S3 Data Lake Architecture for ML:

┌─────────────────────────────────────────────────────────┐
│                    Amazon S3 Buckets                     │
├──────────────┬──────────────┬──────────────┬────────────┤
│  Raw Zone    │ Processed    │  Features    │  Models    │
│  (landing)   │  Zone        │  Zone        │  & Output  │
│              │              │              │            │
│  CSV/JSON    │  Parquet/ORC │  Feature     │  Model     │
│  original    │  cleaned     │  Store       │  Artifacts │
│  data        │  transformed │  snapshots   │  Predictions│
└──────────────┴──────────────┴──────────────┴────────────┘
       ↑                ↑                ↑
   Kinesis          AWS Glue         SageMaker
  (streaming)        (ETL)           Processing

3. Amazon Kinesis — ストリーミング取り込み

Kinesisはリアルタイムデータストリーミングのサービスファミリーです。試験で重要なトピックであり、4つのサービスを明確に区別する必要があります。

サービス機能送信先MLユースケース
Kinesis Data Streams (KDS)カスタムリアルタイム処理カスタムコンシューマーリアルタイム特徴量エンジニアリング
Kinesis Data Firehoseマネージド配信(コード不要)S3、Redshift、ES、Splunkデータレイクへのバッチロード
Kinesis Data Analyticsストリーム上のSQL/FlinkS3、Redshiftリアルタイム集計、異常検知
Kinesis Video Streams動画取り込みRekognition、SageMakerコンピュータビジョンパイプライン

試験のヒント: よくある質問:「IoTセンサーが継続的にデータを送信し、カスタムコードなしでS3に保存したい」→ Kinesis Data Firehose(マネージド、コード不要)。「カスタムロジックでリアルタイム処理が必要」→ Kinesis Data Streams。

3.1. KDSシャードとキャパシティ

Kinesis Data Streams Capacity:

┌─────────────────────────────────────────────┐
│  Each Shard:                                │
│  • Ingest:  1 MB/s OR 1,000 records/s       │
│  • Read:    2 MB/s                          │
│  • Retention: 24 hours (default) → 7 days  │
└─────────────────────────────────────────────┘

Stream with N shards:
• Total ingest: N × 1 MB/s
• Total read:   N × 2 MB/s

4. AWS Glue — ML向けETL

AWS GlueはフルマネージドETLサービスです。MLパイプラインでは、訓練前のデータの変換とクリーニングに使用します。

4.1. Glueコンポーネント

コンポーネント機能
Glue Data Catalog中央メタデータリポジトリ — スキーマ、テーブル、パーティション
Glue CrawlersS3/RDS/Redshiftからスキーマを自動検出しData Catalogに登録
Glue ETL JobsSparkベースの変換ジョブ(Python/Scala)
Glue DataBrewノーコードビジュアルデータ準備(250以上の組み込み変換)
Glue StudioビジュアルETLジョブビルダー(ドラッグ&ドロップ)

試験のヒント: Glue Data CatalogはAthena、EMR、Redshift Spectrumの共通メタデータストアです。「一元的なスキーマ管理」→ Glue Data Catalog。「ノーコードデータクリーニング」→ Glue DataBrew。

5. AWS Lake Formation

Lake FormationはS3 + Glueの上に構築され、データレイクのセキュリティとガバナンスを管理します。主要機能:カラムレベルおよび行レベルのアクセス制御。

Lake Formation Architecture:

  IAM Users ──→ Lake Formation ──→ S3 Data Lake
  IAM Roles       (Security         (Raw/Processed)
                   & Governance)
                       ↓
                  Column/Row
                  Level Access
                  Control

6. チートシート — データ取り込みサービス

シナリオサービス
ストリーミング → S3(コード不要)Kinesis Data Firehose
カスタムロジックのリアルタイム処理Kinesis Data Streams
ストリーミングデータ上のSQLKinesis Data Analytics (Flink)
バッチETL(Sparkベース)AWS Glue ETL Jobs
ノーコードビジュアルデータ準備Glue DataBrew
S3からのスキーマ検出Glue Crawlers + Data Catalog
S3上のSQLクエリAmazon Athena
データレイクガバナンスAWS Lake Formation
大規模Spark/HadoopAmazon EMR

7. 練習問題

Q1: ある企業がIoTセンサーデータをML訓練のためにAmazon S3に取り込みたいと考えています。データは継続的に到着し、カスタム処理は不要です。最もコスト効率の良いサービスはどれですか?

  • A) Amazon Kinesis Data StreamsとLambdaコンシューマー
  • B) Amazon Kinesis Data Firehose ✓
  • C) Amazon EMRとSpark Streaming
  • D) スケジュールされたAWS Glue ETLジョブ

解説:Kinesis Data Firehoseはフルマネージドでカスタムコードが不要です。ストリーミングデータをS3、Redshift、Elasticsearchに直接配信します。Data Streamsはカスタムコンシューマーが必要、EMRは大規模な管理が必要、GlueはバッチETL向けです。

Q2: データエンジニアがS3内の生のCSVファイルをデータベースにロードせずにSQLでクエリしたいと考えています。どのサービスを使うべきですか?

  • A) Amazon RDS
  • B) Amazon DynamoDB
  • C) Amazon Athena ✓
  • D) Amazon Redshift

解説:Amazon Athenaはサーバーレスで、ロードなしにS3データに対して直接SQLクエリを実行できます。CSV、Parquet、ORC、JSONなどのフォーマットをサポートしています。

Q3: Amazon S3に保存された大規模MLデータセットに対するカラムナー分析クエリで最高のパフォーマンスを提供するファイルフォーマットはどれですか?

  • A) CSV
  • B) JSON
  • C) XML
  • D) Apache Parquet ✓

解説:Parquetは優れた圧縮とプレディケートプッシュダウンをサポートするカラムナーフォーマットです。カラムナーフォーマットは必要なカラムのみを読み取るため、分析クエリのI/Oを劇的に削減します。