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槽位数

相关文章
相关标签/搜索