1、搭建过程总览
通过克隆方式准备3台虚拟机(NAT网络模式、静态ip、主机名称、关闭防火墙)
1) 通过克隆方式准备3台虚拟机(NAT网络模式、静态ip、主机名称、关闭防火墙)
a) 设置静态ip
vim /etc/udev/rules.d/70-persistent-net.rules(拷贝物理地址)
vim /etc/sysconfig/network-scripts/ifcfg-eth0(配置静态ip等)
b) 配置主机名及主机名与ip的映射
vim /etc/sysconfig/network(修改主机名)
vim /etc/hosts(配置主机名与ip的映射关系)
c) 重启配置生效
reboot
2) 虚拟机环境配置
a) 关闭防火墙
b) 关闭selinux
c) 三台机器免密登录
d) 三台机器时钟同步
3) 安装jdk(rpm)
a) 配置jdk环境变量
4)配置hadoop集群
5)启动测试集群
2、集群规划
IP | 主机名 | 环境配置 | 安装 |
192.168.110.101 | hadoop101 | 1.关闭防火墙 2.关闭selinux 3.三台机器免密登录 4.三台机器时钟同步 | 1.阿里云的时钟同步服务器 2.lrzsz软件(用于命令行上传) 3.jdk |
192.168.110.102 | hadoop102 | 1.关闭防火墙 2.关闭selinux 3.三台机器免密登录 4.三台机器时钟同步 | 1.阿里云的时钟同步服务器 2.lrzsz软件(用于命令行上传) 3.jdk |
192.168.110.103 | hadoop103 | 1.关闭防火墙 2.关闭selinux 3.三台机器免密登录 4.三台机器时钟同步 | 1.阿里云的时钟同步服务器 2.lrzsz软件(用于命令行上传) 3.jdk |
3、电脑虚拟网卡VMnet8设置
通过控制面板——网络和Internet——查看网络状态与任务
并选择“更改适配器设置”
选择VMware Network Adapter VMnet8,通过右键菜单选择属性
双击打开Internet协议版本4(TCP/IPv4)
依次设置IP地址、子网掩码、默认网关、首选DNS服务器如下。
4、克隆机器
考虑到同时运行3台虚拟机,如果带图形化界面,将极大消耗内存。这里就使用了不带图形化界面的版本。
从头开始,解压centos6.9-clean-machine.zip到当前文件夹。然后进入centos6.9-clean-machine目录修改里面的CentOS 6 64位.vmx文件(用notepad++打开编辑),修改VMware版本位15(与VMWare对应)。
virtualHW.version = "15" |
保存后,在VMWare中打开CentOS 6 64位.vmx
以此为模板,克隆3份
同样的方式克隆三次,注意:第一、二、三台虚拟名称为:hadoop101、hadoop102、hadoop103,克隆路径也不一样
在VMware虚拟机软件上新建一个文件hadoop_03,将三台虚拟机装在一起。
虚拟机在电脑上的文件存储如下:
5、设置三台虚拟机的硬盘至少为30G,内存至少为2G
如果原来的硬盘已经大于30G,则无法扩展。
6、虚拟机网络模式设置为NAT
7、设置静态IP
在终端命令窗口中输入
vim /etc/udev/rules.d/70-persistent-net.rules |
进入如下页面,删除eth0该行;将eth1修改为eth0,同时复制物理ip地址
记录下hadoop101的物理IP地址为:00:0c:29:7f:24:b3
然后修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-eth0 |
修改前的内容如下:
修改如下:
HWADDR=00:0c:29:7f:24:b3 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.110.101 NETMASK=255.255.255.0 GATEWAY=192.168.110.2 DNS1=8.8.8.8 |
修改后的内容如下:
8、修改主机名
进入Linux系统查看本机的主机名。通过hostname命令查看
hostname |
如果感觉此主机名不合适,我们可以进行修改。通过编辑/etc/sysconfig/network文件
vim /etc/sysconfig/network |
修改HOSTNAME即可。注意,主机名不能有“_”下划线:
打开此文件后,可以看到主机名。修改此主机名为我们想要修改的主机名hadoop101
保存退出。
9、设置ip和域名的映射
打开/etc/hosts
vim /etc/hosts |
添加如下内容:
192.168.110.101 hadoop101.hadoop.com hadoop101 192.168.110.102 hadoop102.hadoop.com hadoop102 192.168.110.103 hadoop103.hadoop.com hadoop103 |
修改后如下:
10、重启虚拟机让设置生效
输入reboot命令重启
reboot |
虚拟机设置成功标志:能够ping通网络。
11、第二台和第三台虚拟机重复以上设置
重复3.2.6~3.2.10的步骤。设置第二台第三台虚拟机。
注意:根据集群规划配置静态ip和主机名,每台虚拟机的物理地址不能一样。
hadoop102的MAC地址为:“00:0c:29:5b:9d:77”
hadoop103的MAC地址为:“00:0c:29:04:52:3d”
12、三台机器拍摄快照
快照的作用类似于一个系统还原点,一个虚拟系统里可以存在多个快照。利用快照可进行系统和数据还原。
当搭建好一个环境后,在没有添加任何数据时,或改变系统环境时,可以启用快照功能,虚拟机会保存虚拟系统里当前的环境,包括所安装的软件等设置;
当环境改变或需要重新搭建并系统初始化时,为免安装其他大型软件,可以启用快照的保存点进行恢复。作用就达到了快捷搭建环境的作用,也可以说是一种备份。
三台虚拟机准备好之后,我们为每台虚拟机拍摄快照,以第一台为例:
13、三台虚拟机关闭防火墙
使用SecureCRT快速连接三台虚拟机并显示交互窗口
三台机器执行如下命令:(使用root用户来执行)
service iptables stop # 关闭防火墙 chkconfig iptables off # 禁止开机启动 service iptables status # 查看防火墙状态 |
可以在SecureCRT用到交互窗口(将命令发送给三台机器)
勾选“send commands to All Sessions”,输入命令,然后按回车,即可把命令发送给所有窗口。
14、三台虚拟机关闭selinux
什么是SELinux?
1) SELinux是Linux的一种安全子系统。
2) Linux中的权限管理是针对于文件的, 而不是针对进程的, 也就是说, 如果root启动了某个进程, 则这个进程可以操作任何一个文件。
3) SELinux在Linux的文件权限之外, 增加了对进程的限制, 进程只能在进程允许的范围内操作资源。
为什么要关闭SELinux?
如果开启了SELinux, 需要做非常复杂的配置, 才能正常使用系统, 在学习阶段, 在非生产环境, 一般不使用SELinux。
SELinux的工作模式:
- enforcing 强制模式
- permissive 宽容模式
- disabled 关闭模式
三台虚拟机都修改selinux的配置文件,把SELinux设置为关闭模式,为免密登录做准备:
修改配置文件:vim /etc/selinux/config
让配置文件生效:source /etc/selinux/config
三台虚拟机拍摄快照
15、三台虚拟机设置免密登陆
为什么要免密登录?
Hadoop 节点众多, 所以一般在主节点启动从节点, 这个时候就需要程序自动在主节点登录到从节点中, 如果不能免密就每次都要输入密码, 非常麻烦。
免密登录的原理:
1) 需要先在 B节点 配置 A节点 的公钥
2) A节点 请求 B节点 要求登录
3) B节点 使用 A节点 的公钥, 加密一段随机文本
4) A节点 使用私钥解密, 并发回给 B节点
5) B节点 验证文本是否正确
设置免密登录:
1.在三台机器执行以下命令,生成公钥与私钥:
ssh-keygen -t rsa |
执行该命令之后,按下三个回车即可
2.拷贝公钥到同一台机器
三台机器将拷贝公钥到第一台机器
三台机器执行命令:
ssh-copy-id hadoop101 |
然后输入:yes
再输入hadoop101的root用户登录密码:123456
3.复制第一台机器的认证到其他机器
将第一台机器的公钥拷贝到其他机器上
只在第一台机器上面执行以下命令(注意只有第一台机器上有 /root/.ssh/authorized_keys文件,其他机器都没有。)
scp /root/.ssh/authorized_keys hadoop102:/root/.ssh scp /root/.ssh/authorized_keys hadoop103:/root/.ssh |
执行命令后,第二台第三台机器上就都有 /root/.ssh/authorized_keys 文件了。
验证相互登陆
ssh hadoop101 ssh hadoop102 ssh hadoop103 |
16、三台虚拟机设置时钟同步
为什么需要时间同步?
因为很多分布式系统是有状态的, 比如说存储一个数据, A节点 记录的时间是 1, B节点 记录的时间是 2, 就会出问题。
解决方案:
选用第一种方案:
1.给每台机器安装阿里云的时钟同步服务器。
2.设置定时任务每一分钟与阿里云云端的时钟同步服务器同步一次。
步骤:
1. 给三台虚拟机安装阿里云的时钟同步服务器,命令如下:
yum install -y ntp |
注意:yum显示失败时,可以输入如下5步:
sed -i "s|enabled=1|enabled=0|g" /etc/yum/pluginconf.d/fastestmirror.conf |
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup |
curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo |
yum clean all |
yum makecache |
2. 设置定时任务,命令如下:
crontab -e |
进入编辑模式:i
随后在输入界面写入:
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com; |
保存退出:输入:wq
3. 验证是否成功,命令如下:
crontab –l # 小写的L |
4. 三台虚拟机拍摄快照