用VM搭建五台虚拟机,部署Hadoop集群【一】虛擬機部署和配置ssh密鑰
部署规划:
五台服务器:
一个主节点:nn1.hadoop , master
一个从节点:nn2.hadoop , slave
三个工作节点 s1.hadoop s2.hadoop s3.hadoop
1) 安装VMware , 参考链接:
2) 安装虚拟机
1> 先去官网下载 CentOS-7-x83_Minimal-1810.iso文件
2>打开VMware,点击新建虚拟机
点击下一步,找到你的 .ios 映像文件,点击下一步
虚拟机名称 写 master ,选择你要安装的位置,最少要有66G的固态硬盘以上,不建议装在C盘,点击下一步
这一步点击完成后就成功了
3>点击启动虚拟机
这一步它会问你要不要磁盘,我们已经安装了,点击"我已完成安装",然后等它开启
下面这一步英文好的可以选择默认的,英文不好左边下拉 选中文 简体中文 然后点击继续
下拉到最后,点击左右箭头,设置网络和主机名
点击右上角按钮打开,然后截图,点击左上角Done按钮保存退出
点击日期时间
然后点击左上角的设置按钮
在搜索框输入 time1.aliyun.com 点击+ 然后OK,然后点左上角完成 退出
点击安装位置 ,不用修改直接点击完成 退出来
然后点右下角 开始安装
点击root Password 进去 修改root密码
输入密码, 左上角Done 一定要记住root密码!要不然很难找回来
剩下就是等待它安装
点击重启
到此,安装完成
3) 配置虚拟机
1.打开SecureCRT或Xshell,建立谅解,设置会话模式
填写root密码:
点击选项–>会话选项
设置完成后,开始配制
2. 修改主机名
[root@localhost ~]# hostnamectl set-hostname nn1.hadoop
[root@localhost ~]# hostname
nn1.hadoop
3. 静态IP
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens33 ifdown-isdn ifdown-tunnel ifup-isdn ifup-Team
ifcfg-lo ifdown-post ifup ifup-plip ifup-TeamPort
ifdown ifdown-ppp ifup-aliases ifup-plusb ifup-tunnel
ifdown-bnep ifdown-routes ifup-bnep ifup-post ifup-wireless
ifdown-eth ifdown-sit ifup-eth ifup-ppp init.ipv6-global
ifdown-ippp ifdown-Team ifup-ippp ifup-routes network-functions
ifdown-ipv6 ifdown-TeamPort ifup-ipv6 ifup-sit network-functions-ipv6
[root@localhost network-scripts]# vi ifcfg-ens33
UUID每台虚拟机都不一样,使用要复制出来
然后都删掉,粘贴下面的代码进去 ,IPADDR=“192.168.92.130” ip改成自己的 , UUID="f33f583a-e92e-4450-b379-5ed7fd5ba2d3"改成自己之前备份的
TYPE="Ethernet"
BOOTPROTO=static
IPADDR="192.168.92.136"
NETMASK="255.255.255.0"
GATEWAY="192.168.92.2"
DNS="192.168.92.2"
NM_CONTROLLED="no"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="ens33"
UUID="91006bae-b6f0-4eaf-9b11-37890fa4221b"
DEVICE="ens33"
ONBOOT="yes"
上面的DNS和GATEWAY参考之前的截图的DNS
:wq 退出保存
修改之后 要停止 networkManager 服务 这样才能上网
[root@localhost network-scripts]# systemctl stop NetworkManager.service
移出自动启动
[root@localhost network-scripts]# systemctl disable NetworkManager.service
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
[root@localhost network-scripts]# systemctl status NetworkManager.service
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
Active: inactive (dead) since Tue 2019-05-07 22:12:43 CST; 40s ago
Docs: man:NetworkManager(8)
Main PID: 6666 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/NetworkManager.service
└─6992 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/r...
May 07 21:59:16 nn1.hadoop NetworkManager[6666]: <info> [1557237556.0316] dhcp4...0
May 07 21:59:16 nn1.hadoop NetworkManager[6666]: <info> [1557237556.0316] dhcp4...)
May 07 21:59:16 nn1.hadoop NetworkManager[6666]: <info> [1557237556.0316] dhcp4...2
May 07 21:59:16 nn1.hadoop NetworkManager[6666]: <info> [1557237556.0316] dhcp4...0
May 07 21:59:16 nn1.hadoop NetworkManager[6666]: <info> [1557237556.0316] dhcp4...'
May 07 21:59:16 nn1.hadoop NetworkManager[6666]: <info> [1557237556.0316] dhcp4...'
May 07 21:59:16 nn1.hadoop NetworkManager[6666]: <info> [1557237556.0316] dhcp4...d
May 07 21:59:16 nn1.hadoop dhclient[6992]: bound to 192.168.92.130 -- renewal i...s.
May 07 22:12:43 nn1.hadoop systemd[1]: Stopping Network Manager...
May 07 22:12:43 nn1.hadoop systemd[1]: Stopped Network Manager.
Hint: Some lines were ellipsized, use -l to show in full.
查看 cat /etc/resolv.conf 有没有下面的内容
重启网络服务
[root@localhost network-scripts]# systemctl restart network.service
验证,也可以直接ping一下看看网络能不能通畅 如果IP地址跟自己配的对上了,能ping通说明静态IP配好了.ping的时候按 Ctrl+c 退出
- 关闭防火墙
查看防火墙状态
[root@localhost network-scripts]# firewall-cmd --state
running
关闭防火墙
[root@localhost network-scripts]# systemctl stop firewalld.service
[root@localhost network-scripts]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
reboot重启后,查看一下
[root@nn1 ~]# firewall-cmd --state
not running
[root@nn1 ~]# systemctl is-enabled firewalld.service
disabled
- 关闭selinux
修改成SELINUX=disabled
4)配置Java环境
1.下载上传下载工具 lrzsz
yum -y install lrzsz
2.更改yum源
把上传上来的Centos-7.repo文件改成它原来的名 CentOS-Base_repo_bak
输入
yum clean all
yum makecache
yum -y update
3.上传并安装JDK
查看是否安装成功
存储路径在 /usr/java/
4. 配置环境变量
把下面的代码加到 /etc/profile 文件尾部
先输入命令 vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
输入 source /etc/profile
5. 安装常用软件
yum install -y openssh-server vim gcc gcc-c++ glibc-headers bzip2-devel lzo-devel curl wget openssh-clients zlib-devel autoconf automake cmake libtool openssl-devel fuse-devel snappy-devel telnet unzip zip net-tools.x86_64 firewalld systemd ntpdate
6.配置定时任务
输入 crontab -e 进入文件编辑页面,加入下面代码
0 * * * * /usr/sbin/ntpdate time1.aliyun.com >> /tmp/autontpdate 2>&1
5) 创建Hadoop用户
6) 配置hosts文件
我们要搭建五台服务器,现在这台的IP是130,所有后面一次配成131,132,133,134
vi /etc/hosts
验证,能ping通
7) 给hadoop配置免密登录root用户
修改配置文件 vi /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth required pam_wheel.so use_uid
auth substack system-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session include postlogin
session optional pam_xauth.so
:wq 保存并退出
把hadoop用户加入到Wheel组里
用 cat /etc/group 或 cat /etc/group | grep wheel 命令查看有没有 wheel组 wheel相当于管理员
[root@nn1 ~]# gpasswd -a hadoop wheel
Adding user hadoop to group wheel
[root@nn1 ~]# cat /etc/group | grep wheel
wheel:x:10:hadoop
把“SU_WHEEL_ONLY yes”字符串追加到/etc/login.defs文件底部 意思是只有wheel组能切换
echo "SU_WHEEL_ONLY yes" >> /etc/login.defs
8) 开始克隆
1.可以现在Hadoop创建 .ssh文件 并 赋 700 权限,这个也可以后面再配置
2.root用户下输入hutdown -h now关闭虚拟机
[root@nn1 ~]# shutdown -h now
3.克隆
右键虚拟机–>管理–>克隆…
下一步,下一步,选创建完整克隆
这里就克隆完一台虚拟机了,然后别着急开机,继续吧剩下的都克隆完,还有就是配置静态网卡IP之前,不能同时打开两个虚拟机,否则会冲突
下面就是按照上面的克隆方法克隆剩下的四台虚拟机
略…
虚拟机名分别为 master slave work1 work2 work3
克隆完后,一台一台的开启并配置,我先开启work3,开了其中任意一台虚拟机后,千万不能开启其他虚拟机,因为他们的IP现在都是192.168.92.130,会冲突!
9) 配置克隆的虚拟机
- 修改主机名
hostnamectl set-hostname s3.hadoop
- 配置静态网卡IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
把IP 改成192.168.134,你们的按照自己第一台的IP名往下推算,我的第一台master IP 是192.168.130,这个是第五台,s3.Hadoop
:wq保存后,reboot重启
3.开启work2,继续配置
reboot 重启
4. 开启work1
reboot重启
5. 开启slave
reboot重启
开启master
链接master nn1:hadoop验证
五台机器都能ping通
10) SHH密钥配置
1.连接hadoop 用户
后期就不用root用户登录了,改用hadoop用户登录
2.查看权限
权限要求:
hadoop 700 即 drwx------
.ssh 700 即 drwx------
authorized_keys 600 即 -rw-------
权限赋值 :
chmod [权限值] [目录或文件名]
例: chmod 700 .ssh
进入 .ssh 目录
输入 ssh-keygen -t rsa ,生成密钥和公钥文件
家目录下创建个ssh_key目录,用于存放各个服务器的 公钥authorized_keys 文件
nn1 公钥生成完成
3.
ssh nn2.hadoop 进入nn2
把 文件传送到nn1的ssh_key目录斌重命名为nn2_key ,scp为远程传输命令
scp id_rsa.pub hadoop@nn1.hadoop:~/ssh_key/nn2_key
ssh s1.hadoop 进入s1.hadoop
scp id_rsa.pub hadoop@nn1.hadoop:~/ssh_key/s1_key
- ssh s2.hadoop
- ssh s3.hadoop 进入s3.hadoop
到目前为止,所有的公都以不同的文件名传输到 nn1.hadoop 中 的家目录下的ssh_key目录下(~/ssh_key)
- 这一步归类所有的服务器的公钥追加到 nn1的 .ssh 目录下的 authorized_keys 文件里
cat nn2_key >> ~/.ssh/authorized_keys
现在是吧所有的公钥都添加到 ~/.ssh/authorized_keys 这个文件里了
然后就是把 authorized_keys 这个文件添加到 各个虚拟机的 .ssh/ 目录下就成功了
scp authorized_keys hadoop@nn2.hadoop:~/.ssh/authorized_keys
上面这个命令有时候不太好用,可以自己编写shell程序,然后一起复制到各个虚拟机去
7. 配置完毕