扩容节点基础环境配置
配置hosts
更新所有主机的/etc/hosts文件,将要扩容的主机ip加进去
配置hostname
配置扩容主机的hostname
hostnamectl set-hostname 主机名
关闭防火墙
关闭扩容主机的防火墙,并禁止开机自启
systemctl stop firewalld systemctl disable firewalld
关闭selinux
修改selinux文件,关闭selinux
vim /etc/selinux/config
运行命令临时关闭
setenforce 0
配置免密
配置CM节点到扩容节点的免密,进入CM节点
ssh-copy-id 扩容节点ip
配置yum仓库
将扩容主机现有的yum配置文件全部删除或者备份
rm -f /etc/yum.repos.d/*
进入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服务
在扩容主机中安装ntp服务
yum install -y ntp
修改ntp配置文件,随便找一个时间同步正常的数据节点,将该数据节点的ntp配置文件拷贝至扩容节点
scp /etc/ntp.conf root@扩容节点ip:/etc
在扩容节点中启动ntp服务,并设置开机自启
systemctl start ntpd systemctl enable ntpd
检查扩容节点ntp是否时间同步成功,运行下面命令 前面显示一个*即为成功
ntpdc -np
安装JDK
卸载系统自带的openjdk
rpm -qa|grep openjdk |xargs -I {} rpm -e --nodeps {}
安装oracleJDK ,需要注意的是JDK版本和其他节点的版本保持一致
rpm -ivh jdk-8u181-linux-x64.rpm
验证是否安装成功
rpm -qa | grep jdk
操作系统性能优化
删除虚拟网卡
如果使用的是虚拟机安装的,那么虚拟机可能会有虚拟网卡,需要将虚拟网卡删除
安装所需的软件依赖
yum install -y qumu-kvm* libvirt* virt-install* bridge-utils
删除虚拟网卡
virsh net-destroy default
取消定义虚拟网卡
virsh net-undefine default
禁止透明大页
临时禁用透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag
永久禁用透明大页
vim /etc/rc.local echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag
减少使用交换内存
减少交换内存使用
sysctl -w vm.swappiness=1 echo 'vm.swappiness=1' >> /etc/sysctl.conf sysctl -p
集群扩容
创建主机模板
我们扩容一个节点肯定是要安装各种组件,比如数据节点就要安装datanode/nodemanger..等等,如果要扩容很多个节点肯定不是一个一个去装这些组件,主机模板顾名思义就是有同一类特征的节点,比如数据节点,比如管理节点,我们在扩容数据节点后就去应用主机模板,主机模板中会定义好这类节点需要装哪些组件。
点击 集群 -> 主机模板
- 点击创建
- 填写主机模板名称,选择该主机模板中需要添加哪些组件角色,添加完成后就点击创建即可
- 至此主机模板创建完成
扩容新节点
- 进入CM管理页面,点击主机 -> 所有主机
- 点击add host
- 选择add host to cluster
- 在主机名称中添加需要扩容的主机,点击搜索 搜索成功后点击继续
- 选择自定义库,填写本地CM的地址,点击继续
- 取消安装JDK
- 填写主机的root密码,点击下一步
- 等待agent安装完成
- 等待parcel分发解压完成
- 选择我们前面创建的datanode主机模板
- 点击继续,启动角色
指定balance操作
- Balance是为了平衡数据,如果不执行该操作,集群将会把新的数据都存放在新的datanode上,这样会造成数据分布不平衡,影响MR的工作效率。
- 进入HDFS服务,选择重新平衡
- 等待运行完成
需要注意的是,平衡操作尽量在非高峰时期做,因为可能会有大量的IO操作
balance有两个参数需要注意
- 重新平衡阈值:值越低各节点越平衡,但消耗时间也更长,默认为10%
- dfs.datanode.balance.max.concurrent.moves:允许同时并发复制的块数