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

ドを Web で見つけることができます。Tez を実際に使用する 場合は詳細を確認し、基盤となる概念を理解し、実際のデー 長期間稼動するプロセスデーモン (LLAP) タで実験することをお勧めします。 パフォーマンスへの需要が高まり、 Tez やコストベースの最 ベクトル化したクエリの実行 れたため、 Hive のパフォーマンスはますます高くなっていま Hive のデフォルトのクエリ実行エンジンでは、 1 度に 1 行ずつ 処理されます。これにはネストされたループ内で複数レイヤー の仮想メソッド呼び出しが要求されるため、 CPU の観点から 見てとても非効率的です。ベクトル化したクエリの実行は、 1024 行を一括で読み込み、個々のレコードではなくレコードのコレ クション全体に操作を適用することで、このような非効率性を 排除することを目的とした Hive の機能です。このベクトルモー ドの実行は、スキャン、フィルター適用、集約、結合などの一 般的なクエリ操作において速度を桁違いに向上できることが 証明されています。ベクトル化したクエリの実行を使用するに は、データを ORC に保存し、 format.hive.vectorized.exe- cution.enabled のプロパティを true に設定し、 ORC 形式の 表に対してクエリを実行します。EMR クラスターでのベクトル 化したクエリの実行は、現在デフォルトでは有効でないため、 Hive でこの機能を手動で有効化する必要があります。 コストベースの最適化 Apache Hive でのコストベースの最適化 (CBO) の考え方は、 リレーショナルデータベースの世界での考え方と非常に似てい ます。表またはパーティションの中の行数、特定の対象列のヒ ストグラムなどの統計を収集し (これは、クエリ最適化のコスト 関数のインプットとして機能します )、 CBO が異なるクエリの実 行プランを比較して最も「コスト」が低いプランを選択できるよ うにします。長期的な実行プランを実行するよりも、単に保存さ れた統計をクエリすることで、クエリに対する回答が非常に速く 適化などのさまざまなソリューションコンポーネントが追加さ す。HDFS DataNode による直接相互通信に代わる長期間の デーモンである LLAP は、特に列チャンクのプリフェッチングと キャッシングによって HIVE を成熟の次の段階へと進めようと しています。LLAP デーモンはクラスターのワーカーノードで実 行され、 I/O、キャッシング、クエリの断片的実行を処理します。 実行全体は既存の Hive 実行エンジン (Tez など ) によって計 画および監視されます。LLAP デーモンによって実行された作 業の結果は、クエリに応じて、 Hive クエリの結果の一部を構成 するか、または外部の Hive タスクに渡されます。 多くの環境で となる要件は、列レベルの粒度の高いアクセス 制御です。LLAP デーモンが別のアプリケーションによって使 用でき、デーモンが任意の API を通じてオープンであることを 考えると、 LLAP を使用する別のデータ処理フレームワークに 対しても粒度の高いアクセス制御を実装することが推奨され ます。これについての最適な例は、 LLAP を使用して Apache Hive の SQL DataFrame で あ る Apache Spark に デ ー タ をロードする機能です。Apache Ranger を使用することで、 Apache Spark のみでは不可能な行 / 列レベルの粒度の高い アクセス制御を実現できます。 結論 Apache Hive はここ数年で劇的に成熟し、企業の大規模デー タウェアハウスのニーズをサポートできるプラットフォームに成 長しました。以前は、迅速な応答時間を必要とするクエリワー 得られる場合があります。 クロードに対して Hive は適していませんでした。しかし現在、 Hive の CBO エンジンは、 Hive Metastore の統計を使用して とで、 1 秒未満の応答時間を実現できます。現代の企業にとっ 最適なクエリプランを作成します。最適化に使用される統計に は 2 つのタイプがあります。表のステータス ( 圧縮前の表のサ イズ、行数、データを保存するために使用されているファイル数 など ) と列の統計です。 適切に調整した Apache Hive on Tez に LLAP を実装するこ て、ユースケース駆動型の、適切に設計された Apache Hive ベースのデータウェアハウスソリューションは真剣に検討する に値すると言えるでしょう。 CBO の欠点は、コストベースの最適化エンジンを効果的にす るためには、表に関する正確な統計を収集および保持する必 要があることです。残念なことに、表統計の収集はコストのか かる操作です。しかし、 1 度完了すれば、その表に関するその後 のすべてのクエリは収集した統計の恩恵を受けることができま す。 2017 年秋号 | THE DOPPLER | 29