Hadoop作業調優引數

wangmm0218發表於2014-04-17
第一部分:core-site.xml
•core-site.xml為Hadoop的核心屬性檔案,引數為Hadoop的核心功能,獨立於HDFS與MapReduce。
引數列表
•fs.default.name
•預設值 file:///
•說明:設定Hadoop  namenode的hostname及port,預設是Standalone mode,如果是偽分散式檔案系統要設定成
     hdfs://localhost:9000,如果使用叢集模式則配置為 hdfs://hostname:9000
•hadoop.tmp.dir
•預設值/tmp/hadoop-${user.name}
•會在tmp下根據username生成不同的目錄

•fs.checkpoint.dir
•預設值${hadoop.tmp.dir}/dfs/namesecondary
•Sencondary NameNode 映象儲存目錄
•fs.checkpoint.period
•預設值: 3600(秒)
• 控制 secondary namenode 的 checkpoint 時間間隔。如果距離上次 checkpoint 的時間大於這個引數的設定,就會觸發 checkpoint。secondary namenode 會把 namenode 的 fsimage 和 editlog 做 snapshot。如果存取 Hadoop 的次數頻繁或為了減少重起 namenode 的 downtime,可以把這個值設小一點。

•fs.checkpoint.size
•預設值67108864(byte)
•如果 Hadoop 非常的忙碌,editlog 可能會在短時間內變的很大,fs.checkpoint.period 的設定不見得可以完全預測這個狀況,所以保險的做法會多設定這個值,以保證當資料大到超過 fs.checkpoint.size 的值也會觸發 checkpoint。
•io.file.buffer.size
•預設值 4096
•這是讀寫 sequence file 的 buffer size, 可減少 I/O 次數。在大型的 Hadoop cluster,建議可設定為 65536 到 131072。

•ipc.client.connection.maxidletime
•預設值 10000(毫秒)
•設定 Hadoop client 連線時最大的閒置,預設是是 10 秒。如果 Hadoop cluster 的網路聯絡不穩,可以把這個值設到 60000(60秒)
•ipc.server.tcpnodelay
•預設值 false
•在 Hadoop server 是否啟動 Nagle’s 演算法。設 true 會 disable 這個演演算法,關掉會減少延遲,但是會增加小資料包的傳輸。server site 不太需要這定這個值。

•hadoop.security.authorization
•預設值 false
•是不是要開啟 賬號驗證機制,開啟之後 Hadoop 在執行任何動作之前都會先確認是否有許可權。詳細的許可權設定會放在 hadoop-policy.xml 裡。例如要讓 fenriswolf 這個 account 及 mapreduce group 可以 submit M/R jobs,要設定security.job.submission.protocol.acl
•hadoop.security.authentication
•預設值 simple
• simple 表示沒有 authentication,Hadoop 會用 system account 及 group 來控管q許可權。另外可以指定為  kerberos,這部分相對比較複雜,要有一個 kerberos server 併產生 account keytab,在執行任何操作前 client 要先用 kinit 指令對 kerberos server 認證,之後的任何操作都是以 kerberos account 來執行。

•fs.trash.interval
•預設值 0(分)
•清掉垃圾筒的時間。預設是不清, 所以在刪除檔案時要自己執行
•hadoop.native.lib
•預設值 true
• 預設 Hadoop 會去找所有可用的 native libraries 並自動 load 進來使用,例如壓縮類的 libraries 像 GZIP, LZO 等等。


第二部分:hdfs-site.xml
引數列表
•dfs.block.size
•預設值67108864(位元組)
•預設每個 block 是 64MB。如果確定存取的檔案塊都很大可以改為 134217728(128MB)。Client 也可自行決定要使用的 block size 而不需要更改整個 cluster 的設定。
•dfs.safemode.threshold.pct
•預設值  0.999f
•  Hadoop 啟動時會進入 safe mode,也就是安全模式,這時是不能寫入資料的。只有當99.9% 的 blocks 達到最小的 dfs.replication.min 數量(預設是3)才會離開safe mode。在 dfs.replication.min 設的比較大或 data nodes 數量比較多時會等比較久。

•dfs.namenode.handler.count
•預設值 10
•設定 namenode server threads 的數量,這些 threads 會用 RPC 跟其他的 datanodes 溝通。當 datanodes 數量太多時會發現很容易出現RPC timeout,解決方法是提升網路速度或提高這個值,但要注意的是 thread 數量多也表示 namenode 消耗的記憶體也隨著增加
•dfs.datanode.handler.count
•預設值  3
•  指定 data node 上用的 thread 數量。

•dfs.datanode.max.xcievers
•預設值 256
•這個值是指定 datanode 可同時處理的最大檔案數量、
•dfs.datanode.du.reserved
•預設值 0
•預設值表示 data nodes 會使用整個 磁碟,寫滿之後會導致無法再寫入 M/R jobs。如果還有其他程式共用這些目錄也會受到影響。建議保留至少 1073741824(1G) 的空間。


第三部分:mapred-site.xml
引數列表

•io.sort.mb
•預設值100
•快取map中間結果的buffer大小(in MB)
•io.sort.record.percent
•預設值 0.05
•io.sort.mb中用來儲存map output記錄邊界的百分比,其他快取用來儲存資料
•io.sort.spill.percent
•預設值0.80
•map開始做spill操作的閾值
•io.sort.factor
•預設值 10
•做merge操作時同時操作的stream數上限。

•min.num.spill.for.combine
•預設值3
•combiner函式執行的最小spill數
•mapred.compress.map.output
•預設值 false
•map中間結果是否採用壓縮
•mapred.map.output.compression.codec
•org.apache.hadoop.io.compress.DefaultCodec
•min.num.spill.for.combine
•預設值3
•combiner函式執行的最小spill數
•mapred.compress.map.output
•預設值 false
•map中間結果是否採用壓縮
•mapred.map.output.compression.codec
•org.apache.hadoop.io.compress.DefaultCodec
•mapred.reduce.parallel.copies
•預設值5
•每個reduce並行下載map結果的最大執行緒數
•mapred.reduce.copy.backoff
•預設值 300
•reduce下載執行緒最大等待時間(in sec)
•io.sort.factor
•預設值10
•org.apache.hadoop.io.compress.DefaultCodec
•mapred.job.shuffle.input.buffer.percent
•預設值0.7
•用來快取shuffle資料的reduce task heap百分比
•mapred.job.shuffle.merge.percent
•預設值 0.66
•快取的記憶體中多少百分比後開始做merge操作
•mapred.job.reduce.input.buffer.percent
•預設值0.0
•sort完成後reduce計算階段用來快取資料的百分比

相關文章