hadoop基準測試

來源:互聯網
上載者:User
Hadoop 叢集基準測試

一、測試條件

叢集完整安裝配置後,應立即開始基準測試。基準測試時叢集裡不應該運行其他一切任務。

二、測試目標

1. 硬碟故障:新系統最常見的故障。可以通過運行高強度的IO基準測試程式集中測試。例如TestDFSIO

2. MapReduce的效能 

三、測試方法

1、TestDFSIO基準測試HDFS 

測試順序應該是先寫測試後讀測試

寫測試:

使用10個map任務寫10個檔案,每個500m。

hadoop jar $HADOOP_HOME/hadoop-test-*.jar TestDFSIO -write -nrFiles 10  -fileSize 1000

在啟動並執行最後,結果被寫入控制台並記錄到當前路徑TestDFSIO_results.log 。

資料預設寫入 /benchmarks/TestDFSIO目錄下 

讀測試:

hadoop jar $HADOOP_HOME/hadoop-test-*.jar TestDFSIO -read-nrFiles 10  -fileSize 1000

清除測試資料:

hadoop jar $HADOOP_HOME/hadoop-test-*.jar TestDFSIO -clean

2、用sort排序測試MapReduce 

Hadoop內建一個部分排序的程式。這對測試整個MapReduce系統很有用,因為整個輸入資料集都會通過洗牌傳輸至reducer。一共三個步驟:產生一些隨機的資料,執行排序,然後驗證結果。
       首先我們通過使用RandomWriter產生一些隨機的資料。它以每個節點10個map的方式運行一個MapReduce作業,並且每一個map產生近似10GB的隨機位元據,帶有不同長度的鍵和值。

hadoop jar hadoop-examples-0.20.2-cdh3u1.jar randomwriter random-data

3、TeraSort 基準測試實驗 

1TB排序通常用于衡量分布式資料處理架構的資料處理能力。Terasort是Hadoop中的的一個排序作業,在2008年,Hadoop在1TB排序基準評估中贏得第一名,耗時209秒。 

首先執行 teragen 產生資料 

寫入1000000 行,每行100位元組。格式:

(10 bytes key) (10 bytes rowid) (78 bytes filler) \r \n

.t^#\|v$2\         0AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEFFFFFFFFFFGGGGGGGGGGHHHHHHHH

hadoop jar hadoop-examples-0.20.2-cdh3u1.jar teragen 1000000 terasort/1000000-input 

查看資料

hadoop fs -ls  /usr/hadoop/terasort/1000000-input 

hadoop jar hadoop-*-examples.jar terasort in-dir out-dir

排序

hadoop jar hadoop-examples-0.20.2-cdh3u1.jar terasort terasort/1000000-input  terasort/1000000-output 

查看排序

hadoop fs -ls terasort/1000000-output 

4、 Gridmix 基準測試

Hadoop Gridmix是針對hadoop系統的基準測試程式。它具備評測大規模資料處理系統所需的各個功能模組,包括:產生資料,產生並提交作業,統計作業完成時間等。本文主要介紹了Hadoop 0.20.2中內建的Gridmix2基準測試程式(位於\src\benchmarks目錄下)的設計原理及使用方法。

作業種類

Gridmix通過類比hadoop cluster中的實際負載來評測hadoop效能。它首先根據使用者設定的參數產生大量資料和一批作業,然後同時提交這些作業(批處理),最後統計出這批作業的已耗用時間。為了儘可能地類比現實中的各種作業,Gridmix內建了各種具有代表性的作業,分別為streamSort,javaSort,webdataScan,combiner(這個作業只是對結果進行了壓縮),monsterQuery,webdataSort,可以將這些作業分為以下幾類:

(1)       三階段map/reduce作業

輸入:500G壓縮(等價於2T未壓縮的)SequenceFile

(key,value)=(5 words,100 words)

計算1:map保留10%的資料,reduce保留40%資料,

計算2:map保留10%的資料,reduce保留40%資料,資料來自[計算1]的輸出

