Hadoop配置文件

Hadoop配置文件 html

 

部份內容參考:http://www.linuxqq.NET/archives/964.html  http://slaytanic.blog.51cto.com/2057708/1100974/java

Hadoop的重要配置文件有如下幾個:node

http://img.blog.csdn.net/20150303110525857?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamVkaWFlbF9sdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

 

    在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算法

在CODE上查看代碼片派生到個人代碼片

  1. # Set Hadoop-specific environment variables here.  
  2.   
  3. # The only required environment variable is JAVA_HOME.  All others are  
  4. # optional.  When running a distributed configuration it is best to  
  5. # set JAVA_HOME in this file, so that it is correctly defined on  
  6. # remote nodes.  
  7.   
  8. # The java implementation to use.  Required.  
  9. # export JAVA_HOME=/usr/lib/j2sdk1.5-sun  
  10.   
  11. # Extra Java CLASSPATH elements.  Optional.  
  12. # export HADOOP_CLASSPATH=  
  13.   
  14. # The maximum amount of heap to use, in MB. Default is 1000.  
  15. # export HADOOP_HEAPSIZE=2000  
  16.   
  17. # Extra Java runtime options.  Empty by default.  
  18. # export HADOOP_OPTS=-server  
  19.   
  20. # Command specific options appended to HADOOP_OPTS when specified  
  21. export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS"  
  22. export HADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_SECONDARYNAMENODE_OPTS"  
  23. export HADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_DATANODE_OPTS"  
  24. export HADOOP_BALANCER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_BALANCER_OPTS"  
  25. export HADOOP_JOBTRACKER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_JOBTRACKER_OPTS"  
  26. # export HADOOP_TASKTRACKER_OPTS=  
  27. # The following applies to multiple commands (fs, dfs, fsck, distcp etc)  
  28. # export HADOOP_CLIENT_OPTS  
  29.   
  30. # Extra ssh options.  Empty by default.  
  31. # export HADOOP_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HADOOP_CONF_DIR"  
  32.   
  33. # Where log files are stored.  $HADOOP_HOME/logs by default.  
  34. # export HADOOP_LOG_DIR=${HADOOP_HOME}/logs  
  35.   
  36. # File naming remote slave hosts.  $HADOOP_HOME/conf/slaves by default.  
  37. # export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves  
  38.   
  39. # host:path where hadoop code should be rsync'd from.  Unset by default.  
  40. # export HADOOP_MASTER=master:/home/$USER/src/hadoop  
  41.   
  42. # Seconds to sleep between slave commands.  Unset by default.  This  
  43. # can be useful in large clusters, where, e.g., slave rsyncs can  
  44. # otherwise arrive faster than the master can service them.  
  45. # export HADOOP_SLAVE_SLEEP=0.1  
  46.   
  47. # The directory where pid files are stored. /tmp by default.  
  48. # NOTE: this should be set to a directory that can only be written to by   
  49. #       the users that are going to run the hadoop daemons.  Otherwise there is  
  50. #       the potential for a symlink attack.  
  51. # export HADOOP_PID_DIR=/var/hadoop/pids  
  52.   
  53. # A string representing this instance of hadoop. $USER by default.  
  54. # export HADOOP_IDENT_STRING=$USER  
  55.   
  56. # The scheduling priority for daemon processes.  See 'man nice'.  
  57. # export HADOOP_NICENESS=10  




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安全

 

  1. <property>  
  2.   
  3.  <name>fs.default.name</name>  
  4.   
  5.   <value>hdfs://master:9000</value>  
  6.   
  7.   </property>  



二、hadoop.tmp.dir:暫時保存文件的目錄,默認是/tmp/hadoop-$user,此位置有可能在重啓時被清空,所以必須另外配置。服務器

[html] view plain copycookie

在CODE上查看代碼片派生到個人代碼片

  1. <property>  
  2.   
  3.  <name>hadoop.tmp.dir</name>  
  4.   
  5.   <value>/mnt/tmphadoop</value>  
  6.   
  7.   </property>   


這個屬性會影響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

在CODE上查看代碼片派生到個人代碼片

  1. <property>  
  2.  <name>dfs.name.dir</name>  
  3.    <value>${hadoop.tmp.dir}/dfs/name,/mnt/backup/dfs/name</value>  
  4.      </property>  
  5.   
  6. <property>  
  7.  <name>dfs.checkpoint.dir</name>  
  8.    <value>${hadoop.tmp.dir}/dfs/namesecond,/mnt/backup/dfs/namesecond</value>  
  9.      </property>  


 

