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