hadoop 优化:
MapReduce:
Map:
切片优化:调整map的数量
当集群的资源(cup,内存)比较充足。可以适当将切片大小,调小。
这个时候会增加map的数量,加快读取处理速度。
当集群的资源(cup,内存)比较紧缺,可以适当将切片大小,调大。
这个时候会减少map的数量,可以一定程度提高效率。
数据本地化,任务本地化处理:可以适当增加副本数(前提是磁盘空间充足)
调整Reduce数量:
reduce的数量默认由分区决定,也可以直接手动设置reduce个数。
job.setNumReduceTasks(2);
假设key值比较均匀 可以设置不同的reduce 将不同的key存入不同的redece
设置yarn :默认情况下,新版 2.6 默认的调度策略是计算能力调度。
yarn默认的调度策略是:
默认的资源任务队列:default
如果是mapreduce任务,还需要修改
mapred-site.xml
这样就设置好了
将修改后的配置文件,发送到其他子节点,替换。
重启集群。
在mapreduce程序中可以指定执行队列。
Configuration conf = new Configuration();
conf.set(“mapreduce.job.queuename”, “sparktest”);
hdfs: 做HA高可靠。如果磁盘空间充足,可以增加副本数。
hdfs的文件存储:比如可以压缩文件等。
mapreduce程序层面的优化:
1 combine,可以将一些等幂,可以减少shuffle过程。提高计算效率。
job.setCombinerClass(reduce.class);
2 mapjoin,一个大表关联一个小表的时候。一般是512M以下。将小表广播复制到各个计算节点的内存中,用于匹配大表。