3节点虚拟机搭建
本案例使用VMware Workstation Pro虚拟机创建虚拟服务器来搭建HADOOP集群,所用软件及版本如下:
Centos7 64bit
注意事项
1.注意:windows系统确认所有的关于VmWare的服务都已经启动
- 确认好VmWare生成的网关地址
3.确认VmNet8网卡已经配置好了IP地址和DNS
复制虚拟机
将虚拟机文件夹复制三份,并分别重命名, 并使用VM打开重命名
或者通过界面操作,克隆node1(完整克隆)
1.分别设置三台虚拟机的内存
需要三台虚拟机, 并且需要同时运行, 所以总体上的占用为: 每台虚拟机X3
在分配的时候, 需要在总内存大小的基础上, 减去2G-4G作为系统内存, 剩余的除以3, 作为每台虚拟机的内存
每台机器的内存=(总内存-4)/3
虚拟机修改Mac和IP
1.集群规划
IP | 主机名 | 环境配置 | 安装 |
---|---|---|---|
192.168.213.150 | node01 | 关防火墙和selinux, host映射, 时钟同步 | JDK, DataNode, NodeManager, Zeekeeper |
192.168.213.160 | node02 | 关防火墙和selinux, host映射, 时钟同步 | JDK, DataNode, NodeManager, Zeekeeper |
192.168.213.170 | node03 | 关防火墙和selinux, host映射, 时钟同步 | JDK, DataNode, NodeManager, Zeekeeper |
2.设置ip和Mac地址
每台虚拟机更改mac地址:
vim /etc/udev/rules.d/70-persistent-net.rules
将mac删掉,编辑->设置->虚拟机设置->网络适配器->Mac地址生成,可以拿到可用的mac地址,填到上面的address
每台虚拟机更改IP地址:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
或
vim /etc/sysconfig/network-scripts/ifcfg-ens33
HWADDR填上面生成的mac地址,要和节点的一致。
每台虚拟机修改对应主机名
vi /etc/sysconfig/network
HOSTNAME=node01
# 如果不生效
vim /etc/hostname
node1 # 3个都修改 node2 node3
每台虚拟机 设置ip和域名映射
vim /etc/hosts
3.Linux系统重启
关机重启linux系统即可进行联网了
第二台第三台机器重复上述步骤,并设置IP网址为192.168.174.110,192.168.174.120
虚拟机关闭防火墙和SELinux
1.关闭防火墙
三台机器执行以下命令(root用户来执行)
service iptables stop #关闭防火墙
chkconfig iptables off #禁止开机启动
2.三台机器关闭selinux
什么是SELinux
- SELinux是Linux的一种安全子系统
- Linux中的权限管理是针对于文件的, 而不是针对进程的, 也就是说, 如果root启动了某个进程, 则这个进程可以操作任何一个文件
- SELinux在Linux的文件权限之外, 增加了对进程的限制, 进程只能在进程允许的范围内操作资源
为什么要关闭SELinux
- 如果开启了SELinux, 需要做非常复杂的配置, 才能正常使用系统, 在学习阶段, 在非生产环境, 一般不使用SELinux
SELinux的工作模式
- enforcing 强制模式
- permissive 宽容模式
- disable 关闭
# 修改selinux的配置文件
vi /etc/selinux/config
虚拟机免密码登录
1.为什么要免密登录
Hadoop 节点众多, 所以一般在主节点启动从节点, 这个时候就需要程序自动在主节点登录到从节点中, 如果不能免密就每次都要输入密码, 非常麻烦
2.免密 SSH 登录的原理
-
需要先在 B节点 配置 A节点 的公钥
-
A节点 请求 B节点 要求登录
-
B节点 使用 A节点 的公钥, 加密一段随机文本
-
A节点 使用私钥解密, 并发回给 B节点
-
B节点 验证文本是否正确
第一步:三台机器生成公钥与私钥
在三台机器执行以下命令,生成公钥与私钥
ssh-keygen -t rsa
执行该命令之后,按下三个回车即可
第二步:拷贝公钥到同一台机器
三台机器将拷贝公钥到第一台机器
三台机器执行命令:
ssh-copy-id node01
第三步:复制第一台机器的认证到其他机器
将第一台机器的公钥拷贝到其他机器上
在第一天机器上面指向以下命令
scp /root/.ssh/authorized_keys node02:/root/.ssh
scp /root/.ssh/authorized_keys node03:/root/.ssh
后续直接ssh node2/node3,不用个输入密码了, 退出 exit.
三台机器时钟同步
为什么需要时间同步
因为很多分布式系统是有状态的, 比如说存储一个数据, A节点 记录的时间是 1, B节点 记录的时间是 2, 就会出问题
方式 1:
所有主机和同一台主机的时间保持同步(内网)
第一步:在node1虚拟机安装ntp并启动
# 1.安装ntp服务
yum -y install ntp
# 2.启动ntp服务
systemctl start ntpd
# 3.设置ntpd的服务开机启动
#关闭chrony,Chrony是NTP的另一种实现
systemctl disable chrony
#设置ntp服务为开机启动
systemctl enable ntpd
第二步:编辑node1的/etc/ntp.conf文件
1.编辑node1机器的/etc/ntp.conf
vim /etc/ntp.conf
2.在文件中添加如下内容(授权192.168.88.0-192.168.88.255网段上的所有机器可以从这台机器上查询和同步时间)
restrict 192.168.88.0 mask 255.255.255.0 nomodify notrap
注释一下四行内容:(集群在局域网中,不使用其他互联网上的时间)
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
#server 3.centos.pool.ntp.org
去掉以下内容的注释,如果没有这两行注释,那就自己添加上(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
配置以下内容,保证BIOS与系统时间同步
vim /etc/sysconfig/ntpd
添加一行内容
SYNC_HWLOCK=yes
第三步:另外两台机器与第一台机器时间同步
另外两台机器与192.168.88.161进行时钟同步,在node2和node3机器上分别进行以下操作
crontab -e
添加以下内容:(每隔一分钟与node1进行时钟同步)
*/1 * * * * /usr/sbin/ntpdate 192.168.88.161
方式2:
通过网络,所有主机和时钟同步服务器保持同步(外网)
## 安装
yum install -y ntp
## 启动定时任务
crontab -e
随后在输入界面键入
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;
标签:机器,etc,ntp,虚拟机,192.168,002,超强,节点
From: https://www.cnblogs.com/zuoer96/p/17038982.html