1.Ubuntu
虚拟机的安装
1)启动 VMWare,点击主菜单中的“文件”->“新建虚拟机”

2)在新建虚拟机向导窗体中,选择默认的“典型”配置即可,然后点击下一步。
3)在安装来源设置窗体,选择“安装程序光盘映像文件(iso)”,点击右侧的浏览按钮,
找到下载好的 ubuntu-20.04.4-desktop-amd64.iso 文件,然后点击下一步。


4)在简易安装信息的窗体中,将全名、用户名、密码、确认等几项均设为“spark”,
方便后面使用,然后点击下一步。
5)在命名虚拟机的窗体中,可以设定一下虚拟机名称或直接按默认,然后点击下一步。


6)在指定磁盘容量的窗体中,设定虚拟机使用的最大磁盘大小为 60GB,虚拟机文件尺
寸是在使用过程中按需增长的,最大限制为 60GB。至于是将虚拟机存储为单个文件还是多
个文件,这个可以根据自己的喜好选择,不影响使用效果。设置完毕,点击下一步。
7)最后一步,直接点击结束,完成虚拟机的创建工作,当然也可以通过“自定义硬件”
修改所创建虚拟机的一些默认设置,如 CPU 核数以及内存大小等,也可在以后的使用过程中
调整。


8)Vmware 完成新建虚拟机后,会自动启动 Ubuntu20.04 的安装过程
9)稍候几分钟的时间进行安装。当虚拟机安装完毕,就会出现 Ubuntu20.04 的登录界
面
10)点击登录界面中列出来的 Linux 帐户“spark”,然后输入创建虚拟机时设定的密码
“spark”,按回车键后就进入到 Ubuntu20.04 操作系统界面
11)Ubuntu20.04 操作系统的初始界面如图所示,第一次启动时会相继提示几个信息的
设置,包括网络在线帐号设置、更新设置、问题提交、隐私设置等,直接点击右上角的“Skip”
和“Next”,直至最后一个窗体点击“Done”全部完成。


12)为方便后续操作,这里再整理一下 Ubuntu20.04 左侧任务栏的图标,只保留最常用
的几个快捷方式。方法是:找到左侧垂直的任务栏,在要隐藏的图标上点击鼠标右键,选择
“Remove from Favorites”
13)鼠标右键点击 Ubuntu20.04 桌面的中间空白位置(注意不是在应用程序图标上),
选择弹出菜单中的“Open in Terminal”,启动 Linux 终端控制台窗体。
14)Linux 终端窗体启动后,在左侧任务栏的“Linux 终端”图标上点击鼠标右键,选
择弹出菜单中的“Add to Favorites”将其固定在任务栏,这样以后经常使用 Linux 终端时,
就可以直接点击任务栏中的快捷图标来打开它。



15)点击 Ubuntu20.04 桌面右上角的电源图标,选择“Power Off/Log Out”下面的“Power
Off”菜单项,然后在弹出的窗体中再点击“Power Off”按钮,关闭当前虚拟机

16)回到 Vmware Workstation,选中这里安装的 Ubuntu20.04,然后点击“编辑虚拟机
设置”

17)在虚拟机设置窗体,调整一下内存和处理器的数量,比如 4GB 内存和 2 个处理器。
如果所使用计算机的配置不高的话,两者可以再减少,但考虑到虚拟机上是要运行 Hadoop、
Spark 这种 JVM 类的运用程序,因此内存数量至少要 2GB 以上,太低的话可能导致某些程序
运行出现 OOM(Out of Memory)内存不足,甚至 Windows 蓝屏崩溃的问题。

2.Ubuntu
基本配置
1)在 Ubuntu20.04 中打开一个 Linux 终端窗体,输入下面的命令更新一下软件源

2)为避免版本冲突先卸载内置的 openssh-client,在安装 openssh-server 时会自动
安装匹配版本的 openssh-client。


3)继续输入下面的命令安装 vim,即 vi 编辑器的增强版,它支持一些更丰富的功能,
如不同颜色的高亮代码显示等。当 vim 安装完毕,在终端输入 vi 或 vim 命令,实际启动的
就是这个增强版的 vim 编辑器

4
)输入下面的命令,将
Ubuntu20.04
自带的防火墙禁用掉,避免在远程终端连接时出
现问题,包括运行
Hadoop
和
Spark
时也要禁用防火墙

5
)
Windows
自带的记事本是一个简单易用的文字编辑器,在
Ubuntu20.04
的桌面环境
中也有一个类似的图形化“
Text Editor
”文本编辑器,可以在应用程序列表中找到并将它
启动起来

