9

答えは「場合による」と思いますが、 Prestoに使用する予定のハードウェアの種類に関する一般的なガイダンスはありますか?

Presto はコーディネーターと一連のワーカーを使用し、ワーカーはデータを使用して実行されるため、主な問題は、コーディネーターに十分な RAM を確保すること、ワーカーからコーディネーターに送信される部分的な結果に十分なネットワーク帯域幅を確保することなどだと思います。

これに適切なサイズを設定する方法について、一般的な考えを提供できる場合は、ぜひお聞かせください.

4

1 に答える 1

37

ほとんどの人は、すでに持っている Hadoop ノードでTrino (以前の PrestoSQL)を実行しています。Facebook では通常、Hadoop クラスター内のいくつかのノードで Presto を実行して、ネットワーク負荷を分散させています。

一般に、新しいクラスターの業界標準の比率を使用します。余裕があれば、10 ギガビットのネットワークを使用して、ディスクごとに 2 コアと 2 ~ 4 ギガのメモリを使用します。数台のマシン (4 台以上) を用意したら、データに対するクエリを使用してベンチマークを行います。比率を調整する必要があるかどうかは明らかです。

クラスタのハードウェアをゼロからサイジングする場合、考慮すべき点がいくつかあります。

  • 合計データ サイズによって、必要なディスクの数が決まります。HDFS には大きなオーバーヘッドがあるため、多くのディスクが必要になります。
  • ディスクに対する CPU 速度の比率は、ホット データ (使用しているデータ) とコールド データ (アーカイブ データ) の比率によって異なります。データ ウェアハウスを開始したばかりの場合、すべてのデータが新しくてホットになるため、多くの CPU が必要になります。一方、ほとんどの物理ディスクは非常に高速にしかデータを配信できないため、ある時点で CPU を増やしても役に立ちません。
  • メモリに対する CPU 速度の比率は、実行する集計と結合のサイズ、およびキャッシュする (ホット) データの量によって異なります。現在、Presto では、結合の最終的な集計結果とハッシュ テーブルが 1 台のマシンのメモリに収まるようにする必要があります (これらの制限の削除に積極的に取り組んでいます)。大量のメモリがある場合、OS はディスク ページをキャッシュするため、クエリのパフォーマンスが大幅に向上します。

2013 年、Facebook では Presto プロセスを次のように実行しました。

  • 16 GB ヒープで JVM を実行し、ほとんどのメモリを OS バッファに使用できるようにしました
  • Presto を実行したマシンでは、MapReduce タスクを実行しませんでした。
  • ほとんどの Presto マシンには 16 個の実際のコアがあり、プロセッサ アフィニティ (最終的には cgroup) を使用して Presto を 12 個のコアに制限しました (Hadoop データ ノード プロセスやその他のものを簡単に実行できるようにするため)。
  • ほとんどのサーバーは 10 ギガビット ネットワーク上にありましたが、1 ギガビットを使用する大規模で古い粗悪なクラスターが 1 つありました (これは正常に機能しました)。
  • コーディネーターとワーカーには同じ構成を使用しました。

最近では、以下を実行しました。

  • マシンには 256 GB のメモリがあり、200 GB の Java ヒープを実行しました。
  • ほとんどのマシンには 24 ~ 32 の実際のコアがあり、Presto にはすべてのコアが割り当てられました。
  • マシンにはログ用の最小限のローカル ストレージのみがあり、すべてのテーブル データはリモート (独自の分散ファイル システム内) にありました。
  • ほとんどのサーバーには、ファブリック ネットワークへの 25 ギガビット ネットワーク接続がありました。
  • コーディネーターとワーカーは同様の構成でした。
于 2013-11-08T18:58:23.183 に答える