基础环境: centos6.8
ambari版本: 2.2.1
HDP版本: 2.3.2.0
HDP的默认配置文件:(本文以ambari-2.2.1为例):
配置文件目录:/usr/hdp/2.3.2.0-2950/hadoop/src/hadoop-common-project/hadoop-common/src/main/resources/
core-default.xml
配置文件目录:/usr/hdp/2.3.2.0-2950/hadoop/src/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/
hdfs-default.xml
配置文件目录:/usr/hdp/2.3.2.0-2950/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/resources/
mapred-default.xml
ambari优先调用配置文件:
配置文件目录(可web界面配置):/usr/hdp/2.3.2.0-2950/hadoop/conf
core-site.xml
hdfs-site.xml
mapred-site.xml
说明:
参数名称更新:例如原来的mapred.reduce.tasks更新为mapreduce.job.reduces,这两个参数都可以使用,只是使用第一个参数时会提示升级(本文使用新参数)。
ambari调用/usr/hdp/2.3.2.0-2950/hadoop/conf下面的配置文件,其他参数使用默认的(本文的调优值都是在web界面操作),配置完成后重启组件后可以在All Applications里面的tools查看Configuration是否配置生效。
# cat /etc/sysctl.conf
##内核默认参数
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
##打开文件数参数(20*1024*1024)
fs.file-max= 20971520
##WEB Server参数
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_time=1200
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_rmem=4096 87380 8388608
net.ipv4.tcp_wmem=4096 87380 8388608
net.ipv4.tcp_max_syn_backlog=8192
net.ipv4.tcp_max_tw_buckets = 5000
##TCP补充参数
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 65535
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
##swap使用率优化
vm.swappiness=0
hadoop.tmp.dir (core-default.xml):
默认值: /tmp/hadoop-${user.name}
说明: 默认存在了里系统的默认临时文件/tmp里。如果服务器是多磁盘的,每个磁盘都设置一个临时文件目录,这样便于mapreduce或者hdfs等使用的时候提高磁盘IO效率。
fs.trash.interval (core-site.xml):
默认值:0
调优值:360
说明: 这个是开启hdfs文件删除自动转移到垃圾箱的选项,值为垃圾箱文件清除时间。
io.file.buffer.size (core-site.xml):
默认值:4096
调优值:131072
说明:SequenceFiles在读写中可以使用的缓存大小,可减少 I/O 次数。在大型的 Hadoop cluster,建议可设定为 65536 到 131072。
dfs.blocksize (hdfs-default.xml):
默认值:134217728
说明: 这个就是hdfs里一个文件块的大小了,ambari中默认128M。太大的话会有较少map同时计算,太小的话也浪费可用map个数资源,而且文件太小namenode就浪费内存多,根据需要进行设置。
dfs.namenode.handler.count (hdfs-default.xml):
默认值:10
说明:设定 namenode server threads 的数量,这些 threads 會用 RPC 跟其他的 datanodes 沟通。当 datanodes 数量太多时会发現很容易出現 RPC timeout,解決方法是提升网络速度或提高这个值,但要注意的是 thread 数量多也表示 namenode 消耗的内存也随着增加
mapred-default.xml(优先设置mapred-site.xml):
mapreduce.job.reduces (mapred-default.xml):
默认值:1
说明:默认启动的reduce数。通过该参数可以手动修改reduce的个数。
mapreduce.map.memory.mb (mapred-site.xml):
默认值:1024
调优值:16384
一个Map Task可使用的资源上限(单位:MB),如果Map Task实际使用的资源量超过该值,则会被强制杀死。
mapreduce.reduce.memory.mb (mapred-site.xml):
默认值:1024
调优值:6114
一个Reduce Task可使用的资源上限(单位:MB),如果Reduce Task实际使用的资源量超过该值,则会被强制杀死。
mapreduce.map.cpu.vcores (mapred-default.xml):
默认值:1
每个map task可使用的最多cpu core数目
mapreduce.reduce.cpu.vcores (mapred-default.xml):
默认值:1
每个reduce task可使用的最多cpu core数目
mapreduce.task.io.sort.factor (mapred-site.xml):
默认值:10
调优值:100
说明:Reduce Task中合并小文件时,一次合并的文件数据,每次合并的时候选择最小的前10进行合并。
mapreduce.task.io.sort.mb (mapred-site.xml):
默认值:100
调优值:2047
说明: Map Task缓冲区所占内存大小。
mapred.child.Java.opts (mapred-default.xml):
默认值:-Xmx200m
说明:jvm启动的子线程可以使用的最大内存。建议值:-Xmx512m -Xmx1024m -verbose:gc -Xloggc:/tmp/@[email protected](@taskid@会被Hadoop框架自动换为相应的taskid)
mapreduce.jobtracker.handler.count (mapred-default.xml):
默认值:10
说明:JobTracker可以启动的线程数。
mapreduce.reduce.shuffle.parallelcopies (mapred-site.xml):
默认值:5
调优值:50
说明:reuduce shuffle阶段并行传输数据的数量。集群大可以增大。
mapreduce.tasktracker.http.threads (mapred-default.xml):
默认值:40
说明:map和reduce是通过http进行数据传输的,这个是设置传输的并行线程数。
mapreduce.map.output.compress (mapred-site.xml):
默认值:false
调优值:true
说明: map输出是否进行压缩,如果压缩就会多耗cpu,但是减少传输时间,如果不压缩,就需要较多的传输带宽。配合 mapreduce.map.output.compress.codec使用,默认是 org.apache.hadoop.io.compress.DefaultCodec,可以根据需要设定数据压缩方式。
mapreduce.output.fileoutputformat.compress (mapred-site.xml):
默认值:false
调优值:true
说明: map输出是否进行压缩,如果压缩就会多耗cpu,但是减少传输时间,如果不压缩,就需要较多的传输带宽。配合 mapreduce.output.fileoutputformat.compress.codec使用,默认是 org.apache.hadoop.io.compress.DefaultCodec,可以根据需要设定数据压缩方式。
mapreduce.reduce.shuffle.merge.percent (mapred-site.xml):
默认值: 0.66
说明:reduce归并接收map的输出数据可占用的内存配置百分比。类似mapreduce.reduce.shuffle.input.buffer.percen属性。
mapreduce.reduce.shuffle.memory.limit.percent (mapred-default.xml):
默认值: 0.25
说明:一个单一的shuffle的最大内存使用限制。
mapreduce.jobtracker.handler.count (mapred-default.xml):
默认值: 10
说明:可并发处理来自tasktracker的RPC请求数,默认值10。
mapreduce.job.jvm.numtasks (mapred-default.xml):
默认值: 1
说明:一个jvm可连续启动多个同类型任务,默认值1,若为-1表示不受限制。
mapreduce.tasktracker.reduce.tasks.maximum (mapred-default.xml):
默认值: 2
说明:一个tasktracker并发执行的reduce数,建议为cpu核数