在01 里面我们创建了三个,linux主机,现在要进行分布式集群的配置,让三台主机相互关联。

三台关联的时候要实现下面的6个条件
image.png

1 关闭防火墙

这里关闭防火墙centos6和centos7里面的命令是不一样的。
centos7 里面关闭防火墙的命令
systemctl stop firewalld 这个命令是关闭本次的一个防火墙,下次开机防火墙还是开机的状态
接着我们要输入下面的命令,关闭防火墙的服务,让他开机不能自己启动
systemctl disable firewalld
接着我们吧linux里面的安全机制也关闭掉,使用vi 命令对 文件 /etc/selinux/config
将里面的SELINUX= enforcing 改为 SELINUX=disabled 注意这里是disabled

image.png
设置好以后我们查看一下防火墙的状态
命令 systemctl status firewalld
image.png
可以看到里面有一个 active xxx (dead) 说明防火墙已经关闭了。

接着我们吧networkmanager也关闭掉好了
命令:
systemctl stop NetworkManager 关闭NetworkManager
systemctl disable NetworkManager 关闭NerworkManager的开机自启动
image.png

2 配置静态ip

这里配置静态ip地址的时候我们看一下自己电脑的局域网地址是啥 ,尽量还是和本地的局域网地址保持一致

在我们的windows电脑里点击win+R
image.png

