本节介绍如何搭建Linux环境。
本书将VirtualBox作为虚拟环境来安装Linux和Hadoop。VirtualBox最早由SUN公司开发。由于SUN公司目前已经被Oracle收购,因此可以在Oracle公司的官方网站上下载VirtualBox软件的安装程序,产品地址为https://www.virtualbox.org。笔者写作本书时,所使用的VirtualBox的版本为7.0.6,读者可以选用更高的版本。
首先,到VirtualBox的官方网站下载Windows hosts版本的VirtualBox。下载页面地址为https://www.virtualbox.org/wiki/Downloads,页面如图2-4所示。
同时,VirtualBox需要虚拟化CPU的支持,如果在安装时操作系统不支持x64位的CentOS,可以在宿主机开机时按F12键进入BIOS设置界面,并打开CPU的虚拟化设置界面进行设置,如图2-5所示。
图2-4 VirtualBox下载
图2-5 CPU的虚拟化设置
读者下载完成VirtualBox虚拟机后,自行安装即可。虚拟机的安装相对简单,以下是重要安装环节的截图。
网络功能的安装界面如图2-6所示,单击“是”按钮。
图2-6 网络功能安装
网络功能下一步的安装界面如图2-7所示,单击“安装”按钮。
图2-7 网络功能安装
网络功能安装成功后,会在“网络连接”里面多出一个名为Virtual Box Host Only的本地网卡,此网卡用于宿主机与虚拟机通信,如图2-8所示。
图2-8 本地虚拟网卡
本书将使用CentOS7作为操作系统环境来学习和安装Hadoop与Spark。具体步骤如下:
首先下载CentOS7的minimal(最小)版本,读者可以直接到阿里镜像网站https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/下载,页面如图2-11所示。
图2-11 CentOS7下载链接
下载完成以后,将得到一个CentOS-7-x86_64_Minimal-2009.iso文件。注意,文件名中的2009不是指2009年,而是指2020年09月发布的版本。
启动VirtualBox,启动界面如图2-10所示。
图2-10 VirtualBox启动界面
在VirtualBox主界面的菜单栏上单击“新建”按钮(见图2-10),进入“新建虚拟电脑”窗口。
在Virtual machine Name and Operating System(虚拟机名称和操作系统)界面设置虚拟机的名称、Folder(保持为默认值)和操作系统镜像,如图2-11所示。然后单击“Next”按钮。
图2-11 选择将要安装的操作系统
在Hardware界面为新的系统分配内存,建议4GB(最少2GB)或以上,这要根据宿主机的内存而定。同时建议设置CPU为2颗,如图2-12所示。然后单击“Next”按钮。
图2-12 为新的系统分配内存
在Virtual Hard disk界面为新的系统创建虚拟硬盘,设置为动态增加,建议最大设置为30GB或以上,如图2-13所示。同时选择虚拟文件的保存目录,默认情况下,会将虚拟文件保存到C盘上。笔者以为最好保存到非系统盘上,例如D:\OS目录是一个不错的选择。
图2-13 为新的系统创建虚拟硬盘
单击“Next”按钮,进入“摘要”界面,如图2-14所示。在界面上单击“Finish”按钮,关闭“新建虚拟电脑”窗口,回到VirtualBox主窗口,窗口左侧栏已经显示新建的虚拟机CentOS7-201,如图2-15所示。
图2-14 “摘要”界面
图2-15 显示新建的虚拟机CentOS7-201
在图2-15所示的VirtualBox主窗口左侧选中CentOS7-201虚拟机,并单击右上方的“设置”按钮,打开“CentOS7-201 -设置”窗口,如图2-16所示。
图2-16 “CentOS7-201 -设置”窗口
在“CentOS7-201 -设置”窗口左侧选择“网络”,右侧会显示“网络”设置界面,将网卡1的连接方式设置为NAT,用于连接外网,如图2-17所示;将网卡2的连接方式设置为Host-Only,用于与宿主机进行通信,如图2-18所示。如果没有网卡2,需要关闭Linux虚拟机,在这个设置界面上对网卡2进行“启用网络链接”设置,并选择连接方式为“仅主机(Host-Only)网络”。
图2-17 网卡1的设置
图2-18 网卡2的设置
现在启动这个虚拟机,进入安装CentOS7的界面,选择Install CentOS Linux 7,接下来就开始安装CentOS Linux了,如图2-19所示。
图2-19 安装CentOS7的界面
在安装过程中会出现选择语言项目,可以选择“中文”;选择安装介质,并进入安装位置,选择整个磁盘即可,如图2-20和图2-21所示。注意,必须同时打开CentOS的网络,如图2-22和图2-23所示,否则安装成功以后,CentOS将没有网卡设置的选项。
图2-20 安装位置
图2-21 本地标准磁盘
图2-22 打开CentOS的网络1
图2-23 打开CentOS的网络2
在安装过程中,创建一个非root用户,并将此用户作为管理员,如图2-24和图2-25所示。在其后的操作中,笔者不建议使用root账户进行具体的操作。一般情况下,使用这个非root用户执行sudo命令,即可使用root账户执行相关命令。输入的密码请牢记。
图2-24 创建非root用户
图2-25 设置非root用户为管理员
在安装完成以后,重新启动系统,并测试是否可以使用之前创建的用户名和密码登录。第一次安装完成后,请选择正常启动,即以有界面的方式启动,如图2-26所示。等我们设置好一些信息后,就可以选择无界面启动。
图2-26 选择正常启动
系统启动后,将显示如图2-27所示的登录界面,此时可以选择以root用户名和密码登录。注意,输入密码时,将不会有任何的响应,不用担心,只要确认输入正确,按回车键后即可看到登录成功后的界面,如图2-28所示。
图2-27 登录界面
图2-28 登录成功后的界面
对于Linux系统来说,如果当前登录用户是root,将会显示“#”。例如在图2-28中,root用户登录成功后显示“[root@server201 ~ ]#”,其中#表示当前为root用户。如果当前登录用户是非root账号,将显示为“$”。
设置静态IP地址。使用vim修改/etc/sysconfig/network-scripts/ifcfg-enp0s8文件,修改内容如下:
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=enp0s8 UUID=620377da-1744-4268-b6d6-a519d27e01c6 DEVICE=enp0s8 ONBOOT=yes IPADDR=192.168.56.201
其中IPADDR=192.168.56.201为本Linux的Host-Only网卡地址,用于主机通信。输出完成以后,按ESC键,再输入“:wq”即可保存并退出。这是vim的基本操作,对此不了解的读者,可以去网上查看vim的基本使用方法。
请牢记上面设置的IP地址,这个地址在后面会经常出现。现在可以关闭系统,并以非界面方式重新启动CentOS。以后我们将使用SSH客户端登录此CentOS。
上述ifcfg-enp0s8文件是在配置了Host-Only网卡的情况下才会存在。如果没有这个文件,请关闭Linux,并重新添加Host-Only网卡,再行配置。如果添加了Host-Only网卡后,依然没有此文件,可以在相同目录下复制ifcfg-enp0s3为ifcfg-enp0s8,再进行配置。
现在关闭CentOS,然后以无界面方式启动,如图2-29所示。
图2-29 以无界面方式启动
(1)本书重点不是讲VirtualBox虚拟机的使用,所以这里只给出关键的操作步骤。
(2)在安装过程中,鼠标会在虚拟机和宿主机之间切换。如果要从虚拟机中退出鼠标,按键盘右边的Ctrl键即可。
(3)登录Linux系统后,随手执行命令“yum -y install vim”装上vim,方便使用。
(4)关于Linux命令,请读者自行参考Linux手册。vim/vi、sudo、ls、cp、mv、tar、chmod、chown、scp、ssh-keygen、ssh-copy-id、cat、mkdir等命令,将是后面经常使用的命令。
Linux安装成功后,系统自动运行SSH服务。读者可以选择Xshell、CRT、MobaXterm等客户端作为Linux远程命令行执行工具,同时配合xFtp可以实现文件的上传与下载。Xshell和CRT是收费软件,不过读者可以在安装时选择free for school(学校免费版本),即可免费使用。
MobaXterm个人版是免费的,本书选用它作为远程命令行执行、文件上传与下载以及配置文件编辑的工具。到官网下载MobaXterm并安装完成以后,配置一下SSH即可登录Linux系统。配置很简单,在MobaXterm主界面上单击左上方的Session按钮,即可创建SSH连接,如图2-30所示。
图2-30 创建新的连接
单击Session按钮后,出现如图2-31所示的窗口。在窗口上单击SSH按钮,在相应的文本框中输入主机名称和登录用户名,再单击窗口下方的OK按钮。
图2-31 输入主机名称并登录
这时会打开Linux交互界面,提示输入root密码,如图2-32所示。输入密码不会有任何的回显,只要输入正确,按回车键即可登录。
图2-32 输入密码
root用户登录成功以后的界面如图2-33所示,用户可以通过这个界面操作Linux系统。
图2-33 SSH登录成功
使用MobaXterm工具连接CentOS虚拟机,就不需要在虚拟机和宿主机之间来回切换。另外,还可以发起好几个访问CentOS虚拟机的连接,学习起来非常方便。
还可以配置SFTP连接,方便将本地下载的Linux软件包上传到Linux系统进行安装配置,Linux系统上的配置文件也可以在本地编辑好后自动上传。SFTP登录界面如图2-34所示。
图2-34 MobaXterm登录后界面
后面配置Hadoop环境时将使用一些Linux的统一设置,在此一并列出。由于本次登录是用root登录的(见图2-33),因此可以直接操作某些命令,而不用添加sudo命令。
笔者习惯将“server+IP最后一部分数字”作为主机名称,所以取主机名为server201,因为本主机设置的IP地址是192.168.56.201。
# hostnamectl set-hostname server201
在hosts文件的最后,添加以下配置(这可通过vim /etc/hosts命令进行修改):
192.168.56.201 server201
# systemctl stop firewalld # systemctl disable firewalld
#vim /etc/selinux/config SELINUX=disabled
#vim /etc/chrony.conf
删除所有的server配置,只添加:
server ntp1.aliyun.com iburst
重新启动chronyd:
#systemctl restart chronyd
查看状态:
#chronyc sources -v ^* 120.25.115.20
如果结果显示“*”,则表示时间同步成功。
usr目录的意思是unix system resource目录,可以将JDK1.8的Linux x64版本安装到此目录下。
首先去Oracle网站下载JDK1.8的Linux压缩包版本,页面如图2-37所示。
图2-37 JDK下载(目前能下载到的新版本)
然后将压缩包上传到Linux并解压(作者使用jdk-8u361版本做演示):
# mkdir /usr/java # tar -zxvf jdk-8u361-linux-x64.tar.gz -C /usr/java/
# vim /etc/profile
在profile文件最后添加以下配置:让环境变量生效:
export JAVA_HOME=/usr/java/jdk1.8.0_361 export PATH=.:$PATH:$JAVA_HOME/bin
让环境变量生效
# source /etc/profile
检查Java版本:
[root@localhost bin]# java -version java version "1.8.0_361" Java(TM) SE Runtime Environment (build 1.8.0_361-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.361-b09, mixed mode)
到此,基本的Linux运行环境就已经配置完成了。
在VirtualBox虚拟机中,可以通过复制的方式,为本小节已经做了统一设置的CentOS镜像文件创建副本,用于备份或者搭建集群。
接下来创建一个工作目录/app,方便我们以hadoop账户安装、配置与运行Spark相关程序。
在磁盘根目录(/)下,创建一个app目录,并授权给hadoop用户。我们会将Spark以及其他相关的软件安装到此目录下。
以root账户切换到根目录下:
[hadoop@server201 ~]# cd /
添加sudo前缀,使用mkdir创建/app目录:
[hadoop@server201 /]# sudo mkdir /app [sudo] hadoop 的密码:
将此目录的所有权授予hadoop用户和hadoop组:
[hadoop@server201 /]# sudo chown hadoop:hadoop /app
su hadoop账户,切换进入/app目录:
[hadoop@server201 /]$ cd /app/
使用ll -d命令查看本目录的详细信息:
[hadoop@server201 app]$ ll -d drwxr-xr-x 2 hadoop hadoop 6 3月 9 21:35 .
可见此目录已经属于hadoop用户。