• 部署Hadoop集群之前的一些系统配置


    修改内核参数

    在/etc/sysctl.conf文件中添加如下配置(需要root权限)
    以下参数的默认值是在centos7下查看的
    fs.file-max = 6815744 //文件描述符总数,默认值:94121
    fs.aio-max-nr = 1048576 //最大并发io请求数,默认值:1048576
    net.core.rmem_default = 262144 //操作系统接收缓冲区的默认大小,默认值:212992
    net.core.wmem_default = 262144 //操作系统发送缓冲区的默认大小,默认值:212992
    net.core.rmem_max = 16777216 //操作系统接收缓冲区的最大值,默认:212992
    net.core.wmem_max = 16777216   //操作系统发送缓冲区的最大值,默认:212992 
    net.ipv4.tcp_rmem = 4096 262144 16777216 //接收窗口尺寸的最小、默认、最大值,默认值:4096 87380 6291456
    net.ipv4.tcp_wmem = 4096 16384 4194304   //接收窗口尺寸的最小、默认、最大值,默认值:4096 87380 6291456
    保存文件,在命令行执行sysctl -p动态加载配置,也可以使用sysctl -a查看内核配置。

    文件系统限制

    为了避免集群中的任何文件描述符错误,需要增加单个用户或者进程一次打开文件数量的限制

    查看当前操作系统最大打开文件数和最大用户进程数

    [root@test ~]# ulimit -Sn   //最大文件数软限制
    1024
    [root@test ~]# ulimit -Hn   //最大文件数硬限制

    4096

    [root@test ~]# ulimit -Su  //用户打开最大进程数,软硬限制一样。
    3757
    [root@test ~]# ulimit -Hu
    3757

    对于Hadoop集群来说肯定是不够的。当然也可以直接使用ulimit -a查看所有的配置。

    在/etc/security/limits.conf文件添加如下的配置。

    * - nofile 65535
    * - nproc unlimited

    其中的*代表所有用户,如果想要只添加对单个用户的修改,可以直接写用户名,其中 -(横线) 代表软硬限制都使用一样的配置。

    如果想要配置生效,需要重新开启另外一个会话,查看修改后的值:

    [root@test ~]# ulimit -Sn
    65535
    [root@test ~]# ulimit -Hn
    65535
    [root@test ~]# ulimit -Su
    unlimited
    [root@test ~]# ulimit -Hu
    unlimited
    [root@test ~]#

    磁盘设置

    确保在挂载磁盘的时候使用noatime时间以及挂载所有目录时使用nodir时间,这样可以避免在对Linux文件系统中的文件和目录进行读取操作时进行不必要的写入操作,从而提高集群性能,。

    eg:

    修改:

    重新挂载磁盘

    # mount -o remount /dev/mapper/centos-root
    # mount -o remount /dev/mapper/centos-home

    测试磁盘的IO速度

    使用hdparm -t命令测试磁盘的速度,hdparm需要安装

    [root@test ~]# hdparm -t /dev/mapper/cl-data 
    
    /dev/mapper/cl-data:
     Timing buffered disk reads: 160 MB in  3.05 seconds =  52.50 MB/sec     //速度最好是达到70MB/s 以上

    启用NTP服务

    确保集群的时间同步是开启的,centos7默认的时间同步是使用chrony,配置文件/etc/chrony.conf。当然也可以重新安装ntp服务。这两个功能是一样的。

    检查DNS

    使用主机名而不是IP来标识节点,理想状态下,集群中的所有节点都必须配置NDS和反向DNS,确保所有主机名配置完全限定域名(FQDN),例如:

    [root@test ~]# hostname --fqdn
    test    //我这里就不是

    如果无法配置DNS,需要把主机名和IP的对于关系加入到/etc/hosts文件

    禁用swap

    swap交换分区,会降低处理速度
    # swapoff -a //关闭交换分区
    # swapon -s   //检查服务器的状态
    # swapon -a //开启交换分区
    默认情况下,大多数操作系统的swappiness值为60,这个值表示当内存还剩余多少时开始使用交换分区,设置为0表示除非内存不足(现在对0的解释是0意味着“在任何情况下都不要发生交换”),不然不适用交换分区,设置为100,表示立即使用。
    这里如果开启了交换分区,那么应该在/etc/sysctl.conf文件添加如下配置
    vm.swappiness = 10
    # sysctl -p

    禁用SElinux

    [root@test ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 
    
    [root@test ~]# setenforce 0

    关闭IPv6

    在/etc/sysctl.conf文件最后配置如下:
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    net.ipv6.conf.lo.disable_ipv6 = 1

    也可以通过环境变量HADOOP_OPTS添加如下参数来禁止Hadoop的的IPv6.

    export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

    防火墙

    如果是自己测试可以关闭防火墙,生产环境就自己配置相应的值了

    SSH

    # ssh-keygen -t rsa -P  '' -f ~/.ssh/id_rsa    //指定生产秘钥的文件

     内存脏页(脏数据)

    请查看

    https://www.cnblogs.com/yinzhengjie/p/9994207.html

  • 相关阅读:
    Sexy Beach PR 汉化补丁+入门教程
    [Unity3D]Script 脚本全部编译器属性具体解释
    图论--最小生成树和最短路1
    软件设计师之路总结~引——时间的温度
    BZOJ1441: Min
    BZOJ1602: [Usaco2008 Oct]牧场行走
    BZOJ1600: [Usaco2008 Oct]建造栅栏
    BZOJ1599: [Usaco2008 Oct]笨重的石子
    BZOJ1601: [Usaco2008 Oct]灌水
    BZOJ1058: [ZJOI2007]报表统计
  • 原文地址:https://www.cnblogs.com/yjt1993/p/11094534.html
Copyright © 2020-2023  润新知