Hadoop 组件性能优化思维导图
2019-01-28 17:12:37 0 举报
AI智能生成
为你推荐
查看更多
Hadoop组件性能优化
作者其他创作
大纲/内容
\b性能优化
Linux
noatime 和 nodiratime 属性
ext2 / ext3 文件系统,文件创建、修改会记录时间戳,如果访问量大关闭这些操作可以提高性能
readahead buffer 预读缓冲区大小
默认 256 sectors
可以增大到 1024|2048 sectors
blockdev 命令调整
不使用 RAID 和 LVM 文件系统
open files 最多打开文件数
查看最大打开文件数
sysctl -a | grep fs.file
永久生效 sudo vim /etc/security/limits.conf
hadoop soft nofile 65535hadoop hard nofile 65536
关闭透明大页
if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabledfi
http://www.knowsky.com/617647.html
HDFS
hdfs-default.xml
dfs.namenode.handler.count
namenode或者jobtracker中用于处理RPC的线程数,默认是10
默认 10
较大集群,可调大些,比如 64
dfs.datanode.handler.count
datanode上用于处理RPC的线程数。
需要注意的是,每添加一个线程,需要的内存增加
默认为 3
较大集群,可适当调大些,比如8
dfs.replication
文件副本数
通常设为3
使用默认值
dfs.blocksize
HDFS 块大小
Core
core-default.xml
io.file.buffer.size
Yarn
yarn-default.xml
子主题
MapReduce
mapred-default.xml
MapReduce 的压缩属性
mapreduce.output.fileoutputformat.compress
job 输出应该压缩吗
\b默认 false
设置 true
mapreduce.output.fileoutputformat.compress.type
SqeuenceFile 的输出使用的压缩类型:
默认 RECORD
使用默认
mapreduce.output.fileoutputformat.compress.codec
Map 输出使用的压缩 codec
默认 org.apache.hadoop.io.compress.DefaultCodec
开启 MapReduce 压缩
mapreduce.map.output.compress
map 的输出应该压缩之前在网络上发送。使用SequenceFile压缩
默认 false
mapreduce.map.output.compress.codec
MapRedcue 任务环境优化
mapred.child.java.opts
每一个map或是reduce进程都是一个task,都会对应启动一个JVM
默认: -Xmx200m
取值范围以及影响
mapreduce.task.io.sort.mb 的 2倍值
单节点内存 / (mapreduce.tasktracker.map.tasks.maximum + mapreduce.tasktracker.reduce.tasks.maximum)
mapreduce.map.memory.mb |mapreduce.reduce.memory.mb 会替换此值
mapreduce.map.java.opts
计算公式 : (dfs.blocksize x 4)
设置 -Xmx512M
mapreduce.reduce.java.opts
计算公式 : (dfs.blocksize x 5)
mapreduce.map.java.opts 的 2 倍
设置 -Xmx1024M
mapreduce.job.reduce.slowstart.completedmaps
默认 0.05
mapreduce.map.memory.mb
默认 1024
取值范围
mapreduce.reduce.memory.mb
dfs.blocksize x 8 = 1024
集群节点运行 MAP | Reduce 数
mapreduce.tasktracker.map.tasks.maximum
(集群配置)一个节点同时运行在 TaskTracker 上的最大 map task 数
集群总运行 MAP 数 = Node x mapreduce.tasktracker.map.tasks.maximum
\b默认 2
mapreduce.tasktracker.reduce.tasks.maximum
(集群配置)一个节同时运行在 TaskTracker 上的最大 reduce task 数
集群总运行 MAP 数 = Node x mapreduce.tasktracker.reduce.tasks.maximum
\b默认 2
计算公式
0.95 * ( node(计算节点) * cpu 核数)
1.75 * ( node(计算节点) * cpu 核数)
mapreduce.job.maps
(本地参数)覆盖值 mapreduce.tasktracker.map.tasks.maximum
默认 2
mapreduce.job.reduces
(本地参数)覆盖值 mapreduce.tasktracker.reduce.tasks.maximum
默认 1
小作业优化
mapreduce.job.ubertask.enable
mapreduce.job.ubertask.maxmaps
默认 9
根据 mapreduce.tasktracker.map.tasks.maximum +- 1 左右的值
mapreduce.job.ubertask.maxreduces
mapreduce.map.cpu.vcores
指定每个 map 任务需要的虚拟 CPU 个数
mapreduce.reduce.cpu.vcores
指定每个 reduce 任务需要的虚拟CPU个数
mapreduce.job.jvm.numtasks
是否重用 JVM
设置为 -1 表示重用
mapreduce.map.speculative
map 推测
默认 true
mapreduce.reduce.speculative
reduce 推测
mapreduce.input.fileinputformat.split.maxsize
默认 256000000
shuffle 过程属性
Map
mapreduce.task.io.sort.mb
mapreduce.map.sort.spill.percent
mapreduce.task.io.sort.mb 属性的 buffer 的阈值
mapreduce.map.combine.minspills
默认 3
可以设置成 5
mapreduce.cluster.local.dir
溢出的内容会写到本属性配置的目录中
${hadoop.tmp.dir}/mapred/local
Reduce
mapreduce.reduce.shuffle.parallelcopies
用于把 map 的输出复制到 reduce 的线程数
默认 5
\b设置成 10
mapreduce.reduce.shuffle.input.buffer.percent
影响面
以 (mapreduce.task.io.sort.mb 或 mapreduce.reduce.memory.mb) 作为百分比
默认 0.70
mapreduce.reduce.shuffle.merge.percent
人话: reduce 归并接收 map 的输出数据可占用的内存配置百分比
默认 0.66
mapreduce.reduce.merge.inmem.threshold
人话: 内存中的合并文件数设置
默认 1000
mapreduce.reduce.input.buffer.percent
这个参数设置用于在 reduce 阶段保存 map 输出的内存的百分比(相对于最大堆大小),当 shuffle 结束时,内存中剩余的 map 输出必须少于这个阈值,然后 reduce 阶段才能够开始
默认 0.0
通用
mapreduce.task.io.sort.factor
\b排序文件时,一次最多合并的流数
\b设置成 100
Hive 环境优化
hive.exec.reducers.bytes.per.reducer
hive.exec.parallel
开启并发
hive.exec.parallel.thread.number
默认 8
$HIVE_HOME/conf/hive-env.sh
设置 Hive CLI Driver 的 heap size
exoport HADOOP_HEAPSIZE=2048
同 mapred.child.java.opts
数据倾斜
join 阶段数据倾斜
hive.optimize.skewjoin=true
hive.skewjoin.key=100000
groupby 阶段数据倾斜
hive.groupby.skewindata=true
hive.groupby.mapaggr.checkinterval=100000
hive.optimize.bucketmapjoin.sortedmerge
\b扩展
Docs
http://dongxicheng.org/framework-on-yarn/hadoop-spark-common-parameters/
mapper 的数量
reducer 的数量
combine 组合器
中间值的压缩
自定义序列
调整 shuffle
0 条评论
回复 删除
下一页