在01 里面我们创建了三个,linux主机,现在要进行分布式集群的配置,让三台主机相互关联。
三台关联的时候要实现下面的6个条件
1 关闭防火墙
这里关闭防火墙centos6和centos7里面的命令是不一样的。
centos7 里面关闭防火墙的命令
systemctl stop firewalld 这个命令是关闭本次的一个防火墙,下次开机防火墙还是开机的状态
接着我们要输入下面的命令,关闭防火墙的服务,让他开机不能自己启动
systemctl disable firewalld
接着我们吧linux里面的安全机制也关闭掉,使用vi 命令对 文件 /etc/selinux/config
将里面的SELINUX= enforcing 改为 SELINUX=disabled 注意这里是disabled

设置好以后我们查看一下防火墙的状态
命令 systemctl status firewalld 
可以看到里面有一个 active xxx (dead) 说明防火墙已经关闭了。
接着我们吧networkmanager也关闭掉好了
命令:
systemctl stop NetworkManager 关闭NetworkManager
systemctl disable NetworkManager 关闭NerworkManager的开机自启动
2 配置静态ip
这里配置静态ip地址的时候我们看一下自己电脑的局域网地址是啥 ,尽量还是和本地的局域网地址保持一致
在我们的windows电脑里点击win+R 
打开命令行输入 ipconfig
看到VMware使用的子网段是192.168.35.xxxx 我们在定义linux主机的时候就也使用这个192.168.35.xxx
--1. 配置静态IP(确保NAT模式)[root@qianfeng01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33............BOOTPROTO=static # 将dhcp改为static............ONBOOT=yes # 将no改为yesIPADDR=192.168.35.101 # 添加IPADDR属性和ip地址PREFIX=24 # 添加NETMASK=255.255.255.0或者PREFIX=24GATEWAY=192.168.35.2 # 添加网关GATEWAYDNS1=114.114.114.114 # 添加DNS1和备份DNSDNS2=8.8.8.8--2. 重启网络服务[root@qianfeng01 ~]# systemctl restart network或者[root@qianfeng01 ~]# service network restart--3. 修改主机名(如果修改过,请略过这一步)[root@localhost ~]# hostnamectl set-hostname qianfeng01或者[root@localhost ~]# vi /etc/hostnameqianfeng01
2.1 开始配置静态ip地址
输入vi /etc/sysconfig/network-scripts/ifcfg-ens33 就是对ifcfg这个文件里面的内容进行编辑
编辑之后的文件是这个样的
我这里是使用远程工具对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分别是什么
第一台
第二台
第三台
可以看到ip地址已经配置好了
3 配置linux主机的主机名
--3. 修改主机名(如果修改过,请略过这一步)[root@localhost ~]# hostnamectl set-hostname qianfeng01或者[root@localhost ~]# vi /etc/hostnameqianfeng01
开始配置第一台Linux主机
设置以后我们在查看一下主机名 这样我们就设置好了主机名。

这里就可以看到主机名已经开始生效饿了。
4 配置 /etc/hosts 文件
这个配置的好像就是一个域名映射的关系,
前面的是ip地址 后面的就是ip对应的域名,我们自己配置一下域名解析,就不需要DNS域名解析服务器帮我们解析了。
[root@qianfeng01 ~]# vi /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.35.101 qianfeng01 #添加本机的静态IP和本机的主机名之间的映射关系192.168.35.102 qianfeng02192.168.35.103 qianfeng03
我们先查看一下这个hosts文件里面是什么东西,里面其实只有两行我们就开始编辑
命令:vi /etc/hosts
编辑之后让他变为这样。
对其他两台linux主机也进行这样的操作。
为了实现快速操作我们可以使用scp 这个分发指令(其实就是可以在两个设备间赋值数据),直接将qianfeng01
这个主机里面的文件发给qianfeng02这个主机
在发送的过程中可能会让我们输入qianfeng02这个主机的密码
命令:
然后我们到qianfeng02机子里面查看一下 hosts这个文件
命令 cat /etc/hosts 发现里面的数据已经和 qianfeng01 里面的hosts文件一样了。
同样我们在从qianfeng01里面分发给qianfeng02 
这样我们就也发给了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 生成自己的公钥和私钥
在生成的过程中他会让你输入几次存储的位置,我们直接回车就好了
出现下面的界面,秘钥就生成好了
- 回到家目录下面输入cd .ssh 打开这个文件夹,输入 ll 看看里面有那些文件

可以看到有一个id_rsa 这是我们的私钥,id_rsa.pub这就是我们生成的公钥
按照这个方法我们也在其他两台linux机器里面生成自己的公钥和私钥
- 三台机器都生成公钥和私钥以后,我们要实现免密登录就是要将 一台机器的公钥发送给其他两台机器
现在我们先将qianfeng01这台机器的公钥发送给qianfeng02 ,然后再发给qianfeng03
命令: ssh-copy-id qianfeng02
这样就可把自己的公钥发送给qianfeng02了,中间需要你去输入qianfeng02的密码
按照这样我们吧qianfeng01的秘钥在发给qianfeng03
我们已经吧qianfeng01 里面的公钥发送给qianfeng02了,那么现在我们就可以直接在qianfeng01里面直接登录到qianfeng02了, 在qianfeng01里面输入命令ssh qianfeng02,我们就可以看到直接进到了qianfeng02里面去了,如果要返回到qianfeng01输入exit可以了
好了,为了三台机子可以相互免密登录,我们要将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
可以看到当前他的状态是停止的。
- 在qianfeng01里面安装完毕时间服务器ntp以后我们输入命令
vi /etc/ntp.conf 对事件服务器的配置信息进行修改
- 第一个就是要添加我们自己的网络段位 ,我们的网络段位是192.168.35.0 子网掩码是255.255.255.0

添加一行 我们自己的网络段位,修改以后是
- 然后设置一我们自己的这个qianfeng01为准时间,而不是同步网络时间

修改以后是
里面的#号都是注释
我们在查看一下ntp服务器现在的状态,命令:systemctl status ntpd
可以看到还是停止状态,我们输入命令启动服务 : 命令: systemctl start ntpd
启动以后在查看一下状态
这个时候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
我们进入到qianfeng02里面,输入同步命令 同步qianfeng01的时间
同步命令: ntpdate -u qianfeng01
在qianfeng02里面同步qianfeng01的时间
在qianfeng03里面同步qianfeng01的时间
6.3 定时的去同步时间
做完6.2 以后这一步可以不做,
这里我们就已经同步了时间,但是事件可能不仅仅是要同步一次,我们设置一个定时任务让主机每隔一分钟去同步一下和qianfeng01的时间
linux里面的定时任务 命令crontab
输入 : crontab -e 这里的-e表示的是 : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,
然后我们就可以在编辑器里面面写我们的定时任务了
这里的 * 表示的是每分钟进行一次时间同步命令,并且将同步以后的结果打印到信息黑洞里面去,而不在我们的界面上打印。
好了在qianfeng01,03 设置好定时同步时间以后这一部分就结束了
7 hadoop安装和环境变量配置
7.1 安装hadoop
首先我们看一下hadoop的安装包的位置(在01这个博客里面我们就已经使用fileZilla将10个软件将安装包放到了/root/softwares里面了),可以看到我们的安装包是在/root/softwares下面的
现在我把他解压安装到/usr/local这个文件夹里面去
命令 : tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local
我们到/usr/local这文件夹里面看看去
可以看到确实安装到了/usr/local这个文件夹下面去了
现在我们吧/usr/local/里面的hadoop-2.7.6的名字改为hadoop
命令: mv hadoop-2.7.6 hadoop
再 ll 查看一下是否更名成功,可以看到确实改名了
我们进到hadoop这个文件夹里面看看里面都有啥
可以看到里面有 bin目录和sbin目录
其中sbin目录里面是关于集群启停的一些命令,bin目录里面是一些其他的命令。
7.2 配置Hadoop的环境变量
主要就是在/etc/profile这个文件里面编辑环境变量
进到profile这个文件里面cat /etc/profile
可以看到这是之前配置jdk环境变量的信息
我们开始编辑hadoop的环境变量
命令:vi /etc/profile 编辑这个文件,添加hadoop的环境变量信息,注意我们在配置环境变量的时候,要将hadoop的bin和sbin都配置进去
添加好环境变量以后我们重新加载一下profile这个文件
命令:source /etc/profile
重新加载profile文件以后我们可以验证一下hadoop的环境变量是否配置成功了
命令: hadoop version 出现版本信息,说明我们配置成功了
还有qianfeng02,qianfeng03都是要按照这样的方法先安装hadoop在配置hadoop的环境变量
到此为止我们的集群配置就告一段落了。
