王薇




摘要:為了更好的驗證通過參數的優化可以提高Hadoop性能,我們可以采用的測試方法有:基準測試、穩定性測試、高可用測試、擴展性測試、安全性測試等。本文以基準測試方法為主來驗證參數優化后,實現對Hadoop性能的調優。本文主要針對hadoop內部的17個參數進行優化,通過基準測試中terasort和WordCount的復合算法的執行時間來校驗參數的優化情況,實驗過程中搜集系統的cpu和內存使用率,磁盤io和網絡io的吞吐量等指標。圖1-3充分說明了參數默認值與參數調整后的對比情況。實驗結果表明,hadoop參數調整優化后,在一定情況下實現了hadoop的性能調優。
關鍵字:Hadoop;參數優化;性能調優
引言
大數據軟件平臺主要由分布式文件系統、分布式計算系統、NoSQL 數據庫、分布式數據倉庫、分布式數據庫等構成,能夠提供大數據的存儲、管理和計算能力。大數據軟件平臺主要包括開源的Hadoop、Spark等,一般部署在通用硬件平臺上[1-2]。
由于Hadoop自身包含的參數比較多,參數之間的關系也比較復雜。經過簡單的實驗驗證,本文主要對表1中的17個參數進行優化,并且參數優化是遵循順序、疊加的方式,從而到達Hadoop的性能調優。
實驗設計和算法研究
為了更好的驗證通過參數的優化可以提高Hadoop性能,我們可以采用的測試方法有:基準測試、穩定性測試、高可用測試、擴展性測試、安全性測試等。本文以基準測試方法為主來驗證參數優化后,實現對Hadoop性能的調優。
基準測試是一種測量和評估軟件性能指標的活動。可以在某個時間通過基準測試建立一個已知的性能水平(稱為基準線)[3],當系統的軟硬件環境發生變化之后再進行一次基準測試以確定那些變化對性能的影響。
基準測試的測試方法有很多種,根據Hadoop的Map Reduce過程,本文主要以TeraSort算法和WordCount算法來驗證表1中的17個參數調整后,對Hadoop性能在特定條件下影響及優化。
本實驗中hadoop測試環境是采用1個Name Node節點,4個Date Node節點的模式進行。
算法研究:
1)TeraSort 算法
Terasort算法的工作原理需要以下幾個步驟:
首先,采樣;
其次,map task對于數據記錄做標記-
最后reduce局部排序,再順序輸出。
1TB排序通常用于衡量分布式數據處理框架的數據處理能力。Terasort是Hadoop中的一個排序作業,在2008年,Hadoop在1TB排序基準評估中贏得第一名,耗時209秒。TeraSort巧妙的利用了Hadoop的MapReduce機制來實現了Sort的目的,與Hadoop機制的完美結合也許是它優異排序成績的一個重要原因。而也正因為如此,我們可以在集群上利用TeraSort來測試Hadoop,它將具有很高的測試利用價值[4]。
Terasort的特點是混合型的,它的數據類型為文本,測試過程中所需的數據來源為Hadoop 自帶TeraGen生成。
TeraSort只是一個小工具,比起生產應用作業,可能是微不足道了。但一個小工具,如果能夠挖掘到底,背后也會有大價值;尤其對測試來講,如果能夠對背景知識有更多的了解,一個小工具可以轉換成眾多方便且有價值的測試用例;并且,如果能對一個小工具舉一反三,也能夠為其他地方的測試提供價值。
2)WordCount算法
(1) 將文件拆分為多個文件。 由于測試文件比較小,每個文件都是一個split,把文件分割成行,形成<key, value>對,再分割成<key, value>對。 移交用戶定義的map方法,生成新的<key, value>對,如圖1所示。
(2)Mapper得到map方法輸出的<key, value>對后,會根據key的值對它們進行排序,并執行Combine過程,將key累加到相同的值,得到Mapper的最終輸出 . 如圖2所示。
(3) Reducer首先對從Mapper接收到的數據進行排序,然后通過用戶自定義的reduce方法進行處理,得到一個新的<key, value>對,輸出結果為WordCount,如圖3所示。
本文首先根據terasort算法對17個參數進行調優,然后根據WordCount算法繼續進行參數調整,以達到性能在一定情況下達到最佳狀態。在實驗過程中,主要根據算法的執行時間來驗證了參數調整的正確性。同時采用PAT工具監控算法執行過程中系統的CPU、內存、磁盤IO和網絡IO等參數。
實驗數據中單個文件大小為1G,文件數量為512,總文件大小為512G。
實驗結果
通過實驗,我們可以了解到參數之間存在著互相影響的關系,測試后發現隨著參數調整,算法的執行時間在減少,充分的說明了隨著參數的優化,hadoop性能實現一定的優化。
我們可以了解到隨著調整17個參數的默認值,算法的執行時間有明顯的縮短,在17個參數都處于默認值的情況下,算法的執行時間為21776秒。圖1展現了參數默認值與參數調整后算法的執行時間的對比情況,參數優化后,極大的提高了算法的執行時間。圖2清晰的展現了參數默認值與參數調整后算法的執行過程中,hadoop對服務器的cpu/內存的使用率對比情況,cpu的占用率明顯有所增大,內存的使用率也有所增大。圖3清晰的展現了參數默認值與參數調整后算法的執行過程中,hadoop對服務器的磁盤IO,網絡 IO吞吐量明顯有所增大。
經過驗證,說明參數調整后在一定程度上提高了性能。
總結
本文主要是通過基準測試中TeraSort算法和WordCount算法相結合復合算法的運行時間來驗證對Hadoop的參數進行調優,進而優化hadoop的性能。Hadoop性能調優不僅涉及到Hadoop本身的性能調優,還涉及更底層的硬件、操作系統和Java虛擬機等系統的調優。為了更好的使用Hadoop,我們應根據實際應用場景及要求,對hadoop參數進行優化,使hadoop性能在特定情況下達到最優。
參考文獻references
[1]Saravanan S, Karthick K E, Balaji A, et al. Performance Comparison of Apache Spark and Hadoop Based Large Scale Content Based Recommender System[M]// Intelligent Systems Technologies and Applications. 2018:66-73.
[2]Ashlesha S, R. M. A Review of Hadoop Ecosystem for BigData[J]. International Journal of Computer Applications, 2018, 180(14):35-40.
[3]Trivedi M, Nambiar R. Lessons Learned: Performance Tuning for Hadoop Systems[M]// Performance Evaluation and Benchmarking. Traditional - Big Data - Interest of Things. 2017.
[4]Pahl C. Performance and Energy Optimization on Terasort Algorithm by Task Self-Resizing[J]. Information Technology & Control, 2014, 44(1):30-40.