最近一段時間看了許多hadoop效能優化相關的資料,於是花了點時間整理了一下,希望給正在苦於hadoop集群效能問題的博友們一點建議吧。
1、hadoop在儲存有輸入資料的節點上執行map任務,可以獲得最佳效能,稱為「資料本地化優化「,所以一般會設定最大分片的大小應該與塊大小相同,如果分片跨越2個塊的大小,必然要經過網路傳輸到不同的節點上讀取資料。
2、適當的時候使用combine函式。combine的階段是在map階段到reduce階段之間進行的,在某些job中,設定combine可以減少shuffle過程中資料的傳輸量,並且不會影響到最終的結果。
3、有的時候我們想要匯入一部分資料到hdfs,這時候可以不用自己重新寫乙個應用程式,可以通過flume或者sqoop等工具匯入。
4、hadoop中有乙個有用的distcp分布式複製程式,可以用於hadoop檔案系統間的檔案資料拷貝,也可以用於將外部資料拷貝到hadoop中,distcp的典型應用場景是在2個hdfs集群之間傳輸資料。
5、向hdfs複製資料後,需要考慮集群的負載均衡性,這時候可以利用均衡器(balancer)等工具。
6、hadoop存檔工具使用,減少namenode上儲存每個塊的元資料所耗費的記憶體,因為大量的小檔案會耗盡namenode上大量的記憶體。
7、為了效能上的考慮,可以使用原生的native類庫來實現壓縮和解壓縮,例如,使用原生gzip類。
8、對於大檔案來說,不要使用不支援切分整個檔案的壓縮格式,因為會失去資料的本地性。,使用支援切分的壓縮格式,例如bzip2。
9、在hadoop序列化中,對整數進行編碼的時候,有2種選擇,乙個是定長格式,1個是變長格式,定長格式適合對整個值域空間中分布比較均勻的資料進行編碼。但是大部分的數值變數的分布式不均勻的,這樣可以使用變長格式,可以節省空間。
10、nullwritable是writable的特殊型別,如果不需要使用鍵或值的序列化位址的時候,可以將鍵或值宣告為nullwritable。
11、目前儘管多數的mr程式使用的是writable型別的鍵和值,但是這不是mapreduce api所強制使用的。其實可以使用任何型別,只要能有一種機制實現每個型別與二進位制型別表示的來回轉換就可以了。
12、mapreduce應用程式是乙個分布式的程式,所以最好使用單元測試來確保函式的執行符合預期,一般是先通過小型資料集的測試。
13、可以使用mrunit測試庫,進行map,reduce功能函式的測試。
14、mapreduce相關作業的執行狀態資訊可以通過web ui來檢視。
15、在超過數億條記錄的資料集中,有的時候我們可以扔掉不正確的記錄,當然我們可以通過自定義計數器來捕獲不合理的資料。
17、為了達到最佳效能,集群中reducer數量應該略少於reducer中的任務槽數。
18、使用自定義的writable物件或自定義的comparator。
19、使用hprof分析工具來實現任務。hprof是jdk自帶的分析工具。
20、在map輸出寫到磁碟的過程中對其進行壓縮可以使得寫磁碟的速度更快,並且可以節約磁碟空間,減少傳給reducer的資料量。
21、在map端要避免多次溢寫操作,在shuffle過程中盡量多提供記憶體空間,減少頻繁的io操作。
22、有的時候可以選擇關閉推測執行,在乙個繁忙的集群中,推測執行會減少整體的吞吐量,冗餘任務的執行必然會佔據一部分的資源。
23、當有大量的超短執行時間的任務執行的時候,可以考慮jvm的重用。
24、計數器是mapreduce中的高階屬性,他可以作為作業統計資訊的有效手段之一。通常可用於記錄某一特定事件的發出次數。
25、在hadoop中可以利用distributedcache分布式快取來提高作業執行的效率。
hadoop效能優化(二)
hadoop效能優化具體來講包括兩方面的內容 乙個是時間效能 乙個是空間效能。衡量效能的指標就是,能夠在正確完成功能的基礎上,使執行的時間盡量短,占用的空間盡量小。1 解決小檔案的問題,採用大檔案 如果實驗資料報含1000個檔案,在hdfs中共占用了1000個檔案塊,而每乙個檔案的大小都是2.3mb...
zabbix效能優化小結
zabbix我們主要用於資料庫的監控,數量百台,採用passive模式由server向client輪詢資料。監控主要是shell收集資料。資料庫分布於國內和國外 可定會遇到網路問題,zabbix暫時未做proxy zabbix server處於國內 zabbix dasboard上顯示每秒處理 20...
前端效能優化小結
乙個專案只有乙個css,乙個js,使得不同網頁不必每次請求重複的css或者js內容。並且使用打包工具可以壓縮資源檔案的大小,例如webpack gulp grunt等。使用字型圖表或者svg圖替代傳統的png。向量資源大小更小,渲染速度快,不存在放大後模糊的問題。css的效能優於js 原生js的效能...