2017-11-11 12 views
0

糸ベースのクラスタに配備されたSpark Jobsを最適化する最適な方法は何ですか? 。スパークジョブズヤーン|パフォーマンスチューニングと最適化

コードレベルではなく設定に基づいて変更を探しています。私の質問は、Spark StreamingまたはSpark SQLで開発されたジョブを最適化するためにどのようなアプローチを使用すべきか、古典的な設計レベルの質問です。

答えて

0

BigDataが魔法であり、あなたのコードがBigDataクラスタに一旦配備されると、Dreamのように動作するという神話があります。

すべての初心者は同じ信念を持っています:)また、Webブログでの設定がすべての問題に対してうまく機能するという誤解もあります。

クラスタを深く控えめにしなくても、Hadoopでジョブを最適化またはチューニングするためのショートカットはありません。

しかし、以下のアプローチを考慮すると、数時間であなたの仕事を最適化できることを確信しています。

私は、ジョブを最適化するための純粋な科学的アプローチを適用することをお勧めしました。以下の手順に従って、Jobsの最適化をベースラインとして開始することができます。

  1. クラスタで設定されているブロックサイズを理解してください。
  2. コンテナ/エグゼキュータの最大メモリ制限を確認してください。
  3. クラスタで使用可能なVCoresの下で
  4. Sparkストリーミングリアルタイムジョブの場合に特にデータレートを最適化します。 (これはスパークストリーミングで最もトリッキーな公園です)
  5. 最適化中にGC設定を検討してください。
  6. コードレベルでは常に最適化の余地があり、それも考慮する必要があります。
  7. データレートに基づいて、ステップ1に従ってクラスタの構成に基づいてブロックサイズを最適に制御します。 Sparkのように、バッチインターバル/ブロックインターバルを計算することができます

    ここで最も重要なステップがここにあります。私が共有している知識は、Sparkストリーミング、sql with Kafkaなどのリアルタイム使用のケースに特有のものです。

まず第一に、あなたの仕事が最もよく働く番号やメッセージ/記録を知る必要があります。その後、その特定の数に速度を制御し、ジョブを最適化するための構成に基づく実験を開始することができます。私は以下のようにして、高いスループットでパフォーマンスの問題を解決できるようにしています。

Performance Optimization Experiments

私は私が上記のグリッドを作り、同じジョブではなく5差のコンフィギュレーションバージョンで実験を開始するよりも、Spark Configurationsからのパラメータのいくつかを読んで、私の雇用への影響を確認しています。 3回の実験の中で私は自分の仕事を最適化することができます。上の写真で強調表示されている緑は私の仕事の最適化のための魔方式です。

同様のパラメータが同様の使用例に非常に役立つかもしれませんが、明らかにこれらのパラメータはすべてをカバーしていません。最後に、私はこのアプローチを使用すると、数時間であなたの仕事を最適化できることを確信しています。

+0

こんにちは。私たちのコミュニティの多くの人々は、ソフトウェアエンジニアに関するジェンダーの前提を見るたびに、排除されていると感じる人々を心配していると言います。私は、より歓迎的な環境のために、あなたの投稿に男性指向の挨拶と代名詞を追加することを避けることができますか?ありがとうございました。 – halfer