集群搭建共有三个节点,包括一个主节点master,和两个从节点slave1和slave2
1.1更改本地源
1.修改主机名
在master执行
hostnamectl set-hostname master
立即生效:
bash
同理修改slave1和slave2的主机名
在slave1执行
hostnamectl set-hostname slave1
在slave2执行
hostnamectl set-hostname slave2
2.配置本地源
将本地源文件下载到/etc/yum.repos.d/目录下(三台机器都执行)
1) 发信号给yum进程
pkill -9 yum
2) 进入yum源配置文件
cd /etc/yum.repos.d
3) 删除所有文件
rm -rf *
4) 下载yum源
wget http://172.16.47.240/bigdata/repofile/bigdata.repo
5) 清除YUM缓存
yum clean all
1.2 配置hosts文件
通过 ifconfig 命令进行查看机器的 ip 地址或者直接输入比赛平台提供的 ip 地址。
查看节点地址之后将三个节点的 ip 地址以及其对应的名称写进 hosts 文件。
这里我们设置为master、slave1、slave2。
注意保存退出。(三台机器都执行)
vim/etc/hosts
输入各节点相应IP
192.168.15.104 master
192.168.15.127 slave1
192.168.15.124 slave2
1.3关闭防火墙
1.关闭防火墙
systemctl stop firewalld
2.查看状态
systemctl status firewalld
注意:当环境重置之后,防火墙会自动开启
1.4时间同步
tzselect
给出相应的提示之后,将时间设置写入环境变量。
echo "TZ='Asia/Shanghai'; export TZ" >> /etc/profile && source /etc/profile
1.5下载ntp
yum install -y ntp
1.master作为ntp服务器
修改ntp配置文件
屏蔽掉默认的server,设置master作为局域网内时钟源,设置时间服务器的层级为10,为集群主机提供时间服务。
vim /etc/ntp.conf
#注释掉server 0 ~ n
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server127.127.1.0
fudge127.127.1.0stratum 10
注意:修改后,保存退出
2.重启ntp服务(master上执行)
/bin/systemctl restart ntpd.service
3.其他机器进行同步(在slave1,slave2中执行)
ntpdate master
知识点
【如果没有用任何参数,那么表示不做任何限制】
#开放本机的任何访问
restrict 127.0.0.1
restrict -6 ::1
restrict 10.220.5.0 mask 255.255.255.0 nomodify <<<允许10.220.5.0/24 网段主机进行时间同步
注意:fudge必须和server一块用,而且是在server的下一行
startnum
0~15
0:表示顶级
10:通常用于给局域网主机提供时间服务
1.6 制作定时任务
1.确保 crontab 服务开启
service crond status
/sbin/service crond start
要求:从节点(slave1、slave2)在早八晚五时间段每隔半个小时同步一次时间
crontab -e
2.输入i
3.添加定时任务
*/30 8-17 * * */usr/sbin/ntpdate master
4.查看定时任务列表
crontab –l
1.7配置ssh免密
1.在master上执行如下命令生成公私密钥:(注意master上执行)
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
2.然后将公钥文件内容添加到授权文件
cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys
可以将master授权文件复制到slave1、slave2信任授权设置
scp ~/.ssh/authorized_keysroot@slave1:~/.ssh/
scp ~/.ssh/authorized_keysroot@slave2:~/.ssh/
注意:SSH只需要namenode和datanode之间通信,datanode之间并没有交互,所以SSH公钥只需要namenode和datanode之间交换