現代のデータ環境では、構造化データと非構造化データをシームレスに統合し、簡単に拡張でき、効率的なAI/MLワークロードを実現する新しいタイプのインフラストラクチャが必要です。
このブログ記事では、現在のアプローチを最適化できる 3 つの強力なツールについて詳しく説明します。
Tabular は、Apache Iceberg のオリジナル作成者によって作成されたデータ プラットフォームです。任意のコンピューティング レイヤーに接続できる独立したユニバーサル ストレージ プラットフォームを提供するように設計されており、データ ベンダーのロックインを排除します。この機能は最新のデータ スタックにとって重要であり、ユーザーは特定のベンダーの古いツール セットや不一致なツール セットに縛られることなく、クラス最高のコンピューティング ツールとストレージ ツールを選択できます。
で
この実装はIcebergのS3FileIOを活用しています。S3FileIOはいくつかの理由からHadoopのファイルIOよりも優れていると考えられています。そのいくつかについてはすでに説明しました。
クラウド ストレージ向けに最適化: Iceberg の S3FileIO は、クラウド ネイティブ ストレージで動作するように設計されています。
スループットの向上とスロットリングの最小化: Icebergは
厳格な一貫性:アイスバーグは
プログレッシブマルチパートアップロード: IcebergのS3FileIOは、
チェックサム検証: Icebergでは
カスタムタグ: Icebergは追加をサポートします
ネガティブキャッシュの回避: IcebergのFileIOインターフェースは、Hadoop互換のファイルシステムほど厳格な保証を必要としないため、
対照的に、S3FileIO より前に使用されていた Hadoop の S3A FileSystem は、クラウド ストレージに対して同じレベルの最適化を提供しません。つまり、過去の罠で将来を見据えたデータ レイク インフラストラクチャを妨げないでください。
始める前に、システムが次の要件を満たしていることを確認してください。
最初から始める場合は、
docker-compose --version
まず、TabularのYAMLファイルを複製またはコピーします。
提供されている YAML ファイルは、Docker Compose 構成ファイルです。これは、マルチコンテナ Docker アプリケーションの一連のサービスとその構成を定義します。この場合、Spark-Iceberg と MinIO の 2 つのサービスがあります。各セクションを詳しく見ていきましょう。
1. Spark-Icebergサービス:
spark-iceberg: image: tabulario/spark-iceberg container_name: spark-iceberg build: spark/ networks: iceberg_net: depends_on: - rest - minio volumes: - ./warehouse:/home/iceberg/warehouse - ./notebooks:/home/iceberg/notebooks/notebooks environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 ports: - 8888:8888 - 8080:8080 - 10000:10000 - 10001:10001 rest: image: tabulario/iceberg-rest container_name: iceberg-rest networks: iceberg_net: ports: - 8181:8181 environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 - CATALOG_WAREHOUSE=s3://warehouse/ - CATALOG_IO__IMPL=org.apache.iceberg.aws.s3.S3FileIO - CATALOG_S3_ENDPOINT=http://minio:9000
image: spark-iceberg サービスに使用する Docker イメージを指定します。この場合、tabulario/spark-iceberg:latest イメージが使用されます。
depends_on: spark-iceberg サービスが rest サービスと minio サービスに依存することを指定します。
container_name:コンテナに特定の名前 (spark-iceberg) を割り当てます。
environment: Spark や AWS 認証情報など、コンテナの環境変数を設定します。
ボリューム:ローカル ディレクトリ (./warehouse および ./notebooks) をコンテナー内のボリュームとしてマウントします。
ポート: Spark UI やその他のサービスにアクセスするために、コンテナー ポートをホスト ポートにマップします。
2. Minioサービス:
minio: image: minio/minio container_name: minio environment: - MINIO_ROOT_USER=admin - MINIO_ROOT_PASSWORD=password - MINIO_DOMAIN=minio networks: iceberg_net: aliases: - warehouse.minio ports: - 9001:9001 - 9000:9000 command: ["server", "/data", "--console-address", ":9001"]
image: MinIO サービスの Docker イメージを指定します。
container_name:コンテナに特定の名前 (MinIO) を割り当てます。
environment:ルート ユーザーの資格情報を含む MinIO を構成するための環境変数を設定します。
ポート: MinIO UI にアクセスするためにコンテナ ポートをホスト ポートにマッピングします。
command:特定のパラメータを使用して MinIO サーバーを起動するコマンドを指定します。
MinIOサービスのもう一つの側面は
mc: depends_on: - minio image: minio/mc container_name: mc networks: iceberg_net: environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 entrypoint: > /bin/sh -c " until (/usr/bin/mc config host add minio http://minio:9000 admin password) do echo '...waiting...' && sleep 1; done; /usr/bin/mc rm -r --force minio/warehouse; /usr/bin/mc mb minio/warehouse; /usr/bin/mc policy set public minio/warehouse; tail -f /dev/null "
depends_on: mc サービスが MinIO サービスに依存することを指定します。
image: mc サービスの Docker イメージを指定します。
container_name:コンテナに特定の名前 (mc) を割り当てます。
environment: MinIO クライアントを構成するための環境変数を設定します。
entrypoint: MinIO クライアントのセットアップ手順を含む、コンテナーのエントリ ポイント コマンドを定義します。
/usr/bin/mc rm -r --force minio/warehouse; /usr/bin/mc mb minio/warehouse; /usr/bin/mc policy set public minio/warehouse; tail -f /dev/null "
このコマンドのシーケンスは基本的に次のタスクを実行します。
既存のウェアハウス ディレクトリとその内容を MinIO サーバーから削除します。
warehouse という名前の新しいバケットを作成します。
ウェアハウス バケットのアクセス ポリシーをパブリックに設定します。
この Docker Compose ファイルは、Spark、PostgreSQL、MinIO のサービスを使用してマルチコンテナ環境をオーケストレーションします。依存関係、環境変数、およびサービスを一緒に実行するために必要なコマンドを設定します。サービスは連携して動作し、Spark と Iceberg を使用し、MinIO をオブジェクト ストレージ バックエンドとしてデータ処理の開発環境を作成します。
ターミナル ウィンドウで、リポジトリの tabular-spark-setup ディレクトリに cd し、次のコマンドを実行します。
docker-compose up
資格情報admin:password
使用してhttp://127.0.0.1:9001
で MinIO にログインし、ウェアハウス バケットが作成されたことを確認します。
すべてのコンテナが起動したら、 http://localhost:8888
に移動して Jupyter Notebook サーバーにアクセスできます。
サンプル ノートブックの 1 つを実行し、 http://127.0.0.1:9001
の MinIO に戻って、ウェアハウスにデータが取り込まれていることを確認します。
Iceberg、Tabular、MinIO を使用した最新のデータレイクの構築に関するこのチュートリアルは、ほんの始まりに過ぎません。この強力な 3 部構成は、可能性の世界への扉を開きます。これらのツールを使用すると、構造化データと非構造化データをすべてシームレスに統合して分析し、隠れたパターンを発見して、イノベーションを促進するデータ主導の意思決定を行うことができます。このアーキテクチャの効率性と柔軟性を本番環境で活用して、AI/ML イニシアチブを促進し、機械学習モデルの真の可能性を解き放ち、画期的な発見への道を加速します。お問い合わせください。