在使用这个图形化的文本编辑器打开或保存文件时,若编辑的文本文件对当前
Linux
帐户无访问权限的话,将导致无法正常打开或保存。此外,还可以通过终端命令启动编辑器,
执行
gedit
命令时可以在前面加上
sudo
获取
root
权限,后面加上文件名进行编辑

3.Vi
编辑
器
Linux
操作系统在安装后,只需在
Linux
终端窗体中输入“
vi
”或“
vim
”命令就能启
动vi编辑器。

vi
编辑器初始界面如图
所示。如果在
vi
命令后面带一个文件名的话,那么就会直
接打开并显示文件的具体内容,比如“
vi hello.txt
”。如果指定的文件不存在,此时就相
当于创建一个新的文件进行编辑

下面是最常用的一些
Vi
编辑器分类命令,掌握好这些最基本的
Vi
编辑命令很重要,如
图所示


4.MobaXterm
远程连接工具
MobaXterm
分为免费版(
Home Edition
)和专业版(
Professional Edition
),免费版
又分便携版(解压即用)和安装版,其中免费版就可满足大部分场合下的使用需求,下载地址是
https://mobaxterm.mobatek.net/download.html
当
MobaXterm
便携版下载好后,将其解压缩到
Windows
的一个目录中,然后启动里面的
MobaXterm_Personal
可执行文件,就会打开MobaXterm窗体的初始界面

下面以我们的
Ubuntu20.04
虚拟机为目标来简单说明一下
MobaXterm
的基本使用。首先
在
Linux
终端窗体中输入下面的命令查看一下当前虚拟机的
IP
地址:

在
MobaXterm
窗体左上角找到
Session
图标,点击后会打开一个连接会话设置窗体,这
个窗体列出了
MobaXterm
支持的各种远程连接类型,点击选择其中的第一项
SSH
图标,输入
虚拟机的
IP
地址,然后指定登录所用的帐号
spark
,再点击OK即可

首次连接到远程服务器时,
MobaXterm
还会显示一个确认窗体。在这个窗体中,勾选“
Do
not show this message again
”(不要再显示本确认信息),然后点击
Accept
即可。

输入连接所用帐户
spark
的密码(密码也是
spark
)并回车,在弹出的是否要保存密码
的窗体中,勾选“
Do not show this message again
”(不再显示本信息),然后点击
No
不
保存登录密码。
MobaXterm
成功连接远程服务器后的界面,如图所示。在这里,可以像
Linux
系统本地
一样执行命令,还可以通过左侧
SFTP
(橘色圆形图标)将
Windows
本地的文件拖放上传到
远程服务器,后面的
JDK
、
Hadoop
、
Spark
等软件的安装就是通过这样的方法上传到
Ubuntu20.04
虚拟机的。使用完毕,只需按下
Ctrl+D
键或输入
exit
命令即可退出远程登录

可自动连接,或者在保存的连接信息上点击鼠标右键,选择弹出菜单中的
Editsession
(编
辑)、
Delete session
(删除)等还可以对连接信息进行管理。

Hadoop
伪分布集群环境搭建
1.JDK
的安装配置
1
)打开一个
Linux
终端,在其中执行以下命令,将
JDK
解压缩到
/usr/local
目录中,
并创建一个软链接指向
JDK
目录(相当于
Windows
的快捷方式)。

2
)修改
/etc/profile
文件,在其中添加有关
JDK
的环境变量设置。


3
)保存退出
vi
编辑器,回到
Linux
终端测试一下
JDK
的配置是否正常。如果出现以下
信息,说明
JDK
的配置是正确的,
JDK
的安装也就完成了。

4
)
JDK
安装完毕,最好重新启动一下
Ubuntu20.04
虚拟机,这样设置的环境变量就会
在
Linux
系统全局生效。
2.Linux
免密登录
1
)继续在
Linux
终端窗体中执行以下命令,因为远程登录服务
sshd
已经在运行,因此
先在本机通过ssh命令执行一下远程连接,测试一下是否正常。


2
)通过
ssh-keygen
生成免密登录所需的密钥信息。

3
)通过
ssh-copy-id
命令,可以把本地主机的公钥复制到远程主机的
authorized_keys
文件上,以便双方连接通信时使用。

4
)在本机通过
ssh
命令再次执行一下远程连接,测试一下是否能够免密登录,正常的
话此时就不再需要输入密码,
ssh
就能够连接成功。

3.Hadoop
的安装
1
)打开
Linux
终端窗体,先解压缩
hadoop-2.6.5.tar.gz
这个软件包,然后像
JDK
一
样建立一个软链接文件。


