The Doppler Quarterly (日本語) 秋 2017 | Page 28

EMR クラスターおよび Apache Tez のソフトウェア セレクション Hive ストレージの構造 Apache Hive と合わせて Apache Tez をインストールするかど で整理することをお勧めします。これにより、クエリエンジンは トップレベルの S3 の下では、データファイルをフォルダー構造 うかを選択できます。従来の方法では、 Hive は MapReduce 大きな表 ( ファイル ) のスキャンを回避し、複数の表の組み合 実行エンジンによって処理されます。この場合、計算グラフを わせを最適化することで、データアクセスを最適化できます。 横断しながら継続してディスクにデータを書き戻す必要があり S3 のデータを整理することでこの最適化を達成するために、 ます。これは、ディスク I/O のパフォーマンスペナルティの原 CTP では通常以下の 2 つの戦略を使用します。1) Hive ベース 因となります。Apache Tez では、中間データが計算グラフの のパーティショニング、 2) バケッティング。 次のノードに直接渡されるため、ディスクにデータが書き込ま れません。Hive と合わせて Apache Tez をインストールする と、 Tez がデフォルトの実行エンジンとなります。Tez によって Hive のクエリパフォーマンスを全般的に向上できるため、 Hive と合わせて Tez を使用することをお勧めします。Apache Tez については、この記事のパフォーマンス最適化に関するセク ションでより詳しく紹介します。 パーティションは Hive のディレクトリで、パーティションキーの 値は実際のパーティションディレクトリ名で保存され、パーティ ションキーは表の仮想列となります。ただし、バケッティングの 場合、各バケットはハッシュアルゴリズムに基づいて細分化さ れた実際のデータを保持するファイルとなります。バケッティン グでは表に仮想列が追加されません。パーティショニング戦略 を最適化することで、パーティション排除によってクエリの応答 速度を向上でき、バケッティングでは同時最適化によって応答 Hive データストレージの考慮事項 を向上できます。 AWS での Apache Hive の実装においてデータストレージに 推奨されるベストプラクティスは、 S3を使用して、 S3データファ イルの一番上に Hive 表を構築することです。このようにコン ピュートとストレージを分離することで、過渡的な EMR クラス Hive の保存形式 ストレージでファイル形式を選択する場合、以下を考慮する必 要があります。 ターを実現可能にし、 S3 に保存されたデータを他の目的で使 用できるようになります。AWS ベースの Apache Hive データ ストレージ設計で最も重要な 2 つの考慮事項は、 1) Hive スト レージの構造、 2) S3 バケット内のファイルの保存形式です。 • 列指向ストレージのサポート • 分割可能性 • 圧縮 • スキーマ進化 • インデックス機能 S3 – バケット 表 トランザクション パーティション パーティション 時間ごと クラスター 製品 ID 時間ごと クラスター 製品 ID 図 2: Hive のパーテイションおよびクラスター 26 | THE DOPPLER | 2017 年秋号