? 作業系統(os)
1. 禁用Linux邏輯管理卷(LVM)
2. 掛載資料磁區時禁用檔案atime和目錄atime
3. Linux內核引數調整(/etc/sysctl.conf)vm.swappiness = 0;
? HDFS引數優化
無特別標識均為:hdfs-site.xml屬性。
1. fs.default.name(core-site.xml)
定義客戶端所使用的默認檔案系統的URL
2. dfs.name.dir(重要)
定義了一個用逗號(中間不加空格)分割的不同的本地檔案路徑,NameNode要在這些路徑上保存一個HDFS檔案資料的備份。
3. dfs.data.dir
定義了DataNode在哪里存放HDFS資料塊
4. Io.file.buffer.size(core-site.xml)
用來設定hadoop訪問檔案IO的快取大小。默認值為:4kb。參考值:64mb(65536 byte)
5. dfs.balance.bandwidthPerSec
定義了HDFS平衡器(balancer) 平衡每個DataNode平衡操作所允許的最大帶寬,單位是byte
6. dfs.block.size
定義了所有新建檔案的默認資料塊大小。默認值:64MB 參考值:128MB (134217728)
7. dfs.DataNode.du.reserved
定義了每個dfs.data.dir所定義的硬碟空間需要保留的大小。以byte為大小 默認值為0,參考值:10737418240
8. dfs.NameNode.handler.count
定義NameNode作業執行緒池(用來處理客戶端的遠程程序呼叫及集群守護行程呼叫)作業執行緒大小。該值一般原則是將值設為集群的自然對數乘以20 即:20logN N為集群大小。
9. dfs.DataNode.failed.volumes.tolerated
定義整個DataNode宣告失敗前,允許多少個硬碟出現故障。默認值為:0參考值:1
10. fs.trash.interval(core-site.xml)
定義.Trash目錄檔案下檔案被永久洗掉前保留的時間。默認值:0(不保存) 推薦值:1440(24小時)注意:垃圾回收功能只是針對命令式。對javaApi呼叫的洗掉無效。
? MapReduce
無特別宣告均為mapred-site.xml屬性。
1. mapred.job.tracker
定義了主機名和埠資訊,jobtracker在該埠監聽遠程程序呼叫(RPC)。
2. mapred.local.dir
定義了map端中間結果檔案存盤路徑。如果設定路徑為專有硬碟,那么就沒必要配置hdfs-site.xml 中的dfs.DataNode.du.reserved屬性了
3. mapred.java.child.opts
Tasktracker是在一個獨立的JVM行程里啟動子任務的,啟動時可以把一些引數傳遞給它。比較常見的是設定記憶體的使用。 默認值為:200MB 參考值為:-Xms2g.
4. mapred.child.ulimit
可以對JVM子任務最大堆疊大小進行補充(即它規定一個行程在它運行結束前可以使用的最大虛擬記憶體) 該值一般大致可設為JVM最大堆疊大小的1.5倍。
5. mapred.tasktracker.map(和 reduce).tasks.maximum
6. hadoop mapreduce 任務并發數可能等于mapred.tasktracker.map.tasks.
7. maximum 和mapred.tasktracker.reduce.tasks.maximum之和 每個任務都在一個獨立的JVM上運行。根據mapred.java.child.opts設定的記憶體,如果mapred.java.child.opts設定為2g , mapred.tasktracker.map.tasks.maximum
設定為12則map任務就消耗24g記憶體。該值一般情況下為每個物理CPU配置1.5個任務,cup*1.5=mapreduce并發任務總個數, 然后將三分之二處理時間分片給map任務 三分之一留給reduce任務
8. io.sort.mb
map任務的一些輸出會寫在回圈緩沖區內,該緩沖區大小是由該屬性指定的,當該緩沖區使用率達到80%時,就會啟動一個后臺行程將溢位資料寫到mapred.local.dir指定的路徑下。默認值為:100MB同時注意該資料所指定的記憶體是包含在子任務的JVM堆疊空間中的。
9. io.sort.factor
它定義了一次性能合并的檔案數目,以下兩種情況會觸發MapReduce的檔案合并操作:第一種是map任務執行完畢spill檔案需要合并,第二種是在reduces獲取了所有map任務輸出檔案后以及用戶呼叫reduce代碼之前。增大每一輪打開檔案個數進行合并可以減少資料讀取和寫入硬碟的時間,也減少了硬碟IO的操作。但合并更多的檔案意味著需要更多的記憶體。
10. mapred.compress.map.output
啟用map端的壓縮 參考值:true
11. mapred.map.output. compression.codec
定義了在MapReduce任務中使用的map輸出壓縮碼,如果該值為空則org.apache.hadoop.io.compress.defaultCodec會被呼叫
參考值:org.apache.hadoop.io.compress.SnappyCodec
12. mapred.output. compression.type
如果MapReduce任務的輸出需要寫成SequenceFile格式,那么該引數會確定所使用的壓縮型別。可配值有三個:第一種是記錄(RECORD),該值會使得SequenceFile的每個資料都被單獨壓縮。第二種值是塊(BLOCK)該值會使得所有關鍵資料按固定大小分塊壓縮。第三種是無(NONE)設定該值就不會為資料進行壓縮。參考值:BLOCK。
13. mapred.job.tracker.handler.count
jobtracker會維護一個作業執行緒池來處理遠程程序呼叫,該值用來控制執行緒池大小。參考值 20logN N為集群大小。
14. mapred.reduce.parallel.copies
在MapReduce作業洗牌(shuffle)程序中,每個reducer任務需要從各個tasktrackers中獲取同一作業運行map任務產生的中間資料。該引數可以設定reducer可以并行獲取資料個數。一般可以設定為 4*logN N為集群大小。
15. mapred.reduce.tasks
該引數規定了作業要產生的reduce個數。
16. Tasktracker.http.threads
控制每個tasktracker用于處理請求的并行作業執行緒數。HTTP執行緒的個數與集群reduce槽的數量,和被許可并行處理的資料份數是成正比的。
17. Mapred.reduce.slowstart.completed.maps
一旦一些map任務生成了中間結果,就可以提前讓reducer對這些資料進行洗牌(shuffle),盡可能早的拷貝資料,可以使reduce任務在最后一個map任務完成時就可以直接運行。 該屬性定義允許啟動reduce行程時map任務完成的百分比。參考值:0.8 即80%
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/91509.html
標籤:云存儲
下一篇:請教:scala代碼量如何統計?
