Hadoop常见参数控制 调优策略
hadoop常见参数
配置所在文件 | 参数 | 参数默认值 | |
---|---|---|---|
hdfs-site.xml | dfs.namenode.support.allow.format 格式化指令:hadoop namenode -format 作用是生成新的Fsimage文件和Edits文件。也会清空之前的元数据 | true | 默认是生效的. 把参数变为false,可以使此指令失效 |
hdfs-site.xml | dfs.heartbeat.interval | 3 | 默认心跳间隔周期是3s.如果集群网络状况不好,可以适当调大此参数 |
hdfs-site.xml | dfs.blocksize | 134217728 | 块大小,默认是128MB.一般不调此大小. 但是如果要调节,必须是1024的整数倍 |
hdfs-site.xml | dfs.namenode.checkpoint.period 可以通过指令手动合并: hadoop dfsadmin -rollEdits | 3600 | 此参数是Fsimage和Edits文件的合并周期,默认是3600s |
hdfs-site.xml | dfs.stream-buffer-size | 4096 | 获取的输入流或输出流默认自带缓冲区, 大小是4096字节. 可以适当调大此参数,但必须是1024整数倍 |
mapred-site.xml | mapreduce.task.io.sort.mb | 100 | 溢写缓冲区大小,默认是100MB.可以适当调大此大小. 一般可以控制在200MB~350MB之间.主要看服务器的配置情况 |
mapred-site.xml | mapreduce.map.sort.spill.percent | 0.8 | 溢写阈值, 默认是80%.主要,不要将此参数调成1.一般百分比参数都不动 |
mapred-site.xml | mapreduce.reduce.shuffle.parallelcopies | 5 | 是reduce 默认的Fetch线程数, 调节的策略:让线程数尽可能进阶或等于Map任务数,达到并行抓取的效果 |
mapred-site.xml | mapreduce.job.reduce.slowstart.completedmaps | 0.05 | 此参数是Reduce的启动比例,默认是5%. 比如100个map任务,有5个map任务完成,reduce就开始工作. |
mapred-site.xml | io.sort.factor | 10 | 此参数是Merge的合并因子,默认是10.可以适当调大此参数,也可以减少I/O |
mapred-site.xml | mapred.compress.map.output | false | 对Map任务最后生成的结果文件是否开启压缩.默认是不开启的.开启压缩的好处在于可以减少网络数据的传输,节省带宽. 开启压缩,会导致占用更多的CPU资源. |
mapred-site.xml | mapred.map.tasks.speculative.execution | true | Map任务的推测执行机制.此机制默认就是开启. MR框架会检测 运行明显慢于其他map任务的任务,然后对于慢任务,会在其他服务器上启动备份任务. 最后哪个运行快,就用哪个,然后将慢任务kill 掉. 此机制的目的是为了弥补job运行的短板机制. 注:如果当集群的计算资源比较紧张时,可以将此机制关掉. |
mapred-site.xml | mapred.reduce.tasks.speculative.execution | true | Reduce任务的推测执行机制 |
MR调优策略
Map Task和Reduce Task调优的一个原则就是
1.减少数据的传输量
2.尽量使用内存
3.减少磁盘IO的次数
4.增大任务并行数
5.除此之外还有根据自己集群及网络的实际情况来调优。