Haoop一些调优属性说明

1.缓冲区大小

     hadoop使用了一个4KB(4096字节)的缓冲区辅助I/O操作。对于目前硬件来说,这个容量有点偏小,我们可以通过改变core-site.xml文件中io.file.buffer.size属性来设置缓冲区的大小,比如:128KB等。通过增大缓冲区容量能够显著提高性能。

2.HDFS块大小

    在默认情况下,HDFS块大小是128MB,但我们可以通过把块设的更大以降低namenode的内存压力,并向mapper传输更多的数据。可以通过hdfs-site.xml文件中的dfs.blocksize属性来设置块的大小(以字节为单位)

3.配置回收站

Hadoop文件系统也有回收站设施,被删除的文件并未真正的删除,仅只转移到回收站(一个特定的文件夹)中。回收站中的文件被永久删除前仍会至少保留一段时间。该信息由core-site.xml文件中的dfs.trash.interval属性(以分钟为单位)设置。默认情况下,该属性的值为0,表示 回收站特性无效。此特性需要注意的是:Hadoop的回收站设施是用户级特性,只有由文件系统shell直接删除的文件才会被放到回收站中,用程序删除的文件会被直接删除。当回收站的的特性启用时,每个用户都有独立的回收站目录,即:home下的.Trash目录。(还需要补充的是hdfs会自动删除回收站中的文件,但是其他文件系统不具备这种功能。对于这些文件系统来说,必须定期手动删除。可以通过以下命令: hadoop fs -expunge执行)

4.作业调度

在针对多用户的队列中,可以考虑升级作业调度器队列配置,以反映在组织方面的需求。比如,可以为使用集群的每个组设置一个队列。

5.慢启动reduce

在默认情况下,调度器会一直等待,直到该作业的5%的map任务已经结束才会调度reduce任务。对于大型作业来说,这可能会降低集群的利用率,因为在等待map任务执行完毕的 过程中,占用了reduce容器。可以将MapReduce.job.reduce.slowstart.completedmaps的值设得更大,例如0.8,能够提升吞吐率。

6.短回路本地读

当从HDFS读取文件时,客户端联系namenode,然后数据通过TCP连接发送给客户端。如果正在读取的数据块和客户端在同一个节点上,那么客户端绕过网络从磁盘上直接读取数据效率会更高。这称为“短回路本地读”,这种方式能够让应用程序如Hbase执行效率更高。可以通过将属性dfs.client.read.shortcircurt设置为true,就可启用短回路本地读。这种读操作基于Unix域的套接字实现,在客户端和DataNode的通信中使用了一个本地路径,该路径使用属性dfs.domain.socket.path进行设置,且必须是一条仅有datanode用户或者root用户能够创建的路径。

猜你喜欢

转载自blog.csdn.net/sujins5288/article/details/87982495