主要參照官方給出的配置指南進行的。
hadoop.tmp.dir
默認值: /tmp
說明: 盡量手動配置這個選項,否則的話都默認存在了裡系統的默認臨時文件/tmp裡。並且手動配置的時候,如果服務器是多磁盤的,每個磁盤都設置一個臨時文件目錄,這樣便於mapreduce或者hdfs等使用的時候提高磁盤IO效率。
fs.trash.interval
默認值: 0
說明: 這個是開啟hdfs文件刪除自動轉移到垃圾箱的選項,值為垃圾箱文件清除時間。一般開啟這個會比較好,以防錯誤刪除重要文件。單位是分鐘。
fs.inmemory.size.mb
默認值:
說明: reduce階段用戶合並map輸出的內存限制。這裡設置200,可根據自身硬件設備進行更改測試。
io.sort.factor
默認值:10
說明:排序文件的時候一次同時最多可並流的個數,這裡設置100。新版本為mapreduce.task.io.sort.factor。
io.sort.mb
默認值:100
說明: 排序內存使用限制,這裡設置200m。新版本看說明貌似改成了這個mapreduce.task.io.sort.mb。
io.file.buffer.size
默認值:4096
說明:SequenceFiles在讀寫中可以使用的緩存大小,這裡設置為131072。貌似這個參數在新版本裡變為了:file.stream-buffer-size,單位bytes 。
dfs.blocksize
默認值:67108864
說明: 這個就是hdfs裡一個文件塊的大小了,默認64M,這裡設置134217728,即128M,太大的話會有較少map同時計算,太小的話也浪費可用map個數資源,而且文件太小namenode就浪費內存多。根據需要進行設置。
dfs.namenode.handler.count
默認值:10
說明:hadoop系統裡啟動的任務線程數,這裡改為40,同樣可以嘗試該值大小對效率的影響變化進行最合適的值的設定。
mapred.child.java.opts
默認值:-Xmx200m
說明:jvms啟動的子線程可以使用的最大內存。改為-Xmx1024m,內存再大也可以繼續增加。但是如果一般任務文件小,邏輯不復雜用不了那麼多的話太大也浪費。
mapreduce.jobtracker.handler.count
默認值:10
說明:JobTracker可以啟動的線程數,一般為tasktracker節點的4%。
mapreduce.reduce.shuffle.parallelcopies
默認值:5
說明:reuduce shuffle階段並行傳輸數據的數量。這裡改為10。集群大可以增大。
mapreduce.tasktracker.http.threads
默認值:40
說明:map和reduce是通過http進行數據傳輸的,這個是設置傳輸的並行線程數。
mapreduce.map.output.compress
默認值:false
說明: map輸出是否進行壓縮,如果壓縮就會多耗cpu,但是減少傳輸時間,如果不壓縮,就需要較多的傳輸帶寬。配合mapreduce.map.output.compress.codec使用,默認是org.apache.hadoop.io.compress.DefaultCodec,可以根據需要設定數據壓縮方式。
mapreduce.reduce.shuffle.merge.percent
默認值: 0.66
說明:reduce歸並接收map的輸出數據可占用的內存配置百分比。類似mapreduce.reduce.shuffle.input.buffer.percen屬性。
mapreduce.reduce.shuffle.memory.limit.percent
默認值: 0.25
說明:一個單一的shuffle的最大內存使用限制。