扩容节点基础环境配置

配置hosts

  1. 更新所有主机的/etc/hosts文件,将要扩容的主机ip加进去

    配置hostname

  2. 配置扩容主机的hostname

    1. hostnamectl set-hostname 主机名

    关闭防火墙

  3. 关闭扩容主机的防火墙,并禁止开机自启

    systemctl stop firewalld
    systemctl disable firewalld
    

    关闭selinux

  4. 修改selinux文件,关闭selinux

    vim /etc/selinux/config
    

    数据节点扩容 - 图1

  5. 运行命令临时关闭

    setenforce 0
    

    配置免密

  6. 配置CM节点到扩容节点的免密,进入CM节点

    ssh-copy-id 扩容节点ip
    

    配置yum仓库

  7. 将扩容主机现有的yum配置文件全部删除或者备份

    rm -f /etc/yum.repos.d/*
    
  8. 进入CM节点,将cm.repo源于本地系统源的repo文件拷贝至扩容节点

    scp /etc/yum.repos.d/cm.repo root@扩容主机ip:/etc/yum.repos.d/
    scp /etc/yum.repos.d/iso.repo root@扩容主机ip:/etc/yum.repos.d/
    

    配置NTP服务

  9. 在扩容主机中安装ntp服务

    yum install -y ntp
    
  10. 修改ntp配置文件,随便找一个时间同步正常的数据节点,将该数据节点的ntp配置文件拷贝至扩容节点

    scp /etc/ntp.conf root@扩容节点ip:/etc
    
  11. 在扩容节点中启动ntp服务,并设置开机自启

    systemctl start ntpd
    systemctl enable ntpd
    
  12. 检查扩容节点ntp是否时间同步成功,运行下面命令 前面显示一个*即为成功

    ntpdc -np
    

    数据节点扩容 - 图2

    安装JDK

  13. 卸载系统自带的openjdk

    rpm -qa|grep openjdk |xargs -I {} rpm -e --nodeps {}
    
  14. 安装oracleJDK ,需要注意的是JDK版本和其他节点的版本保持一致

    rpm -ivh jdk-8u181-linux-x64.rpm
    
  15. 验证是否安装成功

    rpm -qa | grep jdk
    

    数据节点扩容 - 图3

操作系统性能优化

删除虚拟网卡

  1. 如果使用的是虚拟机安装的,那么虚拟机可能会有虚拟网卡,需要将虚拟网卡删除

  2. 安装所需的软件依赖

    yum install -y qumu-kvm* libvirt* virt-install* bridge-utils
    
  3. 删除虚拟网卡

    virsh net-destroy default
    
  4. 取消定义虚拟网卡

    virsh net-undefine default
    

    禁止透明大页

  5. 临时禁用透明大页

    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    
  6. 永久禁用透明大页

    vim /etc/rc.local
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    

    数据节点扩容 - 图4

减少使用交换内存

  1. 减少交换内存使用

    sysctl -w vm.swappiness=1
    echo 'vm.swappiness=1' >> /etc/sysctl.conf
    sysctl -p
    

    集群扩容

    创建主机模板

  2. 我们扩容一个节点肯定是要安装各种组件,比如数据节点就要安装datanode/nodemanger..等等,如果要扩容很多个节点肯定不是一个一个去装这些组件,主机模板顾名思义就是有同一类特征的节点,比如数据节点,比如管理节点,我们在扩容数据节点后就去应用主机模板,主机模板中会定义好这类节点需要装哪些组件。

  3. 点击 集群 -> 主机模板

image.png

  1. 点击创建

image.png

  1. 填写主机模板名称,选择该主机模板中需要添加哪些组件角色,添加完成后就点击创建即可

image.png

  1. 至此主机模板创建完成

image.png

扩容新节点

  1. 进入CM管理页面,点击主机 -> 所有主机

image.png

  1. 点击add host

image.png

  1. 选择add host to cluster

image.png

  1. 在主机名称中添加需要扩容的主机,点击搜索 搜索成功后点击继续

image.png

  1. 选择自定义库,填写本地CM的地址,点击继续

image.png

  1. 取消安装JDK

image.png

  1. 填写主机的root密码,点击下一步

image.png

  1. 等待agent安装完成

image.png

  1. 等待parcel分发解压完成

image.png

  1. 选择我们前面创建的datanode主机模板

image.png

  1. 点击继续,启动角色

image.png

指定balance操作

  1. Balance是为了平衡数据,如果不执行该操作,集群将会把新的数据都存放在新的datanode上,这样会造成数据分布不平衡,影响MR的工作效率。


  1. 进入HDFS服务,选择重新平衡

image.png

  1. 等待运行完成

image.png

  1. 需要注意的是,平衡操作尽量在非高峰时期做,因为可能会有大量的IO操作

  2. balance有两个参数需要注意

    1. 重新平衡阈值:值越低各节点越平衡,但消耗时间也更长,默认为10%
    2. dfs.datanode.balance.max.concurrent.moves:允许同时并发复制的块数