2017-11-11 187 views
0

優化在基於Yarn的羣集上部署的Spark Jobs的最佳方式是什麼? 。|性能調整和優化

尋找基於配置而非代碼級別的更改。我的問題是經典設計級別的問題,應該使用什麼方法來優化Spark Streaming或Spark SQL上開發的作業。

回答

0

有一個神話,BigData是神奇的,一旦部署到BigData集羣,您的代碼將像夢一樣工作。

每個新手都有同樣的信念:)也有一種誤解認爲,通過網絡博客給出的配置對於每個問題都能正常工作。

沒有深度優化您的集羣的優化或調優Hadoop上的作業沒有捷徑。

但考慮到下面的方法,我敢肯定,你將能夠在幾個小時內優化你的工作。

我更喜歡運用純粹的科學方法來優化作業。可以遵循以下步驟來開始優化作爲基線的作業。

  1. 瞭解在羣集配置的塊大小。
  2. 檢查容器/執行程序可用的最大內存限制。
  3. 在可用於集羣的VCores下
  4. 在Spark流實時作業的情況下特別優化數據的速率。 (這是Spark-streaming中最棘手的公園)
  5. 考慮優化時的GC設置。
  6. 在代碼級別上總是有優化的空間,這也需要考慮。
  7. 根據數據速率,按照步驟1,根據羣集配置最佳地控制塊大小。像在Spark中一樣,可以計算batchinterval/blockinterval

    現在最重要的步驟來到這裏。我分享的知識更專用於實時用例,如Spark流,使用Kafka的sql。

首先你需要知道的是,你需要知道什麼樣的數字或消息/記錄你的工作最好。之後,您可以控制該特定數量的速率,並啓動基於配置的實驗來優化作業。就像我在下面所做的那樣,能夠解決高吞吐量的性能問題。

Performance Optimization Experiments

我從Spark Configurations看了一些參數和相同的工作,但有五個差異配置版本檢查我的作業的影響比我作出了上述電網並開始實驗。在三次實驗中,我能夠優化我的工作。上圖中突出顯示的綠色是我作業優化的魔術公式。

雖然相同的參數可能對類似的用例非常有幫助,但顯然這些參數並不包含所有內容。最後但並非最不重要的是,我敢肯定,使用這種方法,你將能夠在幾個小時內優化你的工作。

+0

你好。我們社區中的許多人有時會說,每當他們看到有關軟件工程師的性別假設時,他們就會擔心人們會被排除在外。我想知道,你能否儘量避免在你的帖子中添加男性導向的問候和代詞,以便創造一個更加溫馨的環境?謝謝。 – halfer