2
)将解压的
hadoop-2.6.5
目录的用户和组权限设一下,方便启动
Hadoop
的时候能够
完全控制这个目录,避免因为文件的访问权限导致出现问题。

3
)测试
Hadoop
是否能够正常使用。

4.HDFS
的配置
1
)切换到
Hadoop
的配置文件目录,先修改其中的
hadoop-env.sh
运行环境文件,找到
里面的
JAVA_HOME
变量。
Hadoop
没有使用
Linux
操作系统设置的
JAVA_HOME
环境变量,而
是内部重新定义了一个
JAVA_HOME
,所以就要告知
Hadoop
所依赖的
JDK
安装位置。


2
)修改
Hadoop
核心配置文件
core-site.xml
,在里面增加
HDFS
地址端口和临时工作
目录信息。


3
)修改
HDFS
设置文件
hdfs-site.xml
,指定
NameNode
和
DataNode
的数据保存位置。
其中,
NameNode
负责文件系统管理,
DataNode
负责数据存储。


4
)最后查看一下
slaves
配置文件的内容,这个文件中有运行
DateNode
进程的节点信
息。这里配置的是单节点,里面默认就是
localhost
即本机,故不用任何修改。

5
)配置文件修改完毕,首次运行之前还要初始化
HDFS
的文件系统,相当于平时的磁盘
格式化操作,这个工作只执行一次。如果要重新初始化,应先清除相关目录中的内容(
HDFS
存储过的数据会丢失),否则执行会失败。

6
)接下来启动
HDFS
服务程序,执行过程中会分别运行
NameNode
、
SecondaryNameNode
以及
DataNode
进程。

7
)使用
jps
命令查看
HDFS
的进程是否正常运行,
Java
进程列表中应有
NameNode
、
DataNode
、
SecondaryNameNode
这三个程序在运行,就说明
HDFS
启动正常。

5.YARN
的配置
1
)打开
yarn-env.sh
,找到其中的
JAVA_HOME
变量进行修改。


2
)打开
yarn-site.xml
文件,在其中增加与内存检查相关的设置。因为虚拟机使用的
内存和
CPU
资源受限,若要求必须有多少内存和
CPU
核的话,一些应用程序可能就无法正常
启动,在生产环境这两个参数应去掉。



6.HDFS
和
YARN
的测试
考虑到后续还会经常执行一些
Hadoop
的相关命令,为方便起见这里先把
Hadoop
的
bin
目录设置到
PATH
环境变量中。


2
)通过
source
命令使
/etc/profile
的内容修改生效。注意:如果新开一个终端窗体,
需要在新终端重新执行一次
source
命令,除非重启动虚拟机才会全局有效。

3
)现在可以测试是否能够正常操作
HDFS
,比如创建目录,上传文件等。

4
)还可以在
Ubuntu20.04
里面启动浏览器,访问
http://localhost:50070
查看HDFS的WebUI管理页面,如图1-38所示。如果是在Windows的浏览器访问,则需要将网址中的localhost改成Ubuntu20.04虚拟机的ip地址(通过Linux终端命令ip addr可以找到)。

5
)在
Ubuntu20.04
浏览器中访问
http://localhost:8088
,查看YARN
的
WebUI管理页面,如图
Ubuntu20.04
虚拟机的
IP
地址才行。

Spark
单机运行环境搭建
1.Spark
的安装配置
1
)打开一个
Linux
终端,在其中执行以下命令将
Spark
软件包解压到
/usr/local
目录
中,并创建一个软链接文件指向
Spark
目录并修改目录的用户属性。

2
)接下来开始配置
Spark
运行环境,相比而言
Spark
的配置更简单,所有配置文件均
位于
conf
目录。


2
)使用
vi
编辑器修改
/etc/profile
文件,在其中添加有关
Spark
的环境变量设置。


3
)通过
source
命令使
/etc/profile
的内容修改生效。注意:如果新开一个终端窗体,
需要在新终端重新执行一次
source
命令,除非重启动虚拟机才会全局有效。
4
)初步测试一下配置好的
Spark
能否正常工作。


如果一切正常的话,终端上会输出计算得到的
pi
近似值,这个值不固定,所以每次运
行输出的
pi
值是会变化的。
2.SparkShell
交互编程环境
1
)打开
Linux
终端窗体,输入
spark-shell
命令启动
SparkShell
交互式编程环境。启
动过程中可能会出现一个
NumberFormatException
的异常信息,这个问题不影响使用。

