hadoop效能優化(二)

2021-08-18 07:46:39 字數 1367 閱讀 1873

hadoop效能優化具體來講包括兩方面的內容:乙個是時間效能;乙個是空間效能。衡量效能的指標就是,能夠在正確完成功能的基礎上,使執行的時間盡量短,占用的空間盡量小。

1、解決小檔案的問題,採用大檔案

如果實驗資料報含1000個檔案,在hdfs中共占用了1000個檔案塊,而每乙個檔案的大小都是2.3mb,相對於hdfs塊的預設大小是128mb(hadoop2.0時代)來說算是比較小的了。如果mapreduce在處理資料時,map階段輸入的檔案較小而數量眾多,就會產生很多的map任務,以1000個檔案為例,則乙個產生了1000個map任務,每次新的map任務操作都會造成一定的效能損失。針對上述2.2gb大小的資料,在實驗環境中執行的時間大概是30分鐘。

為了盡量使用大檔案的資料,對這1000個檔案進行預處理,也就是將這些數量眾多的小檔案合併成大一些的檔案,最終將它們合併成了乙個大小為2.2gb的大檔案。然後再以這個大檔案作為輸入,在同樣的環境中進行測試,執行的時間大概為4分鐘。

2.壓縮檔案

在分布式系統中,不同節點的資料交換是影響整體效能的乙個重要因素。另外在hadoop的map階段所處理的輸出大小也會影響整個mapreduce程式的執行時間。這是因為map階段的輸出首先儲存在一定大小的記憶體緩衝區中,如果map輸出的大小超出一定限度,map task就會將結果寫入磁碟,等map任務結束後再將它們複製到reduce任務的節點上。如果資料量大,中間的資料交換會占用很多的時間。

乙個提高效能的方法是對map的輸出進行壓縮。這樣會帶來以下幾個方面的好處:減少儲存檔案的空間;加快資料在網路上(不同節點間)的傳輸速度,以及減少資料在記憶體和磁碟之間交換的時間。可以通過將mapred.compress,map.output屬性設定為true來對map的輸出資料進行壓縮,同時還可以設定map輸出資料的壓縮格式,通過設定mapred.map.output.compression.codec屬性即可進行壓縮格式的設定。

3.過濾資料

資料過濾主要指在面對海量輸入資料作業時,在作業執行之前先將資料中無用資料、雜訊資料和異常資料清除。通過資料過濾可以降低資料處理的規模,較大程度的提高資料處理效率,同時避免異常資料或不規範資料對最終結果造成的負面影響。

4.修改作業屬性

屬性mapred.tasktracker.map.tasks.maximum的預設值是2,屬性mapred.tasktracker.map.tasks.maximum的預設值也是2,因此每個節點上實際處於執行狀態的map和reduce的任務數最多為2,而較為理想的數值應在10~100之間。因此,可以在conf目錄下修改屬性mapred.tasktracker.map.tasks.maximum和mapred.tasktracker.reduce.tasks.maximum的取值,將它們設定為乙個較大的值,使得每個節點上同時執行的map和reduce任務數增加,從而縮短執行的是時間,提高整體的效能。

Hadoop效能優化點小結

最近一段時間看了許多hadoop效能優化相關的資料,於是花了點時間整理了一下,希望給正在苦於hadoop集群效能問題的博友們一點建議吧。1 hadoop在儲存有輸入資料的節點上執行map任務,可以獲得最佳效能,稱為 資料本地化優化 所以一般會設定最大分片的大小應該與塊大小相同,如果分片跨越2個塊的大...

效能優化 二 優化方法

1.優化思路 1 公升級伺服器的硬體,換成更快 更大的機器。2 增加伺服器的數量。3 對系統和應用程式進行仔細的調優,以提高響應時間 吞吐量和資源利用率的效能指標。2.優化方法 1 每次改變乙個系統引數或者乙個應用邏輯。2 使用固定的負載 比如保持相同的併發使用者數 3 測試另乙個設定之前收集本次效...

mysql 效能優化(二)

今天突然看到一年前寫的 mysql 優化 一 感覺有些誤人子弟。今天再補充一些東西。關於引擎選擇,從理論上 和 實際上 可能會有差距,所以,對待mysql 要有實驗精神。一般來說,myisam 適合 1.做很多count 的計算。2.插入不平凡,查詢非常頻繁。3.沒有事務 innordb 非常適合 ...