1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

基于 Mac 平台 VMware 虚拟机的 Spark 安装系列博文,主要分为如下几个篇章 :
1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS
2. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(2)- 安装 Hadoop
3. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(3)- 安装 MySQL
4. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(4)- 安装 Hive
5. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(5)- 安装 Spark
6. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(6)- 测试 spark-submit


这篇文章里,主要介绍 (1),即 "基于 VMware 虚拟机,安装 CentOS , 并进行相应的配置"
在 Mac 操作系统上安装 VMware,以及 VMware 的注册,略
这里使用的 VMware 版本是 VMware Fusion 11.0.0 
以下所有操作,均基于 root 账户


一、从官网 centos.org 下载 CentOS


这里下载的 CentOS 版本是 CentOS-7-x86_64-DVD-1810.iso 


二、安装 CentOS 之 master 机器


1. 打开 VMware Fusion, 点击"文件"->"新建",根据如下提示,将上面下载的 ISO 文件拖到指定界面位置

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

点击 "继续" -> "传统 BIOS" -> "继续" :

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

点击 "自定设置" 配置待安装的虚拟 CentOS 的位置和名称,这里安装的虚拟 CentOS 起名为 master

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

点击 "存储"。如果此时有如下设置界面,直接关掉即可

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

这里的默认设置有三个:
网络适配器:默认为" 与我的 Mac 共享 ",即虚拟机在外部网络上共享 Mac 的 IP 地址。Mac 为虚拟机发出的网络流量进行网络地址转换( NAT )
处理器:默认为 " 1个处理器内核 "
内存:默认为 1024MB 
这里先采用默认配置,后面再根据情况做调整

接下来点击 "运行" 大按钮

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

VMware 开始对 CentOS 进行安装,这里选择 "Test this media & install CentOS 7", 如图所示

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

VMware 对镜像文件进行检测后,开始执行实际安装,选择安装过程中交互语言为中文。

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

点击"继续",进入系统配置界面

"日期和时间":保持默认的 "亚洲/上海 时区"。
"键盘":在默认汉语的基础上,增加英语。
"语言支持":在默认中文的基础上,增加英文。
"安装源":保持默认的本地介质。
"软件选择":我们侧重于使用该虚拟 CentOS 的网络和计算功能,所以我们左侧选择 "带 GUI 的服务器",右侧可以全部勾选,点击 "完成",系统界面显示 "检测软件依赖关系",等待其检测完毕。

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

"安装位置"点进去,可以看到默认的硬盘是20G, 保持默认即可,虚拟CentOS安装完毕之后,还可以根据需要动态设置其硬盘的大小。
"KDUMP" 保持默认。
"网络和主机名" 点击进去,打开以太网的 "关闭" 按钮,并点击 "完成" 返回主安装界面。

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

"SECURITY POLICY" 阅读确认。
至此、虚拟 CentOS 安装的配置完毕,点击 "开始安装" 进行安装。
然后,根据提示, 设置 ROOT 密码, 创建用户 admin 作为登录初始账户,admin 可以免密码。然后,等待系统安装完毕后重启即可。

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

三、关闭防火墙和 SELinux


使用命令 # systemctl status firewalld.service 查看防火墙状态,如下图绿色 active (running) 字样所示, 标识防火墙是开启的

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

我们使用命令 # systemctl stop firewalld.service 来关闭防火墙。
这时候再使用命令 # systemctl status firewalld.service 来查看,发现防火墙已经被关闭。
但是当虚拟CentOS重启之后,防火墙还会自动开启。我们使用如下命令永久关闭防火墙:
# systemctl disable firewalld.service
至此、虚拟 CentOS 的防火墙被永久关闭。
下面来关闭 selinux。
selinux 有 3 种状态,分别是 Enforcing 强制启动、Permissive 大部分规则放行、Disabled 禁用。
使用命令 # getenforce 来查看 selinux 的状态,如图所示,标识 selinux 为 Enforcing 状态
我们编辑 /etc/selinux/config 文件,做如下修改 :

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

重启虚拟 CentOS , 重新查看防火墙和 selinux 的状态,确认 OK 

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

本节参考: 
CentOS 如何关闭防火墙: https://jingyan.baidu.com/article/ff42efa9fd8c1cc19e2202bb.html
如何关闭 Linux 的 selinux: https://jingyan.baidu.com/article/6d704a13409b4128da51ca4e.html


四、配置虚拟 CentOS 的静态 IP 和主机名


1. 
查看 Mac 本身网络情况:
进入 Mac "系统偏好设置" - "网络" - "" - "高级" - "DNS" , 查看 DNS 服务器,显示为:
114.114.114.114
8.8.8.8

这个 DNS 地址,先记录下来、后面配置虚拟 CentOS 使用。
查看 Mac 上安装的 VMware 的配置信息:

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

这里的网关地址和网络掩码,先记录下来、后面配置虚拟 CentOS 使用。
配置虚拟 CentOS 的网络配置文件:
执行命令 # ifconfig 可以看到,这个版本的 CentOS 使用的是 ens33 网卡标识,如图所示 :

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

使用这个 ens33 标识,找到网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 ,对其进行如下编辑如下:

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

