一、hdfs调优:
在hdfs-site.xml文件中修改配置文件:
1.dfs.namenode.handler.count:调整namenode处理客户端的线程数
value = 20*logN,N为集群大小
二、yarn调优
在yarn-site.xml文件中修改配置文件:
1.yarn.nodemanager.resource:表示该节点上YARN可使用的物理内存总量,默认是8192 (MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。
2.yarn.scheduler.maximum-allocation-mb:单个任务可申请的最多物理内存量,默认是8192 (MB)。
三、MapReduce 调优:
1.mapreduce.map.memory.mb:一个MapTask可使用的资源上限((单位:MB),默认为1024。如果MaplasK实际使用的资源量超过该值,则会被强制杀死。
2.mapreduce.reduce.memory.mb:一个ReduceTask可使用的资源上限(单位:MB),默认为1024。如果ReduceTask实际使用的资源量超过该值,则会被强制杀死。
3.mapreduce.map.cpu.vcores:每个MapTask可使用的最多cpu core数目,默认值:1
4.mapreduce.reduce.cpu.vcores:每个ReduceTask可使用的最多cpu core数目,默认值: 1
5.mapreduce.reduce.shuffle.parallelcopies:每个Reduce去Map中取数据的并行数。默认值是5
6.mapreduce.reduce.shuffle.merge.percent:Buffer中的数据达到多少比例开始写入磁盘。默认值0.66
7.mapreduce.reduce.shuffle.input.buffer.percent:Buffer大小占Reduce可用内存的比例。默认值0.7
8.mapreduce.reduce.input.buffer.percent:指定多少比例的内存用来存放Buffer中的数据,默认值是0.0
思路二:
我猜测那些集群的参数调优不是修改参数,而是将配置文件升级为高可用:
1.core-site.xml
fs.defaultFS hdfs://master io.file.buffer.size 65536 读写缓存大小设定,该属性值单位为KB,65536KB即为默认的64M hadoop.tmp.dir file:/home/hadoopdir/tmp/ 临时文件路径,默认为/tmp,在虚拟机中必须指定这一项为其他目录,否则随着虚拟机的重启,/tmp目录会自动消失 ha.zookeeper.quorum masterNode1:2181,slaveNode1:2181,slaveNode2:2181
2.hdfs-site.xml
dfs.namenode.name.dir file:///home/hadoopdir/dfs/name hdfs元数据存存储目录 dfs.datanode.data.dir /home/hadoopdir/dfs/data,/home/hadoopdir/dfs/data2 DataNode在本地文件系统中存放块的路径,如果是多个路径,请用逗号隔开,会自动选用多个目录进行数据存储 dfs.replication 2 备份数量,伪分布式则将其配置成1 dfs.blocksize 33554432 设置大文件系统HDFS块,默认值为64M dfs.namenode.handler.count 100 NameNode服务器线程数,用于处理来自DataNodes的RPC dfs.webhdfs.enabled true 是否开通HDFS的Web接口,默认端口是50070 dfs.nameservices master dfs.ha.namenodes.master nn1,nn2 dfs.namenode.rpc-address.master.nn1 masterNode1:9000 dfs.namenode.rpc-address.master.nn2 slaveNode1:9000 dfs.namenode.http-address.master.nn1 masterNode1:50070 dfs.namenode.http-address.master.nn2 slaveNode1:50070 dfs.namenode.servicerpc-address.master.nn1 masterNode1:53310 dfs.namenode.servicerpc-address.master.nn2 slaveNode1:53310 dfs.namenode.shared.edits.dir qjournal://masterNode1:8485;slaveNode1:8485;slaveNode2:8485/master dfs.journalnode.edits.dir /home/hadoop/Jnode dfs.ha.automatic-failover.enabled true dfs.client.failover.proxy.provider.master org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfence shell(true) dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa dfs.ha.fencing.ssh.connect-timeout 3000
3.mapred-site.xml
mapreduce.framework.name yarn 执行框架设置为Hadoop的YARN mapreduce.map.memory.mb 1024 对maps的资源限制,单位mb mapreduce.map.java.opts -Xmx819M maps中对jvm child设置堆大小 mapreduce.reduce.memory.mb 2048 设置 reduces的资源限制,单位mb mapreduce.reduce.java.opts -Xmx1638M reduces对 jvm child设置的堆大小 mapreduce.task.io.sort.mb 256 更高的内存限制,而对数据进行排序的效率,单位mb mapreduce.task.io.sort.factor 50 在文件排序中更多的流合并为一次 mapreduce.reduce.shuffle.parallelcopies 50 通过reduces从很多的map中读取较多的平行副本
4.yarn-site.xml
yarn.resourcemanager.ha.enabled true yarn.resourcemanager.ha.automatic-failover.enabled true yarn.resourcemanager.ha.automatic-failover.embedded true yarn.resourcemanager.cluster-id yrc yarn.resourcemanager.ha.rm-ids rm1,rm2 yarn.resourcemanager.hostname.rm1 masterNode1 yarn.resourcemanager.hostname.rm2 slaveNode1 yarn.resourcemanager.recovery.enabled true yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore yarn.resourcemanager.zk-address masterNode1:2181,slaveNode1:2181,slaveNode2:2181 yarn.log-aggregation-enable true yarn.nodemanager.aux-services mapreduce_shuffle NodeManager上运行的附属服务。需配置成mapreduce_shuffle才可运行MapReduce程序 yarn.nodemanager.aux-services.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler 启用的资源调度器主类 yarn.nodemanager.resource.memory-mb 4096 yarn.scheduler.minimum-allocation-mb 1024 yarn.scheduler.maximum-allocation-mb 4096 yarn.nodemanager.vmem-check-enabled false 是否强制检查虚拟内存的使用配额,如果内存不够的时候系统就会使用swap空间内存,而hadoop会强制检查使用的虚拟内存的数额,如果使用的虚拟内存的数量大于真实内存的2.1倍,会自动杀死相关字进程。 yarn.nodemanager.pmem-check-enabled false yarn.nodemanager.resource.cpu-vcores 1 表示该节点上YARN可使用的虚拟CPU个数,默认是8,注意,目前推荐将该值设值为与物理CPU核数数目相同。如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物理CPU总数。推荐在slaveNode中将这个数值设定为1 yarn.scheduler.maximum-allocation-vcores 3 单个任务可申请的最多虚拟CPU个数,默认是32。
嗯嗯嗯~~~~大概就是这样子了



