Hadoop-3.X优化参数

1、hdfs-site.xml

# 副本数
dfs.replication=2
# 数据块大小
dfs.blocksize=134217728
# 磁盘选择策略:DataNode 将会使用 volume 选择策略来为这个块选择存储的地方
dfs.datanode.fsdataset.volume.choosing.policy=org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy
# 配置各个磁盘的均衡阈值:在此节点的所有数据存储的目录中,找一个占用最大的,找一个占用最小的,如果在两者之差在10G的范围内,那么块分配的方式是轮询
dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold=10737418240
# 配置block 块存储的偏好,默认值是0.75f,这个值越接近1,存储到剩余磁盘空间大的磁盘上的块越多,建议使用默认值
dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction=0.75f
# 多数据存储目录
dfs.datanode.data.dir=/dfs/data1,/dfs/data2,[SSD]/dfs/data3,[SSD]/dfs/data4
# 开启HDFS的短路本地读配置
dfs.client.read.shortcircuit=true
dfs.domain.socket.path=/var/lib/hadoop-hdfs/dn_socket
# 延迟blockreport次数
dfs.blockreport.incremental.intervalMsec=300
# 增大datanode文件并发传输大小
dfs.datanode.max.transfer.threads=16384
# 增加datanode连接namenode的rpc请求线程数量
# python -c 'import math ; print int(math.log(25) * 20)'
dfs.datanode.handler.count=64
# 配置为网卡带宽的一半;机器的网卡和交换机的带宽有限,可适当降低该值
dfs.datanode.balance.bandwidthPerSec=6291456
# 避免读取"过时"
dfs.namenode.avoid.read.stale.datanode=true
# 避免写入失效
dfs.namenode.avoid.write.stale.datanode=true
# 防止磁盘空间写满导致HDFS异常
dfs.datanode.du.reserved=10737418240

2、mapred-site.xml

map阶段

# 一个 Map Task 可使用的内存,默认为 1024mb
mapreduce.map.memory.mb=2048
# 每个 Map Task 可用的最多 cpu core 数目,默认值1
mapreduce.map.cpu.vcores=1
# Map Task 的 JVM 参数,默认值1024
mapreduce.map.java.opts=-Xmx409m
# map输出结果是否压缩:本质是CPU换I/O,大部分job的CPU都不是瓶颈,采用压缩一般来说是有效果的
# 基本原则:运算密集型的job,少用压缩;IO密集型的job,多用压缩
mapreduce.map.output.compress=true
# map输出结果压缩算法:bzip2、lzo可切分
mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.lzo.lzoCode

reduce阶段

# hive自动判定reduce数量,默认值1
mapreduce.job.reduces = -1
# 合并文件个数,默认10
mapreduce.task.io.sort.factor=100
# reduce task分配的cpu核数,默认是1,调整到2-4个cpu
mapreduce.reduce.cpu.vcores=2
# 每个ReduceTask的内存,默认是1024MB
mapreduce.reduce.memory.mb=4096
# Reduce Task 的 JVM 参数
mapreduce.reduce.java.opts=-Xmx819m
# job输出结果是否压缩
mapreduce.output.fileoutputformat.compress
mapreduce.output.fileoutputformat.compress.type
mapreduce.output.fileoutputformat.compress.codec

reduce shuffle阶段

# shuffle的环形缓冲区大小,默认100m
mapreduce.task.io.sort.mb=256
# 环形缓冲区溢出的阈值,默认80%
mapreduce.map.sort.spill.percent=0.8
# reduce shuffle阶段并行传输数据的数量,默认值5
# map task有100个,reduce有5个,则平均每个reduce拉去20个map task
mapreduce.reduce.shuffle.parallelcopies=

容错相关参数

# 每个 Map Task 最大重试次数,一旦重试参数超过该值,则认为 Map Task 运行失败,默认值:4。
mapreduce.map.maxattempts
# 每个 Reduce Task最大重试次数,一旦重试参数超过该值,则认为 Map Task 运行失败,默认值:4。
mapreduce.reduce.maxattempts
# 当失败的 Map Task 失败比例超过该值,整个作业则失败,默认值为 0
# 如果你的应用程序允许丢弃部分输入数据,则该该值设为一个大于 0 的值,比如 5,表示如果有低于 5%的 Map Task 失败,整个作业扔认为成功。
mapreduce.map.failures.maxpercent
# 当失败的 Reduce Task 失败比例超过该值为,整个作业则失败,默认值为 0
mapreduce.reduce.failures.maxpercent
# 如果一个 task 在一定时间内没有任何进入,即不会读取新的数据,也没有输出数据,则认为该 task 处于 block 状态,可能是临时卡住,也许永远会卡住。
为了防止因为用户程序永远 block 不退出,则强制设置了一个超时时间(单位毫秒),默认是 600000(10分钟),值为 0 将禁用超时
mapreduce.task.timeout

效率跟稳定性参数

# 是否为 Map Task 打开推测执行机制,默认为 true, 如果为 true,则可以并行执行一些 Map 任务的多个实例。
mapreduce.map.speculative
# 是否为 Reduce Task 打开推测执行机制,默认为 true
mapreduce.reduce.speculative
# FileInputFormat 做切片时最小切片大小,默认 1
mapreduce.input.fileinputformat.split.minsize
# FileInputFormat 做切片时最大切片大小
mapreduce.input.fileinputformat.split.maxsize

推测执行机制(Speculative Execution):它根据一定的法则推测出"拖后腿"的任务,并为这样的任务启动一个备份任务,让该任务与原始任务同时处理同一份数据,并最终选用最先成功运行完成任务的计算结果作为最终结果。

3、yarn-sit.xml

# 表示该节点上 YARN 可使用的物理内存总量,默认是 8192MB
yarn.nodemanager.resource.memory-mb 
# RM中每个容器请求的最小配置,以 MB 为单位,默认1024MB
yarn.scheduler.minimum-allocation-mb
# RM 中每个容器请求的最大分配,默认 8192MB
yarn.scheduler.maximum-allocation-mb
# 虚拟内存率,默认2.1
yarn.nodemanager.vmem-pmem-ratio 

# 该节点服务器上YARN可以使用的虚拟的CPU个数,推荐配置与核心个数相同;机器性能较好,可以配置为物理核数的2倍
yarn.nodemanager.resource.cpu-vcores
# 单个任务最小可以申请的虚拟核心数,默认为1
yarn.scheduler.minimum-allocation-vcores
# 单个任务最大可以申请的虚拟核数,默认为4
yarn.scheduler.maximum-allocation-vcores

4、core-sit.xml

# 默认值: /tmp
# 说明: 尽量手动配置这个选项,否则的话都默认存在了里系统的默认临时文件/tmp里。并且手动配置的时候,如果# 服务器是多磁盘的,每个磁盘都设置一个临时文件目录,这样便于mapreduce或者hdfs等使用的时候提高磁盘IO效率。
hadoop.tmp.dir

# 默认值: 0
# 说明: 这个是开启hdfs文件删除自动转移到垃圾箱的选项,值为垃圾箱文件清除时间。一般开启这个会比较好,以# 防错误删除重要文件。单位是分钟
fs.trash.interval

# 默认值:4096
# 说明:SequenceFiles在读写中可以使用的缓存大小,可减少 I/O 次数。在大型的 Hadoop cluster,建议可设定为 65536 到 131072。
io.file.buffer.size

猜你喜欢

转载自blog.csdn.net/docsz/article/details/130368554
今日推荐