四、dfs.replication:

複本數量,默認爲3

[html] view plain copy

在CODE上查看代碼片派生到個人代碼片

  1. <property>  
  2.  <name>dfs.replication</name>  
  3.   <value>2</value>  
  4.   </property>  

 

7、mapred-site.xml

一、mapred.job.tracker:運行jobtracker的主機名和端口號

示例:

[html] view plain copy

在CODE上查看代碼片派生到個人代碼片

  1. <property>  
  2.   
  3.  <name>mapred.job.tracker</name>  
  4.   
  5.   <value>master:9001</value>  
  6.   
  7.   </property>  



二、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,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec,
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.BZip2Codec
(排版調整,實際配置不要回車)

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.
AuthenticationFilterInitializer
(排版調整,實際配置不要回車)

須要jobtracker,tasktracker
namenode,datanode等http訪問端口用戶驗證使用,需配置全部節點

 hadoop.http.authentication.type

simple | kerberos | #AUTHENTICATION_HANDLER_CLASSNAME#

驗證方式,默認爲簡單,也可本身定義class,需配置全部節點

 hadoop.http.authentication.
token.validity
(排版調整,實際配置不要回車)

36000

驗證令牌的有效時間,需配置全部節點

 hadoop.http.authentication.
signature.secret
(排版調整,實際配置不要回車)

默承認不寫參數

默認不寫在hadoop啓動時自動生成私密簽名,需配置全部節點

 hadoop.http.authentication.cookie.domain

domian.tld

http驗證所使用的cookie的域名,IP地址訪問則該項無效,必須給全部節點都配置域名才能夠。

 hadoop.http.authentication.
 simple.anonymous.allowed
(排版調整,實際配置不要回車)

true | false

簡單驗證專用,默認容許匿名訪問,true

 hadoop.http.authentication.
kerberos.principal
(排版調整,實際配置不要回車)

HTTP/localhost@$LOCALHOST

Kerberos驗證專用,參加認證的實體機必須使用HTTP做爲K的Name

 hadoop.http.authentication.
kerberos.keytab
(排版調整,實際配置不要回車)

/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.
serializer.WritableSerialization

(排版須要。實際配置不要回車)

序列化的編解碼器

 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,
/opt/data2/hdfs/name,
/nfs/data/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,
/opt/data2/hdfs/data,
/opt/data3/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,
/data2/hdfs/mapred/local,
...

mapred作本地計算所使用的文件夾,能夠配置多塊硬盤,逗號分隔

mapred.system.dir

/data1/hdfs/mapred/system,
/data2/hdfs/mapred/system,
...

mapred存放控制文件所使用的文件夾,可配置多塊硬盤,逗號分隔。

mapred.temp.dir

/data1/hdfs/mapred/temp,
/data2/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.
CapacityTaskScheduler

org.apache.hadoop.mapred.
JobQueueTaskScheduler

org.apache.hadoop.mapred.
FairScheduler

重要的東西,開啓任務管理器,不設置的話,hadoop默認是FIFO調度器,其餘可使用公平和計算能力調度器

mapred.reduce.parallel.copies

10

reduce在shuffle階段使用的並行複製數,默認5

mapred.child.java.opts

-Xmx2048m

-Djava.library.path=
/opt/hadoopgpl/native/
Linux-amd64-64

每一個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.
compress.DefaultCodec

輸出結果所使用的編解碼器,也能夠用gz或者bzip2或者lzo或者snappy等

mapred.compress.map.output

true | false

map輸出結果在進行網絡交換前是否以壓縮格式輸出,默認false,建議true,能夠減少帶寬佔用,代價是會慢一些。

mapred.map.output.compression.codec

com.hadoop.compression.
lzo.LzoCodec

map階段壓縮輸出所使用的編解碼器

map.sort.class

org.apache.hadoop.util.
QuickSort

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.
tasks.maximum

12

每服務器容許啓動的最大map槽位數。

mapred.tasktracker.reduce.
tasks.maximum

6

每服務器容許啓動的最大reduce槽位數

相關文章
相關標籤/搜索