業務場景:從S3中讀取大量小的Avro文件,進行簡單處理,轉換成parquet文件。 問題點:從S3讀取文件,實際上是一個文件一個請求發送到S3。並行度低。(固然S3也有並行設置,可是Spark集羣每次處理的文件數量是CPU數)。 優化:創建Spark集羣時,買較多的CPU數,和較少的內存數。緩存
對於Spark要明確兩個資源的概念,CPU和內存。CPU提高task並行度。內存提高運算效率,緩存空間。 採用Spark框架,創建Spark集羣時,儘可能判斷業務的核心處理是屬於計算密集型,仍是IO密集型。 AWS有不一樣的機型和服務,適用於不一樣的業務處理。在計算密集型的處理中,購買內存佔比大的機型。在IO密集型的處理中,購買CPU佔比較大的機型。 將AWS實例類型從R換爲C後,處理速度提高了40%,而且集羣花費減小25%。 AWS也提供spot實例服務。此服務即向AWS申請空閒資源,花費更少,可是不必定能申請到。適合處理時間有彈性的任務。處理思路能夠爲主備集羣。spot服務爲主集羣,再配置另外一個備用集羣。判斷spot服務是否啓動,若是沒有申請到資源,那麼建立備用集羣,執行任務。框架