計算3:map保留10%的資料,reduce保留40%資料,資料來自[計算2]的輸出

動機:很多作業負載是流水式 map/reduce 作業,包括pig

對應作業:monsterQuery

(2)       大規模資料排序,其中key和value長度都是變化的

輸入:500G壓縮(等價於2T未壓縮的)SequenceFile

(key,value)=(5-10 words,100-10000 words)

計算:map保留100%的資料,reduce保留100%資料

動機:處理大規模的壓縮資料是非常常見的

對應作業:webdataSort

(3)       過濾

輸入:500G壓縮(等價於2T未壓縮的)SequenceFile

(key,value)=(5-10 words,100-10000 words)

計算:map保留0.2%的資料,reduce保留5%資料

動機:對大資料集進行過濾是很常見的

對應作業:webdataScan

(4)       API 文本排序(直接調用一些API進行排序)

輸入:500G未壓縮文本

(key,value)=(1-10 words,0-200 words)

計算:map保留100%的資料,reduce保留100%資料

動機:map/reduce直接調用庫函數進行排序

對應作業:streamSort,javaSort,其中streamSort使用了shell命令cat作為mapper和reducer(這並不是排序,只是簡單的進行漸進式掃描),javaSort調用了java中的API進行排序。

Gridmix產生的一個基準負載包含不同數量的各種類型的作業,且每種作業處理的資料量也不同。使用者可以在一個xml檔案中配置作業數量和資料量,Gridmix會根據這個設定檔構造相應的作業,提交到叢集中並監控它們的執行情況直到所有作業完成。

使用方法

(1)       編譯

在/home/hadoop/hadoop_install/src/benchmarks/gridmix2下,輸入“ant”,會在build目錄下產生gridmix.jar檔案,把它copy到gridmix目錄下。

(2)       配置環境變數

修改指令碼gridmix-env-2中的以下幾個變數值:

HADOOP_HOME:hadoop安裝路徑

HADOOP_VERSION:hadoop版本,如hadoop-0.20.2

HADOOP_CONF_DIR:conf路徑,如${HADOOP_HOME}/conf

USE_REAL_DATA:是否使用大的資料集(2TB),如果設為false,預設資料量是2G。使用者可以在generateGridmix2Data.sh根據需要配置。

(3)       配置作業資訊

Gridmix提供了一個預設的gridmix_conf.xml,使用者可以根據自己的需要作修改。修改的內容可以是:作業的類型和數量,作業處理的資料量,reduce task數目,是否對資料結果進行壓縮等。需要注意的是,使用者可以配置多個不同reduce數量的同一類型作業,比如:

<property>

<name>javaSort.smallJobs.numOfJobs</name>

<value>8,2</value>

<description></description>

</property>

<property>

<name>javaSort.smallJobs.numOfReduces</name>

<value>15,70</value>

<description></description>

</property>

上面的例子設定了10個java sort小作業,其中8個每個帶有15個reduce task,另外2個每個帶70個reduce task。

在Gridmix中,每種作業有大中小三種類型,小作業只有3個map task(只處理{part-00000,part-00001,part-00002}三塊資料);中作業的task 數目與資料總量有關,它處理與Regex{part-000*0,part-000*1,part-000*2}匹配的資料區塊,比如有10個資料區塊,分別是part-00000,part-00001,part-00002…part-0009,則中作業只會處理前三塊;大作業會處理所有資料。

(4)       產生資料

使用generateGridmix2Data.sh指令碼產生資料,使用者可以根據需要配置資料量。在Gridmix中,資料壓縮率是4x。

(5)       運行

首先確保hadoop叢集已經啟動,然後運行./rungridmix_2,該指令碼會建立start.out記錄作業運行開始時間,作業結束時,建立end.out記錄完成時間。

總結

Hadoop Gridmix由兩個版本,本文討論的是第二個版本,即Gridmix2。.Gridmix2具有很好的擴充性,使用者可以很容易地添加其它作業,同時它能很好的類比批處理情況。但缺點是它不能類比隨機提交作業(比如按泊松分布進行提交)的應用情境。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.