打开命令行输入 ipconfig
image.png
看到VMware使用的子网段是192.168.35.xxxx 我们在定义linux主机的时候就也使用这个192.168.35.xxx

  1. --1. 配置静态IP(确保NAT模式)
  2. [root@qianfeng01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
  3. ............
  4. BOOTPROTO=static # dhcp改为static
  5. ............
  6. ONBOOT=yes # no改为yes
  7. IPADDR=192.168.35.101 # 添加IPADDR属性和ip地址
  8. PREFIX=24 # 添加NETMASK=255.255.255.0或者PREFIX=24
  9. GATEWAY=192.168.35.2 # 添加网关GATEWAY
  10. DNS1=114.114.114.114 # 添加DNS1和备份DNS
  11. DNS2=8.8.8.8
  12. --2. 重启网络服务
  13. [root@qianfeng01 ~]# systemctl restart network
  14. 或者
  15. [root@qianfeng01 ~]# service network restart
  16. --3. 修改主机名(如果修改过,请略过这一步)
  17. [root@localhost ~]# hostnamectl set-hostname qianfeng01
  18. 或者
  19. [root@localhost ~]# vi /etc/hostname
  20. qianfeng01

2.1 开始配置静态ip地址
输入vi /etc/sysconfig/network-scripts/ifcfg-ens33 就是对ifcfg这个文件里面的内容进行编辑
编辑之后的文件是这个样的
image.png

我这里是使用远程工具对linux进行操作的,修改了静态ip之后就会断开连接的。
我们重新连接上linux以后在重启systemctl restart network

按照这样的配置方式我们配置其他的几台linux服务器,配置成下面这样。

主机名qianfeng01 ip地址是 192.168.35.101
主机名qianfeng02 ip地址是 192.168.35.102
主机名qianfeng03 ip地址是 192.168.35.103

我们看一下这三台linux机器的ip分别是什么
第一台
image.png
第二台
image.png
第三台
image.png

可以看到ip地址已经配置好了

3 配置linux主机的主机名

  1. --3. 修改主机名(如果修改过,请略过这一步)
  2. [root@localhost ~]# hostnamectl set-hostname qianfeng01
  3. 或者
  4. [root@localhost ~]# vi /etc/hostname
  5. qianfeng01

开始配置第一台Linux主机
设置以后我们在查看一下主机名 这样我们就设置好了主机名。

image.png
这里就可以看到主机名已经开始生效饿了。
image.png

4 配置 /etc/hosts 文件

这个配置的好像就是一个域名映射的关系,
前面的是ip地址 后面的就是ip对应的域名,我们自己配置一下域名解析,就不需要DNS域名解析服务器帮我们解析了。

  1. [root@qianfeng01 ~]# vi /etc/hosts
  2. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  4. 192.168.35.101 qianfeng01 #添加本机的静态IP和本机的主机名之间的映射关系
  5. 192.168.35.102 qianfeng02
  6. 192.168.35.103 qianfeng03

我们先查看一下这个hosts文件里面是什么东西,里面其实只有两行我们就开始编辑
image.png
命令:vi /etc/hosts
编辑之后让他变为这样。
image.png

对其他两台linux主机也进行这样的操作。

为了实现快速操作我们可以使用scp 这个分发指令(其实就是可以在两个设备间赋值数据),直接将qianfeng01
这个主机里面的文件发给qianfeng02这个主机
在发送的过程中可能会让我们输入qianfeng02这个主机的密码
命令:
image.png
然后我们到qianfeng02机子里面查看一下 hosts这个文件
命令 cat /etc/hosts 发现里面的数据已经和 qianfeng01 里面的hosts文件一样了。
image.png
同样我们在从qianfeng01里面分发给qianfeng02
image.png
这样我们就也发给了qianfeng03一份了。

注释:原理讲解
在qianfeng01里面输入scp /etc/hosts qianfeng02:/etc/
意思就是将qianfeng01 这个机子里面的/etc里面的hosts文件发送到qianfeng02 里面的 etc目录下,默认是覆盖qianfeng02里面原来的hosts这个文件夹的

因为我们之前在/etc/hosts 文件夹里面配置了 ip和域名的映射关系,所以可以将qianfeng02 这个域名解析为192.168.35.102

5 免密登录认证

我们现在要做的是在qianfeng01这个机子里面可以直接登录到qianfeng02,qianfeng03这两个机子里面。

-1. 使用rsa加密技术,生成公钥和私钥。一路回车即可
[root@qianfeng01 ~]# cd ~
[root@qianfeng01 ~]# ssh-keygen -t rsa    

-2. 进入~/.ssh目录下,使用ssh-copy-id命令
[root@qianfeng01 ~]# cd ~/.ssh            
[root@qianfeng01 .ssh]# ssh-copy-id  root@qianfeng01

-3. 进行验证    
[hadoop@qianfeng01 .ssh]# ssh qianfeng01
#下面的第一次执行时输入yes后,不提示输入密码就对了
[hadoop@qianfeng01 .ssh]# ssh localhost
[hadoop@qianfeng01 .ssh]# ssh 0.0.0.0

注意:三台机器提前安装好的情况下,需要同步公钥文件。如果使用克隆技术。那么使用同一套密钥对就方便多了。
  • 第一步就是 输入ssh-keygen -t -sa 生成自己的公钥和私钥

在生成的过程中他会让你输入几次存储的位置,我们直接回车就好了
出现下面的界面,秘钥就生成好了
image.png

  • 回到家目录下面输入cd .ssh 打开这个文件夹,输入 ll 看看里面有那些文件

image.png
可以看到有一个id_rsa 这是我们的私钥,id_rsa.pub这就是我们生成的公钥

按照这个方法我们也在其他两台linux机器里面生成自己的公钥和私钥

  • 三台机器都生成公钥和私钥以后,我们要实现免密登录就是要将 一台机器的公钥发送给其他两台机器

现在我们先将qianfeng01这台机器的公钥发送给qianfeng02 ,然后再发给qianfeng03
命令: ssh-copy-id qianfeng02
这样就可把自己的公钥发送给qianfeng02了,中间需要你去输入qianfeng02的密码
image.png
按照这样我们吧qianfeng01的秘钥在发给qianfeng03

我们已经吧qianfeng01 里面的公钥发送给qianfeng02了,那么现在我们就可以直接在qianfeng01里面直接登录到qianfeng02了, 在qianfeng01里面输入命令ssh qianfeng02,我们就可以看到直接进到了qianfeng02里面去了,如果要返回到qianfeng01输入exit可以了
image.png

好了,为了三台机子可以相互免密登录,我们要将qianfeng02的公钥发送给qianfeng01和qianfeng03
要将qianfeng03的公钥发送给qianfeng02和qianfeng01
发送完之后就可实现三台机子之间的免密登录了

5.1 免密登录实现原理

注释:ssh这种免密登录的方式。的实现原理
首先就是01将自己的公钥发送给02,02会将01的公钥放在~/.ssh里面的authorized-keysz这文件里面
公钥里面包含着01的ip,主机名等一写信息。当01去登录02的时候,02会在authorized-keys这个文件里面查找,查找到了就会生成一个随机的字符串,然后用01的公钥对这个字符串进行加密,然后返给01
01收到加密后的随机字符串以后,会用自己的私钥进行解密并且将解密以后的字符串返回给02,02拿到01解密以后的字符串,看看是不是自己当时生成的随机字符串,是的话就同意01登录

6 时间同步操作

6.1 一个主机安装ntp时间服务器

  • 安装ntp服务器

我们搭建的三台linux集群之间,之间的时间是要同步的,时间差是不能大于30秒的。
首先呢就是要确保我们的linux集群里面至少有一个主机是安装了时间服务器的,我们就一qianfeng01为主节点,在qianfeng01上面安装时间服务器(ntp),
时间服务器的下载命令: yum install ntp -y
这里的-y表示默认都选择yes ,
安装完毕以后我们查看一下时间服务器ntp的状态 : 命令 : systemctl status ntpd
image.png
可以看到当前他的状态是停止的。

  • 在qianfeng01里面安装完毕时间服务器ntp以后我们输入命令

vi /etc/ntp.conf 对事件服务器的配置信息进行修改

  • 第一个就是要添加我们自己的网络段位 ,我们的网络段位是192.168.35.0 子网掩码是255.255.255.0

image.png
添加一行 我们自己的网络段位,修改以后是
image.png

  • 然后设置一我们自己的这个qianfeng01为准时间,而不是同步网络时间

image.png
修改以后是
image.png
里面的#号都是注释

我们在查看一下ntp服务器现在的状态,命令:systemctl status ntpd
image.png
可以看到还是停止状态,我们输入命令启动服务 : 命令: systemctl start ntpd
启动以后在查看一下状态
image.png
这个时候active (running)就是已经启动了

6.2 其他的主机去同步时间

我们在6.1里面已经在qianfeng01里面安装了时间服务器,现在我让qianfeng02,03的主机去同步qianfeng01的时间。

需要注意的是 qianfeng02,03在同步时间的时候需要用到ntpdate这个软件,所以我们要在qianfeng02,03上面安装使用yum安装ntpdate这个软件。
下载ntpdate的命令: yum install ntpdate -y
这就是开始下载了,注意qianfeng02和qianfeng03都要安装ntpdate
image.png

我们进入到qianfeng02里面,输入同步命令 同步qianfeng01的时间
同步命令: ntpdate -u qianfeng01
在qianfeng02里面同步qianfeng01的时间
image.png
在qianfeng03里面同步qianfeng01的时间image.png

6.3 定时的去同步时间

做完6.2 以后这一步可以不做,
这里我们就已经同步了时间,但是事件可能不仅仅是要同步一次,我们设置一个定时任务让主机每隔一分钟去同步一下和qianfeng01的时间
linux里面的定时任务 命令crontab
输入 : crontab -e 这里的-e表示的是 : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,
然后我们就可以在编辑器里面面写我们的定时任务了
image.png
这里的 * 表示的是每分钟进行一次时间同步命令,并且将同步以后的结果打印到信息黑洞里面去,而不在我们的界面上打印。

好了在qianfeng01,03 设置好定时同步时间以后这一部分就结束了

7 hadoop安装和环境变量配置

7.1 安装hadoop

首先我们看一下hadoop的安装包的位置(在01这个博客里面我们就已经使用fileZilla将10个软件将安装包放到了/root/softwares里面了),可以看到我们的安装包是在/root/softwares下面的
image.png

现在我把他解压安装到/usr/local这个文件夹里面去
命令 : tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local

我们到/usr/local这文件夹里面看看去
image.png
可以看到确实安装到了/usr/local这个文件夹下面去了
现在我们吧/usr/local/里面的hadoop-2.7.6的名字改为hadoop
命令: mv hadoop-2.7.6 hadoop
再 ll 查看一下是否更名成功,可以看到确实改名了
image.png
我们进到hadoop这个文件夹里面看看里面都有啥
image.png
可以看到里面有 bin目录和sbin目录
其中sbin目录里面是关于集群启停的一些命令,bin目录里面是一些其他的命令。

7.2 配置Hadoop的环境变量

主要就是在/etc/profile这个文件里面编辑环境变量
进到profile这个文件里面cat /etc/profile
image.png
可以看到这是之前配置jdk环境变量的信息
我们开始编辑hadoop的环境变量
命令:vi /etc/profile 编辑这个文件,添加hadoop的环境变量信息,注意我们在配置环境变量的时候,要将hadoop的bin和sbin都配置进去
image.png
添加好环境变量以后我们重新加载一下profile这个文件
命令:source /etc/profile
重新加载profile文件以后我们可以验证一下hadoop的环境变量是否配置成功了
命令: hadoop version 出现版本信息,说明我们配置成功了
image.png

还有qianfeng02,qianfeng03都是要按照这样的方法先安装hadoop在配置hadoop的环境变量

到此为止我们的集群配置就告一段落了。