其中,
BOOTPROTO=static                # 设置 IP 类型为静态  
IPADDR=192.168.41.100            # 设置具体 IP 地址。设置在网关的范围内,即 192.168.41.***,但不要和网关相同即可
NETMASK=255.255.255.0            # 设置网络子网掩码
GATEWAY=192.168.41.2            # 设置网关地址为上面的 192.168.41.2
DNS1=8.8.8.8                # 设置 DNS 服务器 1
DNS2=114.114.114.114        # 设置 DNS 服务器 2
ONBOOT=yes                    # 设置开机时候读取本设置
对 /etc/sysconfig/network-scripts/ifcfg-ens33 进行内容保存,并执行如下命令重启网卡服务:
# service network restart
等待命令执行完毕,重新执行命令 # ifconfig 发现虚拟 CentOS 的静态 IP 地址变成如图所示

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

搭建集群,通常以名称代替IP,所以我们配置主机名如下:
编辑 /etc/sysconfig/network 文件,通过添加如下两个配置项来更改机器名

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

新的机器名在虚拟CentOS 重启后生效。
修改 HOST 文件:
编辑 /etc/hosts 文件,添加如下内容

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

保存该 /etc/hosts 文件。重启 CentOS 后,执行命令 # hostname 发现机器名已经变成了 master


五、配置 root 用户的工作路径


创建如下文件目录
/app/soft        :用于系统软件安装
/app/work    :用于存放用户文档、代码


六、配置基础开发语言包 Java 和 Scala 


1. Java 安装配置
系统已有一个自带的 Java , 我们安装一个相对较新的 Java .
下载 jdk-8u201-linux-x64.tar.gz 到 /app/soft 目录
执行命令 # tar -zxvf ./jdk-8u201-linux-x64.tar.gz 对其进行解压,得到目录 jdk1.8.0_201


2. Scala 安装配置
下载 scala-2.12.2.tgz  到 /app/soft 目录
执行命令 # tar -zxvf scala-2.12.2.tgz 对其进行解压,得到目录 scala-2.12.2 


3. 编辑 /etc/profile 文件、增加 Java 和 Scala 的如下信息

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS


七、生成虚拟 CentOS 的集群


1.  用 master 生成 slave1 和 slave2
对 master 进行关机后,在 VMware 的主控界面上
对 master 创建完整克隆,并命名为 slave1
对 master 创建完整克隆,并命名为 slave2

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

2. 配置
由于 master 机器执行任务略多,这里我们将 master 机器的内存配置为 2G 
slave1 和 slave2 保持刚才克隆的 1G 内存不变 
对于 slave1 ,
编辑其 /etc/sysconfig/network 文件,将其 HOSTNAE 改为 slave1
编辑其 /etc/sysconfig/network-scripts/ifcfg-ens33 文件,将其 IPADDR 改成  "192.168.41.101"
对于 slave2 ,
编辑其 /etc/sysconfig/network 文件,将其 HOSTNAE 改为 slave2
编辑其 /etc/sysconfig/network-scripts/ifcfg-ens33 文件,将其  IPADDR 改成 "192.168.41.102"
重启 slave1 和 slave2 ,使得上述配置生效。
重启后,相互 ping 主机名,应该是可以 ping 通的


八、配置免密码登录


1.  分别编辑 master、slave1、slave2 三台机器的 /etc/ssh/sshd_config 文件, 使如下三个配置项生效

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

保存配置之后,执行命令 # systemctl restart sshd.service 重启 SSH 服务,使得配置生效


2.  对机器master、slave1、slave2 三台机器分别生成公钥、私钥
在三台机器上执行命令 # ssh-****** -t rsa 
为简单起见,在生成公钥、私钥的过程中,如遇到系统提示,均按回车键

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

命令执行完毕之后,在目录 /root/.ssh/ 下面会生成两个文件 id_rsa 和 id_rsa.pub ,
其中 id_rsa.pub 是公钥。


3. 分别对机器 master、slave1、slave2 三台机器的公钥文件进行重命名
对 master 执行命令 # mv /root/.ssh/id_rsa.pub /root/.ssh/id_rsa_master.pub
对 slave1 执行命令 # mv /root/.ssh/id_rsa.pub /root/.ssh/id_rsa_slave1.pub
对 slave2 执行命令 # mv /root/.ssh/id_rsa.pub /root/.ssh/id_rsa_slave2.pub


4. 将公钥文件传到 master 机器上,并进行合并, 对 master 执行命令 
# scp  [email protected]:/root/.ssh/id_rsa_slave1.pub  /root/.ssh/ 
# scp  [email protected]:/root/.ssh/id_rsa_slave2.pub  /root/.ssh/ 
# cd /root/.ssh
# cat id_rsa_master.pub >> authorized_keys
# cat id_rsa_slave1.pub >> authorized_keys
# cat id_rsa_slave2.pub >> authorized_keys

公钥合并之后,authorized_keys 的内容如图所示

1. 基于 Mac 平台 VMware 虚拟机的 Spark 安装(1)- 安装 CentOS

5. 将 authorized_keys 文件分发到 slave1 和 slave2 的对应位置 ( /root/.ssh )
在 master 机器上执行如下命令:
# scp  /root/.ssh/authorized_keys  [email protected]:/root/.ssh/
# scp  /root/.ssh/authorized_keys  [email protected]:/root/.ssh/


6. 将三个虚拟 CentOS 重启完成本阶段配置