基于機器學習的Spark調參方法

Novel Method for Tuning Configuration Parameters of Spark Based on Machine Learning

本文是一篇關于Spark調參的文章,主要方法是基于二分類及多分類器的機器學習方法來對Spark特定job進行參數調整,從而提升作業(yè)整體性能。

本篇博文參考自:

2016 IEEE 18th International Conference on High Performance Computing and Communications:
《Novel Method for Tuning Configuration Parameters of Spark Based on Machine Learning》


1 文章概述及問題描述

Spark適用范圍越來越廣,相應的出現一些較為棘手的問題,其中就有job性能提升的問題。通常情況下,都是靠人為經驗去調整job參數,以盡量提升job運行性能。但是Spark的參數空間多大180種,單純靠認為去調整是極其不可靠而且費時的。
因此,本文就spark調參問題,提出一種基于二分類和多分類的機器學習的調參方法。最終發(fā)現C5.0算法具有最好的預測效果以及算法執(zhí)行效率。調參帶來的性能提升與默認參數相比,平均達到36%。
整個流程可參考下圖:



那么問題來了,訓練數據怎么來的?
對于某一類spark app,基本上其中的業(yè)務類型或是整個應用程序不會發(fā)生很大變化,唯一經常發(fā)生變動的是其輸入數據量,本文的模型考慮到這一方面,將輸入數據量作為了模型參數之一。整個訓練數據來自于現有spark app的運行日志,在日志中去提取到所需的時間數據和數據量變化的額數據。


2 相關研究及文中術語

  1. cost-based model
    在Hadoop平臺,一些研究成果是基于cost-based model。例如Starfish(前一篇博客有提到過)
    但是對于spark來講,cost-based model并不適合對spark進行建模,因為cost-based是白盒模型,需要我們了解很底層的知識才行,不利于我們模型的構建和遷移;此外,spark中中的很多組件都向用戶提供自定義接口,例如調度和shuffle,因此cost-based model不能適用于這些情況。

  1. black box models
    黑盒模型對比于白盒,黑盒模型不需要我們了解系統(tǒng)內部原理,而是根據特定負載下job性能的觀測值就可以使模型進行運轉;除此之外,黑盒模型很靈活,易于匹配到各種環(huán)境下的集群。

3 方法概述

文中用于衡量性能的唯一指標是:job execution time的準確率
用于評測模型性能的指標為建立模型時間+模型進行預測的時間的綜合評估

因為以運行時間為指標去衡量性能的提升,那么問題就轉化為在給定參數集的情況下,要預測其job運行時間來與默認參數下的作業(yè)時間進行對比。而精確預測時間并不是很有必要,因為只需要關注性能是否有提升即可。
因此,可分為兩步來進行:
1)首先用二分類來打標簽,如果有提升,label=1,否則lable=0.
2)再用多分類方法將label=1的進行細分,例如將其提升分為25% 20% 15% 10% 5%幾個類別,相當于獎訓練數據進行切分,多分類模型可以對其進行訓練


4 參數集

調參對象本文選取了主要的18項參數,這些參數列表如下所示,選擇這些參數的原因是列表中參數一方面會影響集群性能的消耗,如CPU,mem等,另一方面會影響到spark的調度,shuffle階段等,最后就是這些參數會隨著節(jié)點規(guī)模、機器配置的變化發(fā)生較大變化!

para.png

5 數據收集

文中使用了基準測試工具:BigDataBench來構建模型,選擇的用例包括sort、wordcout、Grep、NavieBayes。

首先在參數空間上進行抽樣,每一種app生成500個參數列表,以供測試使用,并且每種參數表重復測試3次。但是其中最大的問題就是在收集訓練數據的過程中,哪個參數的參數值是需要繼續(xù)向下深入探索的,由于參數空間龐大,此時選擇了稀疏采樣。特別是詳盡的去搜索不同參數子集的空間(也就是去探索一下參數的范圍值),以及在收集數據時,均勻地在不同參數值范圍內進行隨機采樣。
以上提到的兩種隨機采樣的方法均有優(yōu)勢:
前一種方法是在我們領域知識的指引下來選擇參數值,后一種方法為我們提供一個無偏見的性能觀測,這兩種方法的結合能夠比單獨的方法提供更多的實際性能的見解。


6 模型選擇

文中探索了以下幾種學習模型:(以下模型均來自IBM SPSS Modeler)
1)C5.0

C5.0是決策樹的一種實現,可用于分類和回歸,由IBM提出。

2)LR

邏輯回歸是一種分類模型,模型用于判斷類別屬性和變量間的關系。

3)SVM

支持向量機是一種監(jiān)督學習模型,用于分類和回歸問題,不僅可以用于線性分類,而且也可以解決非線性分類問題

4)ANN

人工神經網絡基于結構和生物神經網絡的計算式模型。可用于非線性數據并能用于分析復雜輸入數據內部的關系。ANN是一種很強勁的分類和非線性回歸模型,并且適用于多輸入輸出的情況。


7 模型訓練及驗證

為了讓模型更好地進行擬合,使用了交叉驗證的方法去提升模型的健壯性。
原始數據被隨機分為不同的比例用于訓練和驗證,這樣的訓練+驗證的周期重復進行5次,最后得到平均性能參數。同樣這樣的流程是由IBM SPSS Modeler和Weka toolkit來作為支撐。


8 參數空間搜索

在得到最終模型之后,我們要給一組最優(yōu)參數去得到預測時間,但是這組參數如何搜索仍然是個問題,因為參數空間太大,這里選取Recursive Random Search (RRS)遞歸隨機搜索算法去搜尋參數空間。
步驟:
RSS進行子空間的隨機搜索,識別具有較高概率的最優(yōu)參數集合的范圍區(qū)域,然后對這些區(qū)域中的參數進行遞歸采樣,并且在這些參數區(qū)域進行不斷移動和逐漸縮小到局部最有參數值,最后重新進行隨機采樣去尋找更優(yōu)秀的區(qū)域來重復遞歸搜索。
RSS算法可以提供尋找到最優(yōu)參數集合的概率保證。


9 驗證數據集

使用了BigDataBench(只可惜好像只更新到2015年)中的四個算法:
1)wordcout
2)sort
3)Grep
4)NavieBayes


我的博客 : https://NingSM.github.io

轉載請注明原址,謝謝

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容