一、虚拟机的建立与连接
1.建立虚拟机
详情见【Linux】虚拟机的安装
把上面三个参数改掉
2.连接虚拟机
具体见【Linux】远程连接虚拟机+防火墙
二、修改主机名
在Centos7中直接使用root用户执行hostnamectl命令修改,重启(reboot)后永久生效。
hostnamectl set-hostname 新主机名
三、关闭防火墙
1.查看CentOS 7防火墙状态
systemctl status firewalld.service
2.关闭运行的防火墙
systemctl stop firewalld.service
关闭后,可查看防火墙状态,当显示disavtive(dead)的字样,说明CentOS 7防火墙已经关闭。
但要注意的是,上面的命令只是临时关闭了CentOS 7防火墙,当重启操作系统后,防火墙服务还是会再次启动。如果想要永久关闭防火墙则还需要禁用防火墙服务。
3.禁用防火墙服务
systemctl disable firewalld.service
四、关闭NetworkManger服务
NAT模式,修改网卡配置文件后,重启服务出现错误’Job for network.service failed because the control process exited with error code. See “systemctl status network.service” and “journalctl -xe” for details.’
解决方法:
1.和 NetworkManager 服务有冲突,关闭 NetworkManger 服务
systemctl stop NetworkManager
2.禁止开机启动NetworkManager 服务
systemctl disable NetworkManager
3.除此以外,其他相关命令如下:
查看# systemctl status NetworkManager开启# systemctl start NetworkManager
可用# systemctl enable NetworkManager
五、配置静态ip
使用root用户修改当前启用的网卡配置文件,所在路径为 /etc/sysconfig/network-scripts ,CentOS 6系统默认为ifcfg-eth0,CentOS 7系统默认为ifcfg-ens32 ,使用vi编辑器编辑ifcfg-ens32文件,所用命令如下:
vi /etc/sysconfig/network-scripts/ifcfg-ens32
三个节点上的这个文件都需要修改,修改的内容基本一致,如下是需要修改和添加的
详情见【Linux】无法连接网络的情况及解决方案里的配置静态IP地址
#原值为dhcp,修改为static
BOOTPROT="static"
# 添加IPADDR,对应的值要与原ip在同一网段
IPADDR=xxx.xxx.xxx.xxx
# 添加NETMASK,指定子网掩码,默认为255.255.255.0
NETMASK=255.255.255.0
# 添加GATEWAY,要与虚拟机网卡的设置一致,默认仅主机模式为1,NAT模式为2
GATEWAY=xxx.xxx.xxx.1/2
# 如果需要连入外网,则可以添加DNS1和DNS2配置,通常会将DNS1指定为网关地址
DNS1=网关地址
DNS2=8.8.8.8
重启网络
注意:
配置完成后保存退出,使用systemctl restart network命令重启网卡服务。(如果使用service network restart命令,则需要编辑/etc/resolv.conf文件,添加对应的如下内容:nameserver 8.8.8.8 )
六、克隆虚拟机
克隆时要先关机,这里需要克隆worker1和worker2
克隆完成后需要重新设置ip地址和mac地址
mac地址的设置如下:
重新设置ip地址如下:
启动虚拟机,连接MobaXterm
注:三个虚拟机的ip地址都是连续的
七、ip地址和主机名的映射
在完全分布式部署的Hadoop平台上,为了方便各节点的交互,也为了尽量减少配置的修改,通常在配置文件中都会使用主机名来访问节点,这就需要正确的建立主机名与ip的映射。我们目前已经有了三台配置好网络的机器。现在我们有这样三台机器(namenode为主节点):
主机名称 | IP地址 |
---|---|
namenode | 192.168.182.135 |
worker1 | 192.168.182.136 |
worker2 | 192.168.182.127 |
1.需要使用root用户修改(用vi修改) /etc/hosts 文件,删除原来的内容,在结尾直接追加内容(每台机器):
用MultiExec可以一起编译3台虚拟机
192.168.182.135 namenode
192.168.182.136 worker1
192.168.182.137 worker2
用dd把里面的内容全删除
先按etc键,再按:wq(保存并退出)
2.配置完成后可以使用ping命令一一测试,看看是够能够正确解析出ip地址,得到目标机器的回应(可以每台机器都测试一下:使用Ctrl + C结束)。
检测在同一个网段内,3个都测试
3.(如果一个个虚拟机操作的)在slave1和slave2 上也修改hosts文件,追加内容和步骤1的内容相同,然后重复步骤2
八、免密登录设置
1.生成公钥密钥对
在3个节点上分别都执行如下命令:
ssh-keygen
连续按Enter键确认。
在root目录下输入:ll-a 可以查看当前目录下的所有文件(包含隐藏文件)。
然后进入.ssh隐藏目录,输入ls 命令,如图所示:
在图中能够看到包含两个文件分别是私钥和公钥,其中id_rsa为生成的私钥,id_rsa.pub为生成的公钥。
2.将子节点的公钥拷贝到主节点并添加进authorized_keys
在namenode节点上执行如下两行命令:
ssh-copy-id namenode
ssh-copy-id worker1
ssh-copy-id worker2
执行时,需要输入yes
3.测试是否成功
为了测试免密设置是否成功,可执行如下命令:
ssh namenode
ssh worker1
ssh worker2
结果如图所示:
exit登出
九、配置时间同步服务
- 如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;
- 如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,导致集群执行任务时间不同步。
- NTP(Network Time Protocol,网络时间协议) 是使计算机时间同步化的一种协议,可以使计算机对其服务器或时钟源进行同步化,提供高精度的时间校正。
- Hadoop集群对时间要求很高,主节点与各从节点的时间必须同步,因此需要配置时间同步服务。
1.下载安装ntp服务
2.设置master节点为ntp服务主节点
3.从节点配置ntp服务
4.启动ntp服务
十、配置jdk、hadoop环境
为了规范后续Hadoop集群相关软件和数据的安装配置,这里在虚拟机的根目录下建一些文件夹作为约定,具体如下:
文件夹名 | 作用 |
---|---|
/opt/module | 存放软件 |
/opt/software | 存放安装包压缩包 |
这里忘记改虚拟机名字了
具体需要执行下面3条命令:
mkdir -p /opt/module
mkdir -p /opt/software
进入/opt目录下,执行ls命令,如图所示即为成功。
1.下载jdk安装包和hadoop3.1.4
下载JDK地址 : https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2.将本地的jdk、hadoop安装包上传到/opt/software系统中
3.进入/opt/software目录下,解压jdk安装包到/opt/module
执行如下命令:
cd /opt/software
tar -zxvf jdk-8u161-linux-x64.tar.gz -C /opt/module
tar -zxvf hadoop-3.1.4.tar.gz -C /opt/module/
解压后在/opt/module目录下使用ll命令查看:
4.配置环境变量
使用vi编辑器编辑etc文件夹下的profile文件,键盘按下大写字母G,即可将光标移动到文章的末尾。
vi /etc/profile.d/my_env.sh
将如下内容添加到末尾
#jdk环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATH
#hadoop环境变量
export HADOOP_HOME=/opt/module/hadoop-3.1.4
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
刷新环境变量
source /etc/profile
使用命令测试jdk环境变量的配置
java -version
使用命令测试hadoop环境变量的配置
hadoop version
将第一台机子master上的jdk和hadoop的软件包及环境变量配置文件,传给slave1和slave2
scp -r jdk1.8.0_161/ slave1:/opt/module/
scp -r jdk1.8.0_161/ slave2:/opt/module/
scp -r hadoop-3.1.4/ slave1:/opt/module/
scp -r hadoop-3.1.4/ slave2:/opt/module/
scp -r /etc/profile.d/my_env.sh slave1:/etc/profile.d/
scp -r /etc/profile.d/my_env.sh slave2:/etc/profile.d/
三台机子都需要刷新环境变量生效
source /etc/profile