5 ノードのクラスターで Presto 大規模スキャン クエリを実行すると、1 つのノードのみがクエリ コーディネーターであり、ネットワーク経由で 5 つの hdfs ノードからデータを読み取るように見えます。
すべての presto プロセスはデータ ノードで実行されます。
ショートカット local read を使用して 5 つのノードが hdfs からデータを読み取れるようにする方法はありますか?
Presto ノードは事前集計を行っていますか?
HDFS データ ノードと同じマシンに Presto ワーカーをインストールしたかどうかは、あなたの質問からは明らかではありません。まだお持ちでない場合は、インストール手順が役立ちます。
すべてのデータ ノードに Presto ワーカーを配置すると、Presto は、ローカル DFS ノードからデータにアクセスするときにローカル読み取りを自動的に実行する必要があります。Presto は、DFS ノードと同じマシンで作業をスケジュールすることを好みますが、そのマシンが過負荷の場合、別のマシンで作業をスケジュールするため、通常はリモート読み取りを取得します。読み取りの大部分はローカルである必要があり、コーディネーターで com.facebook.presto.execution:name=NodeScheduler mbean を使用してこの分布を確認できます。
Presto は常に、リーフ ワーカー ノードで部分集約を実行します。
すべてのノードに presto がインストールされていて、presto ワーカーにローカル ストライプを処理させたい場合は、「hive.force-local-scheduling」セッション フラグを true に設定する必要があります。これは、私が見た presto バージョン (0.153) ではデフォルトで false です。
詳細については、 https ://github.com/prestodb/presto/issues/894 を参照してください。