hadoop集群调优及MR调优

来源:互联网 发布:echo动作数据mmd 编辑:程序博客网 时间:2024/06/05 16:51

一、操作系统调优

1、提高网络连接上限。以增加网络带宽的利用率,即修改内核net.core.somaxcon参数

2、关闭swap交换分区。以免内存不足时,数据会溢写到磁盘,读取时再从磁盘读取,增加数据读取时间

3、调整预读缓存区的大小。将数据预读,减少磁盘IO时间

二、HDFS调优

1、配置文件一:core-site.xml

1>hadoop.tmp.dir:手动指定临时目录,针对多磁盘的集群环境特别有效,能够让每个块利用本磁盘的临时目录

2>fs.trash-interval:设置垃圾回收站清空的时间间隔,对用户误删文件特别有用

3>io.file.buffer.size:SequenceFiles读写的缓冲大小,可减少IO次数。大型的分布式系统中可以设置为65536-65535*2

2、配置文件二:hdfs-site.xml

1>dfs.blocksize:合理的改变HDFS上的数据块的大小,根据自己的业务系统,能够提高效率,对map的个数很有效

2>dfs.namenode.handler.count:设置namenode上namenode server threads的数量,来与其它DN进行RPC通信。过多过少都不好

三、MR参数调优

配置点

1、心跳配置

2、磁盘块配置

3、槽位数目配置

4、设置RPC和线程数目

5、开启批量任务调度

具体的参数(列举)

1>mapreduce.io.sort.mb 每个Map task所占缓冲区大小

2>mapreduce.map.output.compress map的输出结果是否 压缩,有利有弊,权衡选取

3>mapreduce.job.reduces 启动的reduce的个数,可有效避免数据倾斜,防止大量数据集结于一个reduce,也可以在MR程序中进行设置

四、应用系统调优

1、避免排序:不需要排序的应用,如某些应用只是简单的联接,就不需要排序了

2、shuffle阶段内部优化

1>使用Netty代替Jetty,更快的IO框架来读取数据

2>reduce端,批量赋值

五、总结

1、常用combiner来减少输入到reduce的数据,防止数据倾斜

2、在数据通过远程到达reduce端进行处理的时候,可以合理的设置归并排序的次数,过多过少都不好,过多可能会写入磁盘,过少可能会增加归并排序数量

3、设置reduce的个数,来均衡原来输入到一个reduce上的数据,防止数据倾斜








0 0
原创粉丝点击