3

テーブルの作成時に理想的なデータの局所性またはレイアウトがわかっている場合に、Impala ノードがネットワークを介して他のノードから不必要にデータを要求することを避けたいと思います。これは、パーティションからのすべてのレコードがとにかく同じ場所 (ノード) で必要とされる「非加算」操作で役立ちます (パーセンタイルなど)。

パーティション内のすべてのデータを常に HDFS レプリカの単一ノードに配置するように Impala に指示することはできますか?

Impala-SQL では、「PARTITIONED BY」句がこの機能を提供するかどうかはわかりません。私の理解では、Impala はそのパーティションを HDFS 上の個別のファイルにチャンクしますが、HDFS はデフォルトで関連ファイルまたはブロックのコロケーションを保証しません (むしろ逆を達成しようとします)。

HDFS 開発に対する Impala の影響に関するいくつかの情報が見つかりましたが、これらが既に実装されているか、まだ計画中であるかは明確ではありません。

http://www.slideshare.net/deview/aaron-myers-hdfs-impala (スライド 23 ~ 24)

よろしくお願いします。

4

2 に答える 2

0

あなたが言及したスライド(「コロケーション ブロック レプリカ」)について - Hadoop 2.1 で実装された HDFS 機能( HDFS-2576 )についてです。ブロックを配置する場所に関するヒントを HDFS に提供する Java API を提供します。

2014年の時点ではImpalaでは使用されていませんが、そのための基礎を築くことは間違いないようです.Impalaに従来のMPPデータベースで配布キーを指定するのと同等のパフォーマンスを与えるためです.

于 2015-02-02T22:42:40.470 に答える
-1

いいえ、それは分散ファイル システムと MPP コンピューティングの目的を完全に無効にします。また、特にそれ自体に結合された 250 GB のテーブルについて話している場合は、単一障害点とボトルネックが作成されます。まさに、Hadoop が解決するように設計された種類の問題です。データをパーティショニングすると、名前ノードの HDFS にサブディレクトリが作成され、そのデータがクラスター内のデータノード全体に複製されます。

于 2014-10-21T03:29:10.813 に答える