MEGAZONEブログ
![Building and optimizing a data lake on Amazon S3](https://www.hyperbilling.jp/wp-content/uploads/2024/03/1-1.jpg)
Building and optimizing a data lake on Amazon S3
Amazon S3上でのデータレイクの構築と最適化
Pulisher : AI & Data Analytics Center チェ・スンヒョン
Description:Data Lake(S3)のストレージスペースの効率的な管理及び分析時にデータを迅速に提供する方法についての紹介セッション
はじめに
データの量が徐々に増加しており、そのデータを保管するData Lake(S3)でどのようにその保存スペースを効率的に管理し、分析時に迅速にデータを提供できるように最適化する方法を学びたいと思います。
セッションの概要紹介
![](https://www.hyperbilling.jp/wp-content/uploads/2024/03/2-1.jpg)
S3のScaleの観点から次のアジェンダを中心にセッションが行われました。
1.Data Siloを解決したScale
2.大規模データパフォーマンスの最適化
3.大規模データコストの最適化
4.大規模データ観点のガバナンス
5.Apache Icebergの紹介
![](https://www.hyperbilling.jp/wp-content/uploads/2024/03/3-1.jpg)
Breaking data silos at scale
メールサーバー、ファイル、インターネットなど様々な場所でデータが発生し、そのデータをそれぞれの組織で保管及び活用していました。 その後、膨大なデータをETLを通じて一つのリポジトリに集めて活用するためにS3が登場しました。 ここで見ることができるように、S3は膨大な量の大規模データ、データタイプ(定型/非定型)の影響を受けないサービスです。
Optimizing performance at scale
![](https://www.hyperbilling.jp/wp-content/uploads/2024/03/4-1.jpg)
Datalakeは膨大なデータをアップロードするのに多くの時間がかかります。これを解決するためS3ではMultipart uploads/Ranged GETsを提供しています。ユーザーが一つの100MBファイルをアップロードしても、S3内部で並列に処理してS3にデータをアップロードすることになります。
![](https://www.hyperbilling.jp/wp-content/uploads/2024/03/5-1.jpg)
そのほかにも、大規模なデータの場合はSizeとデータフォーマットも最適化を進めることができます。
・Object Size : prefixを活用してTPSを減らすことができます。
・Object Format : columnarフォーマットを活用するとpredict pushdownのようにより良い速度をサポートすることができます。
・Table Format : Apache Iceberg, Hudi, Deltaを活用して最適化することができます。
AWSのクラウド環境では、数百万ドライブにまたがるバケットを活用してストレージを拡張することができ、性能向上のためにエントロピー(Entropy)とエントロピー(Enthalpy)の概念を導入し、データ挿入に適用して処理性能を最適化することができます。 また、スケールアップによる性能向上は数百万TPS(トランザクション/秒)または数百万TS(トランザクション/秒)レベルまで可能です。
Icebergデータテーブル形式は効率的なS3ストレージのために設計され、AWSエコシステム全体で統合サポートされ、統一されたデータプラットフォームを構築可能であり、規模に応じて様々な要件を満たしながら性能向上を実現することで、Monistoryの設計が規模と性能を組み合わせることの重要性を強調しました。
Storage Class Choices
![](https://www.hyperbilling.jp/wp-content/uploads/2024/03/6.jpg)
データの活用頻度に応じてS3ストレージクラスを管理しながら、コスト最適化をサポートします。
データワークロードに合わせてlifecycleを構成するためには、transaction頻度、Expriation周期、Action頻度を一緒に考慮する必要があります。 この時、自分のデータがどのように使用されているか確認するのが難しい場合は、Storage Lensサービスを活用して分析することができます。
![](https://www.hyperbilling.jp/wp-content/uploads/2024/03/7-1024x768.jpg)
S3 Storage Lensで約28の無料指標を通じてデータのアクセス頻度、どのように活用されているかなどの内容を分析することができ、これを活用してライフサイクルを構成すると、コストの最適化が可能です。
Security and governance at scale
![](https://www.hyperbilling.jp/wp-content/uploads/2024/03/8-1024x768.jpg)
データに対してどのようにアクセス権限を与えるべきかについての悩みが増えています。
データアクセス制御は3つの方法で制御することができます。
1.IAMを活用して制御
最も多くの事例がありますが、IAM Role/User/Groupなど様々なことをマッピングする必要があるため、多くの時間がかかります。
2.Leverage S3 Access Grant(NEW) IAM主体にディレクトリの認証情報をS3のデータセットにマッピングし、これにより、エンドユーザーにS3アクセス権限を自動的に付与し、大規模なデータ権限管理に効果的です。
3.Lake Formation and S3 Access Grant カタログに登録が可能な定型データの場合にはLake formationを活用することができ、非定型データの場合にはS3 Access Grantを活用して権限管理が可能です。
セッションを終えて
コストなどの理由でS3 Data Lakeを使っていますが、データ量がだんだん増えてきてS3でもコストが多く発生し、データを読み込んで処理するのに多くの時間がかかっています。コストやパフォーマンスを最適化するためにS3 lifecycle、Storage Lens、Objectデザイン(file format,size)などについて詳しく知ることができました。