Hadoop配置文件 html
部份內容參考:http://www.linuxqq.NET/archives/964.html http://slaytanic.blog.51cto.com/2057708/1100974/java
Hadoop的重要配置文件有如下幾個:node
在1.2.1版本中,core-default.xml有73個屬性,hdfs-default.xml有76個屬性,mapred-default.xml有136個屬性。linux
更多內容請參考P328
1、masters/slaves
一、masters記錄的是須要啓動secondary namenode的節點, 不是namenode,它也和mapreduce沒任何關係。
slaves記錄的是須要執行start-all.sh(或相關命令)時,須要遠程啓動tasktracker與datanode的節點。
二、這2個文件不須要分發至各個工做節點。
三、哪一個機器執行啓動腳本,那它就是jobtracke與namenode,再根據masters肯定secondary namenode, 根據slaves文件肯定tasktracker與datanode,並遠程啓動這些守護進程。
示例:
2、hadoop-env.sh
一、JAVA_HOME必須設置,其他均爲可選項。
二、HADOOP_HEAPSIZE:分配給各個守護進程的內存大小,默認爲1000M
另外,可使用HADOOP_NAMENODE_OPTS等單獨設置某一守護進行的內存大小
這個參數的分配參考P322。
大型集羣通常設置2000M或以上,開發環境中設置500M足夠了。
三、HADOOP_LOG_DIR:日誌文件的存放目錄,能夠設置爲/var/log/hadoop
四、HADOOP_SLAVES:slaves文件的位置,通常無需修改
五、HADOOP_SSH_OPTS:P335
六、HADOOP_SLAVE_SLEEP:P335
七、HADOOP_IDEN_STRING:影響日誌文件的名稱
完整文件以下:web
[plain] view plain copy算法
3、log4j.properties
日誌文件的相關配置參考http://blog.csdn.net/jediael_lu/article/details/43989689 或者權威指南P190
4、hadoop-metrics.properties
度量相關配置參考??或者權威指南P382
5、core-site.xml
一、fs.default.name:默認的文件系統,通常將其改成hdfs。如:apache
[html] view plain copy安全
二、hadoop.tmp.dir:暫時保存文件的目錄,默認是/tmp/hadoop-$user,此位置有可能在重啓時被清空,所以必須另外配置。服務器
[html] view plain copycookie
這個屬性會影響namenode/secondary namenode中的元數據與datanode中的數據文件存放位置。見下面hdfs-site.xml中的描述。
6、hdfs-site.xml
一、dfs.name.dir:
保存namenode元數據的位置,能夠指定多個目錄,元數據文件會同時寫入這幾個目錄,從而支持冗餘備份。最好有一個是NFS網絡硬盤。
默認是${hadoop.tmp.dir}/dfs/name
二、dfs.data.dir:
保存datanode數據文件的位置,能夠指定多個目錄,這多個目錄位於不一樣的磁盤能夠提升IO使用率。
默認是${hadoop.tmp.dir}/dfs/data
三、fs.checkpoint.dir:
保存secondary namenode元數據的位置,能夠指定多個目錄,元數據文件會同時寫入這幾個目錄,從而支持冗餘備份。最好有一個是NFS網絡硬盤。
默認是${hadoop.tmp.dir}/dfs/namesecondary
注意,fs.checkpoint.dir與dfs.name.dir設置多個路徑,是爲了冗餘備份,而dfs.data.dir設置多個路徑是爲了負載均衡。
[html] view plain copy
四、dfs.replication:
複本數量,默認爲3
[html] view plain copy
7、mapred-site.xml
一、mapred.job.tracker:運行jobtracker的主機名和端口號
示例:
[html] view plain copy
二、mapred.local.dir:存儲做業中間數據的目錄,做業終止時,目錄被清空,以逗號分隔多個目錄
三、mapred.system.dir:做業運行期間存儲共享文件的位置,相對於fs.default.name,默認是${hadoop.tmp.dir}/mapred/system
四、mapred.tasktracker.map.tasks.maximum:同一時間容許運行的最大map任務數,默認爲2
mapred.tasktracker.reduce.tasks.maximum:同一時間容許運行的最大map任務數,默認爲2
五、mapred.child.java.opts:每一個map/reduce任務的JVM內容容量,默認爲-Xmx200m
8、經常使用的端口配置
RPC端口均用於給外部提供遠程調用的端口。
HTTP端口用於提供以頁面形式查看集羣內容。
1 HDFS端口
參數 |
描述 |
默認 |
配置文件 |
例子值 |
fs.default.name |
namenode RPC交互端口 |
9000 |
core-site.xml |
hdfs://master:9000/ |
dfs.http.address |
NameNode web管理端口 |
50070 |
hdfs- site.xml |
0.0.0.0:50070 |
dfs.datanode.address |
datanode 控制端口 |
50010 |
hdfs -site.xml |
0.0.0.0:50010 |
dfs.datanode.ipc.address |
datanode的RPC服務器地址和端口 |
50020 |
hdfs-site.xml |
0.0.0.0:50020 |
dfs.datanode.http.address |
datanode的HTTP服務器和端口 |
50075 |
hdfs-site.xml |
0.0.0.0:50075 |
2 MR端口
參數 |
描述 |
默認 |
配置文件 |
例子值 |
mapred.job.tracker |
job-tracker交互端口 |
9001 |
mapred-site.xml |
master:9001/ |
job |
tracker的web管理端口 |
50030 |
mapred-site.xml |
0.0.0.0:50030 |
mapred.task.tracker.http.address |
task-tracker的HTTP端口 |
50060 |
mapred-site.xml |
0.0.0.0:50060 |
3 其它端口
參數 |
描述 |
默認 |
配置文件 |
例子值 |
dfs.secondary.http.address |
secondary NameNode web管理端口 |
50090 |
hdfs-site.xml |
0.0.0.0:50090 |
|
|
|
|
|
core-site.xml
name |
value |
Description |
fs.default.name |
hdfs://hadoopmaster:9000 |
定義HadoopMaster的URI和端口 |
fs.checkpoint.dir |
/opt/data/hadoop1/hdfs/namesecondary1 |
定義hadoop的name備份的路徑,官方文檔說是讀取這個,寫入dfs.name.dir |
fs.checkpoint.period |
1800 |
定義name備份的備份間隔時間,秒爲單位,只對snn生效,默認一小時 |
fs.checkpoint.size |
33554432 |
以日誌大小間隔作備份間隔,只對snn生效,默認64M |
io.compression.codecs |
org.apache.hadoop.io.compress.DefaultCodec, |
Hadoop所使用的編解碼器,gzip和bzip2爲自帶,lzo需安裝hadoopgpl或者kevinweil,逗號分隔,snappy也須要單獨安裝 |
io.compression.codec.lzo.class |
com.hadoop.compression.lzo.LzoCodec |
LZO所使用的壓縮編碼器 |
topology.script.file.name |
/hadoop/bin/RackAware.py |
機架感知腳本位置 |
topology.script.number.args |
1000 |
機架感知腳本管理的主機數,IP地址 |
fs.trash.interval |
10800 |
HDFS垃圾箱設置,能夠恢復誤刪除,分鐘數,0爲禁用,添加該項無需重啓hadoop |
hadoop.http.filter.initializers |
org.apache.hadoop.security. |
須要jobtracker,tasktracker |
hadoop.http.authentication.type |
simple | kerberos | #AUTHENTICATION_HANDLER_CLASSNAME# |
驗證方式,默認爲簡單,也可本身定義class,需配置全部節點 |
hadoop.http.authentication. |
36000 |
驗證令牌的有效時間,需配置全部節點 |
hadoop.http.authentication. |
默承認不寫參數 |
默認不寫在hadoop啓動時自動生成私密簽名,需配置全部節點 |
hadoop.http.authentication.cookie.domain |
domian.tld |
http驗證所使用的cookie的域名,IP地址訪問則該項無效,必須給全部節點都配置域名才能夠。 |
hadoop.http.authentication. |
true | false |
簡單驗證專用,默認容許匿名訪問,true |
hadoop.http.authentication. |
HTTP/localhost@$LOCALHOST |
Kerberos驗證專用,參加認證的實體機必須使用HTTP做爲K的Name |
hadoop.http.authentication. |
/home/xianglei/hadoop.keytab |
Kerberos驗證專用,密鑰文件存放位置 |
hadoop.security.authorization |
true|false |
Hadoop服務層級驗證安全驗證,需配合hadoop-policy.xml使用,配置好之後用dfsadmin,mradmin -refreshServiceAcl刷新生效 |
io.file.buffer.size |
131072 |
用做序列化文件處理時讀寫buffer的大小 |
hadoop.security.authentication |
simple | kerberos |
hadoop自己的權限驗證,非http訪問,simple或者kerberos |
hadoop.logfile.size |
1000000000 |
設置日誌文件大小,超過則滾動新日誌 |
hadoop.logfile.count |
20 |
最大日誌數 |
io.bytes.per.checksum |
1024 |
每校驗碼所校驗的字節數,不要大於io.file.buffer.size |
io.skip.checksum.errors |
true | false |
處理序列化文件時跳過校驗碼錯誤,不拋異常。默認false |
io.serializations |
org.apache.hadoop.io. (排版須要。實際配置不要回車) |
序列化的編解碼器 |
io.seqfile.compress.blocksize |
1024000 |
塊壓縮的序列化文件的最小塊大小,字節 |
webinterface.private.actions |
true | false |
設爲true,則JT和NN的tracker網頁會出現殺任務刪文件等操做鏈接,默認是false |
hdfs-site.xml
name |
value |
Description |
dfs.default.chunk.view.size |
32768 |
namenode的http訪問頁面中針對每一個文件的內容顯示大小,一般無需設置。 |
dfs.datanode.du.reserved |
1073741824 |
每塊磁盤所保留的空間大小,須要設置一些,主要是給非hdfs文件使用,默認是不保留,0字節 |
dfs.name.dir |
/opt/data1/hdfs/name, |
NN所使用的元數據保存,通常建議在nfs上保留一份,做爲1.0的HA方案使用,也能夠在一臺服務器的多塊硬盤上使用 |
dfs.web.ugi |
nobody,nobody |
NN,JT等所使用的web tracker頁面服務器所使用的用戶和組 |
dfs.permissions |
true | false |
dfs權限是否打開,我通常設置false,經過開發工具培訓別人界面操做避免誤操做,設置爲true有時候會遇到數據由於權限訪問不了。 |
dfs.permissions.supergroup |
supergroup |
設置hdfs超級權限的組,默認是supergroup,啓動hadoop所使用的用戶一般是superuser。 |
dfs.data.dir |
/opt/data1/hdfs/data, |
真正的datanode數據保存路徑,能夠寫多塊硬盤,逗號分隔 |
dfs.datanode.data.dir.perm |
755 |
datanode所使用的本地文件夾的路徑權限,默認755 |
dfs.replication |
3 |
hdfs數據塊的複製份數,默認3,理論上份數越多跑數速度越快,可是須要的存儲空間也更多。有錢人能夠調5或者6 |
dfs.replication.max |
512 |
有時dn臨時故障恢復後會致使數據超過默認備份數。複製份數的最多數,一般沒什麼用,不用寫配置文件裏。 |
dfs.replication.min |
1 |
最小份數,做用同上。 |
dfs.block.size |
134217728 |
每一個文件塊的大小,咱們用128M,默認是64M。這個計算須要128*1024^2,我碰上過有人直接寫128000000,十分浪漫。 |
dfs.df.interval |
60000 |
磁盤用量統計自動刷新時間,單位是毫秒。 |
dfs.client.block.write.retries |
3 |
數據塊寫入的最多重試次數,在這次數以前不會捕獲失敗。 |
dfs.heartbeat.interval |
3 |
DN的心跳檢測時間間隔。秒 |
dfs.namenode.handler.count |
10 |
NN啓動後展開的線程數。 |
dfs.balance.bandwidthPerSec |
1048576 |
作balance時所使用的每秒最大帶寬,使用字節做爲單位,而不是bit |
dfs.hosts |
/opt/hadoop/conf/hosts.allow |
一個主機名列表文件,這裏的主機是容許鏈接NN的,必須寫絕對路徑,文件內容爲空則認爲全均可以。 |
dfs.hosts.exclude |
/opt/hadoop/conf/hosts.deny |
基本原理同上,只不過這裏放的是禁止訪問NN的主機名稱列表。這在從集羣中摘除DN會比較有用。 |
dfs.max.objects |
0 |
dfs最大併發對象數,HDFS中的文件,目錄塊都會被認爲是一個對象。0表示不限制 |
dfs.replication.interval |
3 |
NN計算複製塊的內部間隔時間,一般不需寫入配置文件。默認就好 |
dfs.support.append |
true | false |
新的hadoop支持了文件的APPEND操做,這個就是控制是否容許文件APPEND的,可是默認是false,理由是追加還有bug。 |
dfs.datanode.failed.volumes.tolerated |
0 |
可以致使DN掛掉的壞硬盤最大數,默認0就是隻要有1個硬盤壞了,DN就會shutdown。 |
dfs.secondary.http.address |
0.0.0.0:50090 |
SNN的tracker頁面監聽地址和端口 |
dfs.datanode.address |
0.0.0.0:50010 |
DN的服務監聽端口,端口爲0的話會隨機監聽端口,經過心跳通知NN |
dfs.datanode.http.address |
0.0.0.0:50075 |
DN的tracker頁面監聽地址和端口 |
dfs.datanode.ipc.address |
0.0.0.0:50020 |
DN的IPC監聽端口,寫0的話監聽在隨機端口經過心跳傳輸給NN |
dfs.datanode.handler.count |
3 |
DN啓動的服務線程數 |
dfs.http.address |
0.0.0.0:50070 |
NN的tracker頁面監聽地址和端口 |
dfs.https.enable |
true | false |
NN的tracker是否監聽在HTTPS協議,默認false |
dfs.datanode.https.address |
0.0.0.0:50475 |
DN的HTTPS的tracker頁面監聽地址和端口 |
dfs.https.address |
0.0.0.0:50470 |
NN的HTTPS的tracker頁面監聽地址和端口 |
dfs.datanode.max.xcievers |
2048 |
至關於linux下的打開文件最大數量,文檔中無此參數,當出現DataXceiver報錯的時候,須要調大。默認256 |
mapred-site.xml
name |
value |
Description |
hadoop.job.history.location |
|
job歷史文件保存路徑,無可配置參數,也不用寫在配置文件裏,默認在logs的history文件夾下。 |
hadoop.job.history.user.location |
|
用戶歷史文件存放位置 |
io.sort.factor |
30 |
這裏處理流合併時的文件排序數,我理解爲排序時打開的文件數 |
io.sort.mb |
600 |
排序所使用的內存數量,單位兆,默認1,我記得是不能超過mapred.child.java.opt設置,不然會OOM |
mapred.job.tracker |
hadoopmaster:9001 |
鏈接jobtrack服務器的配置項,默認不寫是local,map數1,reduce數1 |
mapred.job.tracker.http.address |
0.0.0.0:50030 |
jobtracker的tracker頁面服務監聽地址 |
mapred.job.tracker.handler.count |
15 |
jobtracker服務的線程數 |
mapred.task.tracker.report.address |
127.0.0.1:0 |
tasktracker監聽的服務器,無需配置,且官方不建議自行修改 |
mapred.local.dir |
/data1/hdfs/mapred/local, |
mapred作本地計算所使用的文件夾,能夠配置多塊硬盤,逗號分隔 |
mapred.system.dir |
/data1/hdfs/mapred/system, |
mapred存放控制文件所使用的文件夾,可配置多塊硬盤,逗號分隔。 |
mapred.temp.dir |
/data1/hdfs/mapred/temp, |
mapred共享的臨時文件夾路徑,解釋同上。 |
mapred.local.dir.minspacestart |
1073741824 |
本地運算文件夾剩餘空間低於該值則不在本地作計算。字節配置,默認0 |
mapred.local.dir.minspacekill |
1073741824 |
本地計算文件夾剩餘空間低於該值則再也不申請新的任務,字節數,默認0 |
mapred.tasktracker.expiry.interval |
60000 |
TT在這個時間內沒有發送心跳,則認爲TT已經掛了。單位毫秒 |
mapred.map.tasks |
2 |
默認每一個job所使用的map數,意思是假設設置dfs塊大小爲64M,須要排序一個60M的文件,也會開啓2個map線程,當jobtracker設置爲本地是不起做用。 |
mapred.reduce.tasks |
1 |
解釋同上 |
mapred.jobtracker.restart.recover |
true | false |
重啓時開啓任務恢復,默認false |
mapred.jobtracker.taskScheduler |
org.apache.hadoop.mapred. |
重要的東西,開啓任務管理器,不設置的話,hadoop默認是FIFO調度器,其餘可使用公平和計算能力調度器 |
mapred.reduce.parallel.copies |
10 |
reduce在shuffle階段使用的並行複製數,默認5 |
mapred.child.java.opts |
-Xmx2048m -Djava.library.path= |
每一個TT子進程所使用的虛擬機內存大小 |
tasktracker.http.threads |
50 |
TT用來跟蹤task任務的http server的線程數 |
mapred.task.tracker.http.address |
0.0.0.0:50060 |
TT默認監聽的httpIP和端口,默承認以不寫。端口寫0則隨機使用。 |
mapred.output.compress |
true | false |
任務結果採用壓縮輸出,默認false,建議false |
mapred.output.compression.codec |
org.apache.hadoop.io. |
輸出結果所使用的編解碼器,也能夠用gz或者bzip2或者lzo或者snappy等 |
mapred.compress.map.output |
true | false |
map輸出結果在進行網絡交換前是否以壓縮格式輸出,默認false,建議true,能夠減少帶寬佔用,代價是會慢一些。 |
mapred.map.output.compression.codec |
com.hadoop.compression. |
map階段壓縮輸出所使用的編解碼器 |
map.sort.class |
org.apache.hadoop.util. |
map輸出排序所使用的算法,默認快排。 |
mapred.hosts |
conf/mhost.allow |
容許鏈接JT的TT服務器列表,空值所有容許 |
mapred.hosts.exclude |
conf/mhost.deny |
禁止鏈接JT的TT列表,節點摘除是頗有做用。 |
mapred.queue.names |
ETL,rush,default |
配合調度器使用的隊列名列表,逗號分隔 |
mapred.tasktracker.map. |
12 |
每服務器容許啓動的最大map槽位數。 |
mapred.tasktracker.reduce. |
6 |
每服務器容許啓動的最大reduce槽位數 |