Hadoop 參數配置優化

主要參照Hadoop官方給出的配置指南進行的java

 

hadoop.tmp.dir
默認值: /tmp
說明: 儘可能手動配置這個選項,不然的話都默認存在了裏系統的默認臨時文件/tmp裏。而且手動配置的時候,若是服務器是多磁盤的,每一個磁盤都設置一個臨時文件目錄,這樣便於mapreduce或者hdfs等使用的時候提升磁盤IO效率。node

fs.trash.interval
默認值: 0
說明: 這個是開啓hdfs文件刪除自動轉移到垃圾箱的選項,值爲垃圾箱文件清除時間。通常開啓這個會比較好,以防錯誤刪除重要文件。單位是分鐘。linux

fs.inmemory.size.mb
默認值:
說明: reduce階段用戶合併map輸出的內存限制。這裏設置200,可根據自身硬件設備進行更改測試。apache

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 。jvm

dfs.blocksize
默認值:67108864
說明: 這個就是hdfs裏一個文件塊的大小了,默認64M,這裏設置134217728,即128M,太大的話會有較少map同時計算,過小的話也浪費可用map個數資源,並且文件過小namenode就浪費內存多。根據須要進行設置。oop

dfs.namenode.handler.count
默認值:10
說明:hadoop系統裏啓動的任務線程數,這裏改成40,一樣能夠嘗試該值大小對效率的影響變化進行最合適的值的設定。測試

mapred.child.java.opts
默認值:-Xmx200m
說明:jvms啓動的子線程可使用的最大內存。改成-Xmx1024m,內存再大也能夠繼續增長。可是若是通常任務文件小,邏輯不復雜用不了那麼多的話太大也浪費。spa

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的最大內存使用限制。

相關文章
相關標籤/搜索