暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Hadoop 操作系统调优

潍鲸 2021-01-14
806

 调整操作系统打开文件描述符的上限 


Hadoop 的任务分析经常需要读写大量文件,因此需要增大打开文件描述符的上限,可通过 ulimit -n 查看目前系统的打开文件描述符的上限值。CentOS 7 系统默认值是 1024,这个值太小了,建议修改为 655360 或者更大。


通过命令“ulimit -a”可以看到所有系统资源参数,这里面需要重点设置的是“open files”和“max user processes”,其他可以酌情设置。


要永久设置资源参数,主要通过下列文件实现:


    /etc/security/limits.conf
    /etc/security/limits.d/90-nproc.conf(centos6.x)
    /etc/security/limits.d/20-nproc.conf(centos7.x)


    将下面内容添加到 etc/security/limits.conf 中,然后退出 shell,重新登录即可生效。


      *        soft    nproc           204800 
      * hard nproc 204800
      * soft nofile 655360
      * hard nofile 655360
      * soft memlock unlimited
      * hard memlock unlimited

      需要注意的是:CentOS 6.x 版本中,有个 90-nproc.conf 文件;CentOS 7.x 版本中,有个 20-nproc.conf 文件,由于里面已经默认配置了最大用户进程数,对这两个的设置也就没必要,所以直接删除这两个文件即可。


       修改 net.core.somaxconn 参数 


      此内核参数对应的具体文件路径为 proc/sys/net/core/somaxconn,它用来设置 socket 监听(listen)的 backlog 上限。


      什么是 backlog 呢?就是 Socket 的监听队列,当一个请求(Request)未被处理或建立时,便会进入 backlog。而 socket server 可以一次性处理 backlog 中的所有请求,处理后的请求不再位于监听队列中。


      如果 server 处理请求较慢,以至于监听队列被填满时,那么新来的请求会被拒绝,所以必须增大这个值,此参数默认值为 128。作为网络参数的基础优化,建议修改为如下值:


        echo 4096 >/proc/sys/net/core/somaxconn


         调整操作系统使用 swap 的比例 


        swap 原本是作为物理内存的扩展,但如今内存一般都很充足,swap 也就很少会应用;再加上数据交换至 swap,导致操作超时,从而影响 Hadoop 的读写以及数据分析性能。所以以上两点,导致如今使用 swap 的场景越来越少。


        通过系统内核参数 proc/sys/vm/swappiness 来调整使用 swap 的比例。swappiness=0 的时候表示最大限度使用物理内存,然后才是 swap 空间;swappiness=100 的时候表示积极地使用 swap 分区,并且把内存上的数据及时地搬运到 swap 空间里。


        Linux 基本默认设置为 60,表示你的物理内存使用到 100-60=40% 的时候,swap 交换分区便开始应用起来。对于内存需求较高的服务器(比如 Hadoop、Redis、HBase 机器),Linux 值需要设置得足够小(0~10 之间),这样才能最大限度使用物理内存。


         禁用 THP(Transparent Huge Pages)功能 


        THP 的本意是为提升内存的性能,但是在 Hadoop 环境中发现,此功能会将 CPU 占用率增大,进而影响 Hadoop 性能,因此建议将其关闭。


        首先检查 THP 的启用状态:


          [root@localhost ~]# cat sys/kernel/mm/transparent_hugepage/defrag 
          [always] madvise never
          [root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
          [always] madvise never


          这里显示 always,表示 THP 目前是启用状态。要禁用 THP,可打开 /etc/rc.d/rc.local 文件,然后添加如下内容:


            if test -f /sys/kernel/mm/transparent_hugepage/enabled; then 
            echo never > /sys/kernel/mm/transparent_hugepage/enabled
            fi
            if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
            echo never > /sys/kernel/mm/transparent_hugepage/defrag
            fi


            最后,赋予 rc.local 文件执行权限,执行如下命令:


              [root@localhost ~]# chmod +x /etc/rc.d/rc.local  
              [root@localhost ~]# source /etc/rc.local

              此时,THP 功能便已经被禁用了。

              文章转载自潍鲸,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论