AWS Glue のストリーミングジョブを最適化する方法を教えてください。

所要時間1分
0

AWS Glue のストリーミングジョブを最適化したいです。

解決策

AWS Glue のストリーミングジョブを最適化するには、次のベストプラクティスを実施してください。

  • Amazon CloudWatch を使用して AWS Glue ストリーミングジョブのメトリクスを監視します。ジョブに受信データレートに対応するための十分な CPU、メモリ、エグゼキューターがあることを確認します。
  • バッチ間隔は、バッチ処理時間より長期である必要があります。バッチ処理時間を短縮する方法については、Apache Spark のウェブサイトで「バッチ処理時間の短縮」を参照してください。
  • AWS Glue データカタログを使用してデータスキーマを保存、管理します。
  • Apache Parquet などの効率的なデータシリアル化形式を使用してください。Apache Parquet の詳細については、Apache Spark のウェブサイトで「Parquet ファイル」を参照してください。
  • チェックポイント機能を有効にします。詳細については、Apache Spark のウェブサイトで「チェックポイント機能」を参照してください。
  • Apache Iceberg などのオープンテーブル形式を使用します。ストリーミングジョブがデータレイクテーブルを使用しない場合は、テーブルを Iceberg に移行します。コミットを微調整し、古いスナップショットは失効させ、コンパクションを使用してメタデータファイルをクリーンアップするよう注意してください。Iceberg テーブルのメンテナンス方法の詳細については、Apache Iceberg のウェブサイトで「推奨されるメンテナンス」を参照してください。
  • 自動スケーリングを有効にします
    注: 自動スケーリングは AWS Glue バージョン 3.0 以降でのみ使用できます。
  • 抽出、変換、ロード (ETL) ジョブを使用または作成する際には、ベストプラクティスに従ってください。

Spark ストリーミングを調整する

次の構成を使用して、Spark Streaming のストリーミングを調整します。

  • spark.streaming.backpressure.enabled を使用すると、バックプレッシャーを有効にしてストリーミングジョブの受信レートを制御し、スケジュール機能の遅延や処理時間を補正できます。
  • spark.streaming.receiver.maxRate を使用すると、レシーバーがデータを受信できる最大レートを上げることができます。この値は、1 秒あたりのレコード数で設定します。
  • レシーバーで先行書き込みログ (WAL) を有効にするには、spark.streaming.receiver.writeAheadLog.enable を使用します。WAL を使用すると、ドライバーで障害が発生した際にデータを回復できます。
  • 少数のファイルを作成するサイズウィンドウを定義するには、windowSize を使用します。詳細については、「インタラクティブ開発用に入力ストリームをサンプリングする」を参照してください。
  • spark.sql.shuffle.partition を使用すると、シャッフルパーティションを調整してデータを効率的にシャッフルすることで、広範な変換を行うことができます。

詳細については、Apache Spark のウェブサイトで「パフォーマンスの調整」を参照してください。

関連情報

AWS Glue ストリーミングジョブのトラブルシューティング方法を教えてください

Amazon Kinesis 接続

Kafka 接続

Docker イメージを使用して開発する

AWS公式
AWS公式更新しました 5ヶ月前