hadoop性能调优

1.运行namenode的节点要稳定
2.多路多核,高频率cpu、大内存
namenode的内存决定了集群保存文件数的总量,resourcemanager也会消耗一定内存
3.从节点的内存需要根据cpu的虚拟核数进行配比
cpu的vcore数=cpu个数*单cpu核数*HT(超线程 数)
内存容量=vcore数*2GB
4.根据数据量集群规模
如有1TB 每天增加10GB
则:(1TB+10GB*365)*3*1.3=17.8TB
节点数=18TB/2TB=9
总节点数=9+2=11(需要加主节点)
5.不要网络io成为瓶颈
交换机要选好的

操作系统调优不了解

/***hadoop参数调优****/
1.dfs.block.size 块越大,元数据越少,但是影响分片时间
2.mapred.local.dir
将中间结果目录设置为分部在多个磁盘以提升写入速度
3.dfs.datanode.hander.count 默认为三
设置datanode处理rpc的线程数,大集群可以适当加大
4.dfs,namenode.hander.count 
设置namenode能够同时处理的请求数,一般为集群规模的自然对数lnN 的20倍
5.yarn的资源模型为container
容器内存
yarn.nodemanager.resource.memory-mb
最小容器内存
yarn.sheduler.minimum-allocation-mb
容器内存增量
yarn.scheduler.increment-allocation-mb
最大容器内存
yarn.sheduler.maximun-allocation-mb
如果内存为120G可以给容器内存设置为100G

CPU资源
yarn.nodemanager.resource.cpu-vcores
最小虚拟cpu内核数量
yarn.sheduler.minimum-cpu-vcores
容器虚拟cpu内核增量
yarn.scheduler.increment-allocation-mb
最大容器虚拟cpu内核数量
yarn.sheduler.maximun-cpu-vcores

//mapreduce调优
1.增大作业并行程度
改变输入分片的大小,增大数量,计算公式
max(mapred.min.split.size,min(mapred.max.split.size,dfs.block.size)) 
默认
mapre.min.split.size=1
mapred.max.split.size=9223372036854775807
dfs.block.size为块的大小
最好分片大小和块大小一样这样可以减少网络传输

2.内存
Map任务内存
mapreduce.map.memory.bm
Reduce任务内存
mapreduce.reduce.memory.bm
Map任务最大堆栈
mapreduce.map.java.ops.max.heap
Reduce任务最大堆栈
mapreduce.reduce.java.ops.max.heap
ApplicationMaster内存
yarn.app.mapreduce.am.resource.mb

3.把所有资源留个shuffle包含拷贝和排序
最大洗牌连接
mapred.shuttle.max.connections
I/O排序内存缓冲(MIB)
mapreduce.task.io.sort.mb
I/O排序因子
mapreduce.task.io.sort.fastor
洗牌期间并行传输的默认数量,reduce通过rcp条用map的输出
太大造成拥堵
mapreduce.reduce.shuffle.parallelcopies
压缩map输出
mapreduce.map.output.compress

你可能感兴趣的:(hadoop性能调优)