hadoop的集群配置中,大部分都用的默认设置,如果想要提高整个集群的性能,可以考虑通过修改配置的方法实现,配置项大部分都配置在这三个文件里:core_site.xml, hdfs_site.xml, mapred_site.xml, 下面将经常会用到的配置项总结如下:(待补充)
core_site.xml
fs.default.name
说明: Name Node的URI
value: hdfs://hostname:port/
备注:hostname要用主机名或域名,不能使用ip
fs.trash.interval
说明:hadoop垃圾回收机制,每隔多长时间清理一次垃圾
value:1440
备注:默认值是0,不打开垃圾收回机制。删除掉的文件将直接清除,不保存。如果设置了,则将保存到本地的.crash文件夹下。
fs.checkpoint.dir
说明:本地文件系统DFS secondaryname节点存储临时图像目录
value:/disk2/cloudera/hadoop/dfs/namesecondary
备注:用于:hadoop namenode -importCheckpoint,从检查点目录装载镜像并保存到当前检查点目录,检查点目录由fs.checkpoint.dir指定。
hadoop.tmp.dir
说明:Hadoop的默认临时文件存放路径
value:/home/hadoop/hadoop/tmp
备注:这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。
不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令
io.file.buffer.size
说明:读写序列文件缓冲区大小
value:16384
备注:值应该设置为硬件页面大小的倍数,默认设置为4096,请设置为4096的倍数
io.bytes.per.checksum
说明:
value:
备注:
io.skip.checksum.errors
说明:
value:
备注:
io.compression.codecs
说明:
value:
备注:
io.serializations
说明:
value:
备注:
hdfs_site.xml
dfs.name.dir
说明:设定DFS Name节点中的命名空间表格文件,在本地系统中的保存位置。 可以设置多个,通过","分隔,fsimage文件,会被复制到多个路径中,用于备份。
value:/home/hadoop/hadoop/name
备注:其中的一个路径,可以利用nfs映射到我们的共享文件夹下,形成异地备份
dfs.data.dir
说明:设定DFS Data节点中的数据块在本地系统中的保存位置。可以设置多个,通过 "," 分隔。设置的文件夹如果不存在,将被忽略。
value:/home/hadoop/data1, /home/hadoop/data2
备注:
dfs.replication
说明:缺省的文件块被复制的次数。在文件被创建的时候可以指定复制的块数,如果在创建的时候没有指定,则使用该缺省值。
value:3
备注:
dfs.block.size
说明:新文件被分隔的缺省块容量。
value:268435456
备注:必须是512的倍数
dfs.datanode.max.xcievers
说明:datanode所允许同时执行的发送和接受任务的数量
value:10240
备注:默认是256.该值太小。可以修改为10240
dfs.web.ugi
说明:hadoop的web界面访问权限设置。
value:hadoop,hadoop
备注:value语法:用户名,用户组
如何设置:
hadoop fs -chmod (修改文件所有者,文件所属组,其他用户的读、写、执行权限)
haddop fs -chown (修改文件所有者)
hadoop fs -chgrp (修改文件所属组)
dfs.permissions
说明:对HDFS是否启用认证。
value:true
备注:默认为true
dfs.permissions.supergroup
说明:超级用户组名称
value:supergroup
备注:
dfs.safemode.threshold.pct
说明:启动的时候,NameNode会等待所有的datanode报告block状态,查看所有的block的副本是否达到最低要求,当报告合格的数量达到设置的值,则退出safemode。
value:0.95f
备注:默认为0.999f
dfs.safemode.extension
说明:Namenode在合格的datanode数目达到要求的时候,并不是马上离开safemode状态,会有一个扩展时间,让剩余的 datanode来报告block信息,这个扩展时间默认是30秒,单位是毫秒。
value:30000
备注:时间默认是30秒,单位是毫秒
dfs.balance.bandwidthPerSec
说明:用于平衡数据。每秒平衡数据量最大带宽。可以放大。
value:10485760
备注:默认是10485760
dfs.replication.min
说明:创建文件时的最小复制数。主要用于dfs.safemode.threshold.pct
value:1
备注:默认为1
dfs.datanode.handler.count
说明:datanode上用于处理RPC的线程数。
value:3
备注:默认为3,较大集群,可适当调大些,比如8。需要注意的是,每添加一个线程,需要的内存增加。
dfs.datanode.du.reserved
说明:表示在datanode对磁盘写时候,保留多少非dfs的磁盘空间, 从而避免dfs将所在的磁盘写满
value:10737418240
备注:默认为0,单位是字节
dfs.df.interval
说明:磁盘使用统计刷新时间间隔,单位毫秒
value:60000
备注:默认是60000,单位是毫秒
dfs.namenode.handler.count
说明:namenode的rpc调用线程数。
value:10
备注:默认是10
dfs.namenode.plugins
说明:
value:
备注:
dfs.datanode.plugins
说明:
value:
备注:
dfs.thrift.address
说明:
value:
备注:
dfs.hosts/dfs.hosts.exclude
说明:Data Node白名单/黑名单文件
value:
备注:
mapred_site.xml
mapred.job.tracker
说明:JobTracker的地址
value:
备注:格式为 hostname:port
mapred.local.dir
说明:运行 mapreduce 中间结果存储处,保存MapReduce临时文件的本地目录
value:
备注:可设置多个,用逗号分隔
mapred.system.dir
说明:HDFS上MapReduce保存系统文件的目录
value:
备注:
mapred.job.tracker.handler.count
说明: jobtracker同时与tasktracker通信的线程数
value:
备注:
mapreduce.jobtracker.staging.root.dir
说明:
value:
备注:
mapred.temp.dir
说明:
value:
备注:
mapred.child.java.opts
说明:设置JVM堆的最大可用内存,需从应用程序角度进行配置。
value:
备注:
mapred.tasktracker.map.tasks.maximum
说明:tasktracker上同时运行的map的最大数量
value:2
备注:默认为2
mapred.tasktracker.reduce.tasks.maximum
说明:tasktracker上同时运行的task的最大数量
value:2
备注:默认为2
mapred.hosts/mapred.host.exclude
说明:MapReduce白名单/黑名单文件
value:
备注:
mapred.queue.names
说明: 队列名
value:
备注: hadoop MapReduce系统默认有一个"default"的Job队列(pool).
mapred.map.tasks.speculative.execution
说明:
value:
备注:
mapred.reduce.tasks.speculative.execution
说明:
value:
备注:
io.sort.mb
说明:排序使用的最大内存
value:
备注:
io.sort.factor
说明: 排序因子。同时合并的数据流的数量
value:
备注:当一个map task执行完之后,本地磁盘上(mapred.local.dir)有若干个spill文件,merge sort 把这些文件合成一个。执行merge sort的时候,每次同时打开多少个spill文件由该参数决定。 打开的文件越多,不一定merge sort就越快,所以要根据数据情况适当的调整。
keep.failed.task.files
说明:
value:
备注:
mapred.job.reuse.jvm.num.tasks
说明:
value:
备注:
mapred.child.env
说明:
value:
备注:
mapred.child.ulimit
说明:
value:
备注:
mapred.output.compress/mapred.compress.map.output
说明:中间结果和最终结果是否要进行压缩,如果是,指定压缩方式(Mapred.compress.map.output.codec/ Mapred.output.compress.codec)。 推荐使用LZO压缩。Intel内部测试表明,相比未压缩,使用LZO压缩的 TeraSort作业,运行时间减少60%,且明显快于Zlib压缩。
value
备注:
tasktracker.http.threads
说明:HTTP server上的线程数。运行在每个TaskTracker上, 用于处理map task输出。
value:8
备注:tasktracker开http服务的线程数。用于reduce拉取map输出数据,大集群可以将其设为40~50。
fs.inmemory.size.mb
说明:reducer在合并map输出数据使用的内存空间
value:
备注: 默认使用200M
mapred.reduce.parallel.copies
说明:reducer同时从mapper上拉取的文件数
value:
备注:
mapred.output.compression.codec
说明:
value:
备注:
mapred.map.output.compression.codec
说明:
value:
备注:
jobtracker.thrift.address
说明:
value:
备注:
mapred.jobtracker.plugins
说明:
value:
备注:
core_site.xml
fs.default.name
说明: Name Node的URI
value: hdfs://hostname:port/
备注:hostname要用主机名或域名,不能使用ip
fs.trash.interval
说明:hadoop垃圾回收机制,每隔多长时间清理一次垃圾
value:1440
备注:默认值是0,不打开垃圾收回机制。删除掉的文件将直接清除,不保存。如果设置了,则将保存到本地的.crash文件夹下。
fs.checkpoint.dir
说明:本地文件系统DFS secondaryname节点存储临时图像目录
value:/disk2/cloudera/hadoop/dfs/namesecondary
备注:用于:hadoop namenode -importCheckpoint,从检查点目录装载镜像并保存到当前检查点目录,检查点目录由fs.checkpoint.dir指定。
hadoop.tmp.dir
说明:Hadoop的默认临时文件存放路径
value:/home/hadoop/hadoop/tmp
备注:这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。
不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令
io.file.buffer.size
说明:读写序列文件缓冲区大小
value:16384
备注:值应该设置为硬件页面大小的倍数,默认设置为4096,请设置为4096的倍数
io.bytes.per.checksum
说明:
value:
备注:
io.skip.checksum.errors
说明:
value:
备注:
io.compression.codecs
说明:
value:
备注:
io.serializations
说明:
value:
备注:
hdfs_site.xml
dfs.name.dir
说明:设定DFS Name节点中的命名空间表格文件,在本地系统中的保存位置。 可以设置多个,通过","分隔,fsimage文件,会被复制到多个路径中,用于备份。
value:/home/hadoop/hadoop/name
备注:其中的一个路径,可以利用nfs映射到我们的共享文件夹下,形成异地备份
dfs.data.dir
说明:设定DFS Data节点中的数据块在本地系统中的保存位置。可以设置多个,通过 "," 分隔。设置的文件夹如果不存在,将被忽略。
value:/home/hadoop/data1, /home/hadoop/data2
备注:
dfs.replication
说明:缺省的文件块被复制的次数。在文件被创建的时候可以指定复制的块数,如果在创建的时候没有指定,则使用该缺省值。
value:3
备注:
dfs.block.size
说明:新文件被分隔的缺省块容量。
value:268435456
备注:必须是512的倍数
dfs.datanode.max.xcievers
说明:datanode所允许同时执行的发送和接受任务的数量
value:10240
备注:默认是256.该值太小。可以修改为10240
dfs.web.ugi
说明:hadoop的web界面访问权限设置。
value:hadoop,hadoop
备注:value语法:用户名,用户组
如何设置:
hadoop fs -chmod (修改文件所有者,文件所属组,其他用户的读、写、执行权限)
haddop fs -chown (修改文件所有者)
hadoop fs -chgrp (修改文件所属组)
dfs.permissions
说明:对HDFS是否启用认证。
value:true
备注:默认为true
dfs.permissions.supergroup
说明:超级用户组名称
value:supergroup
备注:
dfs.safemode.threshold.pct
说明:启动的时候,NameNode会等待所有的datanode报告block状态,查看所有的block的副本是否达到最低要求,当报告合格的数量达到设置的值,则退出safemode。
value:0.95f
备注:默认为0.999f
dfs.safemode.extension
说明:Namenode在合格的datanode数目达到要求的时候,并不是马上离开safemode状态,会有一个扩展时间,让剩余的 datanode来报告block信息,这个扩展时间默认是30秒,单位是毫秒。
value:30000
备注:时间默认是30秒,单位是毫秒
dfs.balance.bandwidthPerSec
说明:用于平衡数据。每秒平衡数据量最大带宽。可以放大。
value:10485760
备注:默认是10485760
dfs.replication.min
说明:创建文件时的最小复制数。主要用于dfs.safemode.threshold.pct
value:1
备注:默认为1
dfs.datanode.handler.count
说明:datanode上用于处理RPC的线程数。
value:3
备注:默认为3,较大集群,可适当调大些,比如8。需要注意的是,每添加一个线程,需要的内存增加。
dfs.datanode.du.reserved
说明:表示在datanode对磁盘写时候,保留多少非dfs的磁盘空间, 从而避免dfs将所在的磁盘写满
value:10737418240
备注:默认为0,单位是字节
dfs.df.interval
说明:磁盘使用统计刷新时间间隔,单位毫秒
value:60000
备注:默认是60000,单位是毫秒
dfs.namenode.handler.count
说明:namenode的rpc调用线程数。
value:10
备注:默认是10
dfs.namenode.plugins
说明:
value:
备注:
dfs.datanode.plugins
说明:
value:
备注:
dfs.thrift.address
说明:
value:
备注:
dfs.hosts/dfs.hosts.exclude
说明:Data Node白名单/黑名单文件
value:
备注:
mapred_site.xml
mapred.job.tracker
说明:JobTracker的地址
value:
备注:格式为 hostname:port
mapred.local.dir
说明:运行 mapreduce 中间结果存储处,保存MapReduce临时文件的本地目录
value:
备注:可设置多个,用逗号分隔
mapred.system.dir
说明:HDFS上MapReduce保存系统文件的目录
value:
备注:
mapred.job.tracker.handler.count
说明: jobtracker同时与tasktracker通信的线程数
value:
备注:
mapreduce.jobtracker.staging.root.dir
说明:
value:
备注:
mapred.temp.dir
说明:
value:
备注:
mapred.child.java.opts
说明:设置JVM堆的最大可用内存,需从应用程序角度进行配置。
value:
备注:
mapred.tasktracker.map.tasks.maximum
说明:tasktracker上同时运行的map的最大数量
value:2
备注:默认为2
mapred.tasktracker.reduce.tasks.maximum
说明:tasktracker上同时运行的task的最大数量
value:2
备注:默认为2
mapred.hosts/mapred.host.exclude
说明:MapReduce白名单/黑名单文件
value:
备注:
mapred.queue.names
说明: 队列名
value:
备注: hadoop MapReduce系统默认有一个"default"的Job队列(pool).
mapred.map.tasks.speculative.execution
说明:
value:
备注:
mapred.reduce.tasks.speculative.execution
说明:
value:
备注:
io.sort.mb
说明:排序使用的最大内存
value:
备注:
io.sort.factor
说明: 排序因子。同时合并的数据流的数量
value:
备注:当一个map task执行完之后,本地磁盘上(mapred.local.dir)有若干个spill文件,merge sort 把这些文件合成一个。执行merge sort的时候,每次同时打开多少个spill文件由该参数决定。 打开的文件越多,不一定merge sort就越快,所以要根据数据情况适当的调整。
keep.failed.task.files
说明:
value:
备注:
mapred.job.reuse.jvm.num.tasks
说明:
value:
备注:
mapred.child.env
说明:
value:
备注:
mapred.child.ulimit
说明:
value:
备注:
mapred.output.compress/mapred.compress.map.output
说明:中间结果和最终结果是否要进行压缩,如果是,指定压缩方式(Mapred.compress.map.output.codec/ Mapred.output.compress.codec)。 推荐使用LZO压缩。Intel内部测试表明,相比未压缩,使用LZO压缩的 TeraSort作业,运行时间减少60%,且明显快于Zlib压缩。
value
备注:
tasktracker.http.threads
说明:HTTP server上的线程数。运行在每个TaskTracker上, 用于处理map task输出。
value:8
备注:tasktracker开http服务的线程数。用于reduce拉取map输出数据,大集群可以将其设为40~50。
fs.inmemory.size.mb
说明:reducer在合并map输出数据使用的内存空间
value:
备注: 默认使用200M
mapred.reduce.parallel.copies
说明:reducer同时从mapper上拉取的文件数
value:
备注:
mapred.output.compression.codec
说明:
value:
备注:
mapred.map.output.compression.codec
说明:
value:
备注:
jobtracker.thrift.address
说明:
value:
备注:
mapred.jobtracker.plugins
说明:
value:
备注: