2012-08-08 130 views
0

我正在用Apache提供的基準測試文件TestDFSIO測試我的hadoop配置。我按照這個教程運行它(資源1):Hadoop基準測試:TestDFSIO

http://www.michael-noll.com/blog/2011/04/09/benchmarking-and-stress-testing-an-hadoop-cluster-with-terasort-testdfsio-nnbench-mrbench/#testdfsio

測試的用法如下:

TestDFSIO.0.0.4 
Usage: hadoop jar $HADOOP_HOME/hadoop-*test*.jar TestDFSIO 
      -read | -write | -clean 
      [-nrFiles N] [-fileSize MB] 
      [-resFile resultFileName] [-bufferSize Bytes] 

我有點困惑的一些標誌,具體來說,什麼是緩衝區大小標誌?另外,當成功完成作業(我第一次執行寫入TestDFSIO)時導航hdfs,我找不到我通過選擇resultFileName創建的文件名。 爲什麼我找不到使用resultFileName的文件?

我也看了這個頁面(資源2)(具體第25頁):

http://wr.informatik.uni-hamburg.de/_media/research/labs/2009/2009-12-tien_duc_dinh-evaluierung_von_hadoop-report.pdf

由於其測試的參數之一,他們使用64MB的塊大小是和128MB。我試着在緩衝區大小標誌之後放入'64MB'(轉換爲字節),但是這導致失敗的作業,這導致我相信我不明白什麼是buffersize標誌,以及如何使用不同的塊大小進行測試。 如何更改測試的塊大小(按資源2)?

回答

2

什麼是緩衝區大小標誌?

緩衝區大小標誌以字節爲單位描述了寫入緩衝區的長度。參見TestDFSIO.java的WriteMapper構造:

public WriteMapper() { 
    for(int i=0; i < bufferSize; i++) 
    buffer[i] = (byte)('0' + i % 50); 
} 

在這裏,被產生並寫入到磁盤之前寫入到存儲器中的緩衝區的數據。稍後寫入磁盤時,它將全部寫入一個步驟,而不是每個字節一個步驟。更少的寫入通常意味着更好的性能,所以更大的緩衝區可能會提高性能。

爲什麼我找不到使用resultFileName的文件?

結果通常會自動寫入/ benchmarks/TestDFSIO。如果您沒有找到它,請在作業日誌中搜索mapred.output.dir。

如何更改測試的塊大小(按資源2)?

塊大小可作爲參數傳遞爲generic option。嘗試是這樣的:

hadoop jar $HADOOP_HOME/hadoop-*test*.jar TestDFSIO -D dfs.block.size=134217728 -write 
1

爲什麼我無法找到我使用的resultFileName文件? 你應該有可能看到這樣一行在作業執行日誌的末尾:

java.io.FileNotFoundException: File does not exist: /benchmarks/TestDFSIO/io_write/part-00000 

在處理TestDFSIO這通常意味着LZO或其他使用壓縮(所以有額外的東西附加到文件名) 。

尋找

/benchmarking/TestDFSIO/io_write/part-00000 

試試這個(見*末通配符),因此instad:

hadoop fs -ls /benchmarking/TestDFSIO/io_write/part-00000* 
-1

嘗試此這個問題(如何改變的塊大小測試(按資源2)?

hadoop jar $_HADOOP_HOME/share/hadoop/mapreduce/hadoop-*test*.jar.jar TestDFSIO -write -nrFiles 4 -fileSize 250GB -resFile /tmp/TestDFSIOwrite.txt