Hadoop平臺學習過程的一些總結

風的王子發表於2013-11-02
1.MapR有三種版本,M3(免費版)、M5(含有支援的版本,並啟用了所有HA特性)和M7(最近和重寫的HBase一起釋出),MapR採取了一種與其他供應商不同的方法,它肯定會有屬於自己的追隨者。

2.hadoop 執行 mapreduce的有幾種方式
一、原生態的方式:java 原始碼編譯打包成jar包後,由 hadoop 指令碼排程執行
二、基於 MR 的資料流 Like SQL 指令碼開發語言:pig
三、構建資料倉儲的類 SQL 開發語言:hive
四、跨平臺的指令碼語言:python

3.hadoop的調優
    在job中中間的結果使用壓縮,輸出資料量大的話也要採用壓縮,因為備份有副本所以壓縮可以加快磁碟的IO,對機器多的效果應該更明顯,可以大幅度提高job的效率。
    儘量減少task的數量,減少每個task耗費的時間。當一個job資料大於1TB 要增加 塊的大小 (256 512 大概)。//hadoop distcp -Ddfs.block.size=$[256*1024*1024] /path/to/inputdata
    利用Combiner減少磁碟和網路傳輸到reduce的資料量
    使用自己的Writable類儘量重用,不是多次的建立
    
    任務排程的時候會盡量將任務分配給輸入資料塊InputSplit所在的機器,減少IO網路的消耗。
    提交MapReduce任務之前,可以先對資料進行一次預處理將小資料合併成適當的大資料。如果Map的任務時間很短可以考慮調節Block塊的大小來調整Map的執行時間。
    控制MapReduce任務的數量,調節Map/Reduce的任務槽。Map可以根據時間來調節,reduce調整reduce和任務槽的比例。
    利用Combine函式調整Map函式產生的很多重複的中間資料,利用本地的合併,在傳遞給Reduce,可以減少資料的網路傳輸
    可以對Map的輸出和最終結果進行壓縮
    自定義comparator,可以實現一些演算法如K-means。

相關文章