王薇
摘要:為了更好的驗(yàn)證通過(guò)參數(shù)的優(yōu)化可以提高Hadoop性能,我們可以采用的測(cè)試方法有:基準(zhǔn)測(cè)試、穩(wěn)定性測(cè)試、高可用測(cè)試、擴(kuò)展性測(cè)試、安全性測(cè)試等。本文以基準(zhǔn)測(cè)試方法為主來(lái)驗(yàn)證參數(shù)優(yōu)化后,實(shí)現(xiàn)對(duì)Hadoop性能的調(diào)優(yōu)。本文主要針對(duì)hadoop內(nèi)部的17個(gè)參數(shù)進(jìn)行優(yōu)化,通過(guò)基準(zhǔn)測(cè)試中terasort和WordCount的復(fù)合算法的執(zhí)行時(shí)間來(lái)校驗(yàn)參數(shù)的優(yōu)化情況,實(shí)驗(yàn)過(guò)程中搜集系統(tǒng)的cpu和內(nèi)存使用率,磁盤(pán)io和網(wǎng)絡(luò)io的吞吐量等指標(biāo)。圖1-3充分說(shuō)明了參數(shù)默認(rèn)值與參數(shù)調(diào)整后的對(duì)比情況。實(shí)驗(yàn)結(jié)果表明,hadoop參數(shù)調(diào)整優(yōu)化后,在一定情況下實(shí)現(xiàn)了hadoop的性能調(diào)優(yōu)。
關(guān)鍵字:Hadoop;參數(shù)優(yōu)化;性能調(diào)優(yōu)
引言
大數(shù)據(jù)軟件平臺(tái)主要由分布式文件系統(tǒng)、分布式計(jì)算系統(tǒng)、NoSQL 數(shù)據(jù)庫(kù)、分布式數(shù)據(jù)倉(cāng)庫(kù)、分布式數(shù)據(jù)庫(kù)等構(gòu)成,能夠提供大數(shù)據(jù)的存儲(chǔ)、管理和計(jì)算能力。大數(shù)據(jù)軟件平臺(tái)主要包括開(kāi)源的Hadoop、Spark等,一般部署在通用硬件平臺(tái)上[1-2]。
由于Hadoop自身包含的參數(shù)比較多,參數(shù)之間的關(guān)系也比較復(fù)雜。經(jīng)過(guò)簡(jiǎn)單的實(shí)驗(yàn)驗(yàn)證,本文主要對(duì)表1中的17個(gè)參數(shù)進(jìn)行優(yōu)化,并且參數(shù)優(yōu)化是遵循順序、疊加的方式,從而到達(dá)Hadoop的性能調(diào)優(yōu)。
實(shí)驗(yàn)設(shè)計(jì)和算法研究
為了更好的驗(yàn)證通過(guò)參數(shù)的優(yōu)化可以提高Hadoop性能,我們可以采用的測(cè)試方法有:基準(zhǔn)測(cè)試、穩(wěn)定性測(cè)試、高可用測(cè)試、擴(kuò)展性測(cè)試、安全性測(cè)試等。本文以基準(zhǔn)測(cè)試方法為主來(lái)驗(yàn)證參數(shù)優(yōu)化后,實(shí)現(xiàn)對(duì)Hadoop性能的調(diào)優(yōu)。
基準(zhǔn)測(cè)試是一種測(cè)量和評(píng)估軟件性能指標(biāo)的活動(dòng)??梢栽谀硞€(gè)時(shí)間通過(guò)基準(zhǔn)測(cè)試建立一個(gè)已知的性能水平(稱為基準(zhǔn)線)[3],當(dāng)系統(tǒng)的軟硬件環(huán)境發(fā)生變化之后再進(jìn)行一次基準(zhǔn)測(cè)試以確定那些變化對(duì)性能的影響。
基準(zhǔn)測(cè)試的測(cè)試方法有很多種,根據(jù)Hadoop的Map Reduce過(guò)程,本文主要以TeraSort算法和WordCount算法來(lái)驗(yàn)證表1中的17個(gè)參數(shù)調(diào)整后,對(duì)Hadoop性能在特定條件下影響及優(yōu)化。
本實(shí)驗(yàn)中hadoop測(cè)試環(huán)境是采用1個(gè)Name Node節(jié)點(diǎn),4個(gè)Date Node節(jié)點(diǎn)的模式進(jìn)行。
算法研究:
1)TeraSort 算法
Terasort算法的工作原理需要以下幾個(gè)步驟:
首先,采樣;
其次,map task對(duì)于數(shù)據(jù)記錄做標(biāo)記-
最后reduce局部排序,再順序輸出。
1TB排序通常用于衡量分布式數(shù)據(jù)處理框架的數(shù)據(jù)處理能力。Terasort是Hadoop中的一個(gè)排序作業(yè),在2008年,Hadoop在1TB排序基準(zhǔn)評(píng)估中贏得第一名,耗時(shí)209秒。TeraSort巧妙的利用了Hadoop的MapReduce機(jī)制來(lái)實(shí)現(xiàn)了Sort的目的,與Hadoop機(jī)制的完美結(jié)合也許是它優(yōu)異排序成績(jī)的一個(gè)重要原因。而也正因?yàn)槿绱耍覀兛梢栽诩荷侠肨eraSort來(lái)測(cè)試Hadoop,它將具有很高的測(cè)試?yán)脙r(jià)值[4]。
Terasort的特點(diǎn)是混合型的,它的數(shù)據(jù)類型為文本,測(cè)試過(guò)程中所需的數(shù)據(jù)來(lái)源為Hadoop 自帶TeraGen生成。
TeraSort只是一個(gè)小工具,比起生產(chǎn)應(yīng)用作業(yè),可能是微不足道了。但一個(gè)小工具,如果能夠挖掘到底,背后也會(huì)有大價(jià)值;尤其對(duì)測(cè)試來(lái)講,如果能夠?qū)Ρ尘爸R(shí)有更多的了解,一個(gè)小工具可以轉(zhuǎn)換成眾多方便且有價(jià)值的測(cè)試用例;并且,如果能對(duì)一個(gè)小工具舉一反三,也能夠?yàn)槠渌胤降臏y(cè)試提供價(jià)值。
2)WordCount算法
(1) 將文件拆分為多個(gè)文件。 由于測(cè)試文件比較小,每個(gè)文件都是一個(gè)split,把文件分割成行,形成<key, value>對(duì),再分割成<key, value>對(duì)。 移交用戶定義的map方法,生成新的<key, value>對(duì),如圖1所示。
(2)Mapper得到map方法輸出的<key, value>對(duì)后,會(huì)根據(jù)key的值對(duì)它們進(jìn)行排序,并執(zhí)行Combine過(guò)程,將key累加到相同的值,得到Mapper的最終輸出 . 如圖2所示。
(3) Reducer首先對(duì)從Mapper接收到的數(shù)據(jù)進(jìn)行排序,然后通過(guò)用戶自定義的reduce方法進(jìn)行處理,得到一個(gè)新的<key, value>對(duì),輸出結(jié)果為WordCount,如圖3所示。
本文首先根據(jù)terasort算法對(duì)17個(gè)參數(shù)進(jìn)行調(diào)優(yōu),然后根據(jù)WordCount算法繼續(xù)進(jìn)行參數(shù)調(diào)整,以達(dá)到性能在一定情況下達(dá)到最佳狀態(tài)。在實(shí)驗(yàn)過(guò)程中,主要根據(jù)算法的執(zhí)行時(shí)間來(lái)驗(yàn)證了參數(shù)調(diào)整的正確性。同時(shí)采用PAT工具監(jiān)控算法執(zhí)行過(guò)程中系統(tǒng)的CPU、內(nèi)存、磁盤(pán)IO和網(wǎng)絡(luò)IO等參數(shù)。
實(shí)驗(yàn)數(shù)據(jù)中單個(gè)文件大小為1G,文件數(shù)量為512,總文件大小為512G。
實(shí)驗(yàn)結(jié)果
通過(guò)實(shí)驗(yàn),我們可以了解到參數(shù)之間存在著互相影響的關(guān)系,測(cè)試后發(fā)現(xiàn)隨著參數(shù)調(diào)整,算法的執(zhí)行時(shí)間在減少,充分的說(shuō)明了隨著參數(shù)的優(yōu)化,hadoop性能實(shí)現(xiàn)一定的優(yōu)化。
我們可以了解到隨著調(diào)整17個(gè)參數(shù)的默認(rèn)值,算法的執(zhí)行時(shí)間有明顯的縮短,在17個(gè)參數(shù)都處于默認(rèn)值的情況下,算法的執(zhí)行時(shí)間為21776秒。圖1展現(xiàn)了參數(shù)默認(rèn)值與參數(shù)調(diào)整后算法的執(zhí)行時(shí)間的對(duì)比情況,參數(shù)優(yōu)化后,極大的提高了算法的執(zhí)行時(shí)間。圖2清晰的展現(xiàn)了參數(shù)默認(rèn)值與參數(shù)調(diào)整后算法的執(zhí)行過(guò)程中,hadoop對(duì)服務(wù)器的cpu/內(nèi)存的使用率對(duì)比情況,cpu的占用率明顯有所增大,內(nèi)存的使用率也有所增大。圖3清晰的展現(xiàn)了參數(shù)默認(rèn)值與參數(shù)調(diào)整后算法的執(zhí)行過(guò)程中,hadoop對(duì)服務(wù)器的磁盤(pán)IO,網(wǎng)絡(luò) IO吞吐量明顯有所增大。
經(jīng)過(guò)驗(yàn)證,說(shuō)明參數(shù)調(diào)整后在一定程度上提高了性能。
總結(jié)
本文主要是通過(guò)基準(zhǔn)測(cè)試中TeraSort算法和WordCount算法相結(jié)合復(fù)合算法的運(yùn)行時(shí)間來(lái)驗(yàn)證對(duì)Hadoop的參數(shù)進(jìn)行調(diào)優(yōu),進(jìn)而優(yōu)化hadoop的性能。Hadoop性能調(diào)優(yōu)不僅涉及到Hadoop本身的性能調(diào)優(yōu),還涉及更底層的硬件、操作系統(tǒng)和Java虛擬機(jī)等系統(tǒng)的調(diào)優(yōu)。為了更好的使用Hadoop,我們應(yīng)根據(jù)實(shí)際應(yīng)用場(chǎng)景及要求,對(duì)hadoop參數(shù)進(jìn)行優(yōu)化,使hadoop性能在特定情況下達(dá)到最優(yōu)。
參考文獻(xiàn)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.