2
)
Spark
是用
Scala
语言开发的,当
SparkShell
启动后就支持运行
Scala
代码。我们
先输入下面两行简单的
Scala
代码(不理解也没关系):

正常的话,运行完毕就会打印输出
hello.txt
文件中的内容,说明
Spark
可以正常读取
本地磁盘的文件。
3
)再新开一个
Linux
终端,在里面输入
jps
命令查看
HDFS
服务是否在运行,如果没有
运行就要先将
HDFS
服务启动,正如在配置
HDFS
服务时所做的那样。
4
)现在可以验证
Spark
能否正常访问
HDFS
上的文件。前面测试
HDFS
时已经上传过一
个文件,路径为:
/mydata/hello.txt
,下面准备测试在
SparkShell
中读取这个文件。请转
至运行
SparkShell
的终端窗体,输入下面的代码:

5
)通过上述的测试,说明
Spark
的安装配置是正确的。要退出
SparkShell
交互编程环
境,可以按下键盘上的
Ctrl+D
快捷键,或输入“
:quit
”并回车(冒号输入也包含在内)。

3.Python3.6
的安装
1
)先查看
Ubuntu20.04
上已安装的
Python
相关程序文件:

从输出的文件列表可以看出,
python3
实际是一个软链接文件,指向
python3.8
执行程
序。我们可以分别运行
python3
和
python3.8
命令,以确认它们是否为同一个:

2
)现在面临两个选择,一是将系统默认安装的
Python3.8
卸载替换成
Python3.6
,这
种做法存在一定风险,因为可能影响到其它一些程序的使用。还有一种做法,就是在系统中
同时保留多个
Python
版本,然后根据实际需要切换使用(有现成工具辅助
Python
的多版本
管理)。这里准备采取第二种做法,即保留预装的
Python3.8
,另外安装一个
Python3.6
运
行环境到系统中。
在安装
Python3.6
之前,先执行一下
apt
软件源的更新工作:

3
)由于
Ubuntu
软件源不含
Python3.6
的预编译版本,所以就要使用一个非常优秀的第
三方软件源
Deadsnakes PPA
。请按照下面步骤将其安装进来。


3
)现在可以开始安装
Python 3.6
,安装完毕查看一下
Python3.6
的启动程序。



注意到,当
Python3.6
成功安装后,在
/usr/bin
目录中会多出两个执行程序,即
python3.6
和
python3.6m
,其中后者在内存分配方式上做了优化,实际使用时任选其一即可。
在介绍
SparkShell
时,曾经提到过
Spark
有一个名为
pyspark
的交互式编程工具,它
要求在
Python
语言的运行环境中才能使用。为了使得
pyspark
脚本能够找到正确的
Python
运行环境,可以在运行脚本之前设置一下
PYSPARK_PYTHON的环境变量。为方便起见我们将其添加到
/etc/profile
文件(或者在
Spark
中的
spark-env.sh
文件配置也可以):


4.PySparkShell
交互编程环境
1
)当
Python3.6
运行环境准备就绪,现在就可以启动
PySparkShell
交互编程环境了。

从
PySparkShell
启动输出的提示信息可以看出,
Spark2.4.8
使用的是
Python3.6
,这
也再次证明之前的配置是正确的。
2
)类似
SparkShell
读取文件数据的做法,在这里同样测试一下
PySparkShell
中访问
本地和
HDFS
文件。请先确认一下
HDFS
服务是否正常运行,具体步骤参考前述内容即可,这
里假定
HDFS
已正常运行。请在
PySparkShell
中输入以下代码执行:

3
)测试完毕,直接按下
Ctrl+D
快捷键,或者输入“
quit()
”就可以退出
PySparkShell
交互编程环境的界面。
5.Pip
的安装配置
1
)在
Linux
终端执行下面的命令安装
pip
工具,然后查看一下
pip
的版本信息,以及
和对应管理的
Python
版本。




2
)在
Linux
终端继续执行下面的命令:






3
)现在可以验证
pip
和
pip3
的设置是否达到了预期目标。

4)当
pip
包管理工具安装配置好之后,考虑到实际使用时需要访问网络下载软件,下
面将
pip
源改成国内镜像(如阿里云、清华镜像站点等),以加快下载速度。


当
pip
镜像源配置文件修改完毕,可以通过下面的命令进行验证是否有效:


6.Spark
框架目录结构
当安装好了
Spark
之后,在
Spark
的系统目录中包含有一系列的文件和子目录内容,每
个目录都有其特定的目的和用途。
Spark
安装目录的内容结构如图所示。
