虚拟机VMware的安装
1.安装地址:VMware by Broadcom - Cloud Computing for the Enterprise
https://www.vmware.com/
2.Ubuntu 虚拟机的安装(Installation of Ubuntu virtual machine)
首先确保 Windows 的计算机上安装了 VMWare Workstation 虚拟机管理软件,且能正常创建和运行虚拟机。
(1)启动 VMWare,点击主菜单中的“文件”->“新建虚拟机”。

(2)选择典型配置,点击下一步
(3)在安装来源设置窗体,选择“安装程序光盘映像文件(iso)”,点击右侧的浏览按钮,找到
“ubuntu-20.04.4-desktop-amd64.iso”文件,然后点击下一步。
下载地址:
https://old-releases.ubuntu.com/releases/20.04.4/ubuntu-20.04.4-desktop-amd64.iso

4)在简易安装信息窗体,将全名、用户名、密码、确认等几项均设为“spark”,方便后面使用,然
后点击下一步。
5)在虚拟机命名窗体中,可以设定一下虚拟机名称或直接按默认,然后点击下一步
6)在指定磁盘容量窗体中,设定虚拟机使用的最大磁盘大小为 60GB,并选择“将虚拟磁盘存储为单个文件”,然后点击下一步。另外,虚拟机是存储为单个文件还是多个小文件,这个也可以根据自己的喜好选择,没什么实际的影响。
7)最后一步,直接点击结束,完成虚拟机的创建工作,也可以通过“自定义硬件”修改创建虚拟机
的一些默认设置,如调整 CPU 核数以及内存大小等,也可在以后的使用过程中再做调整。
8)Vmware 完成新建虚拟机后,会自动启动 Ubuntu20.04 的安装过程。
9)稍候几分钟的时间进行安装。当虚拟机安装完毕,就会出现 Ubuntu20.04 的登录界面。
10)点击登录界面中列出来的 Linux 帐户“spark”,然后输入创建虚拟机时设定的密码“spark”,按
回车键后就进入到 Ubuntu20.04 操作系统界面。Ubuntu 默认是不允许直接使用 root 帐户登录的,在涉及到一些需要 root 权限操作的场合下,就要在 Linux 命令之前添加 sudo 来获得 root 帐户操作的权限。
11)Ubuntu20.04 操作系统的初始界面如图所示,第一次启动时会相继提示几个信息的设置,包括网络在线帐号设置、更新设置、问题提交、隐私设置等,直接点击右上角的“Skip”和“Next”,直至最后一个窗体点击“Done”全部完成。

12)如果在使用过程中出现类似下面的升级提示,直接点击“Don't Upgrade”保持当前所用Ubuntu20.04版本即可。
13)整理一下 Ubuntu20.04 左侧任务栏的图标,保留最常用的几个快捷方式。方法是:找到左侧垂直的任务栏,在要隐藏的图标上点击鼠标右键,选择“Remove from Favorites”。
14)鼠标右键点击 Ubuntu20.04 桌面的中间空白位置(注意不是在应用程序图标上),选择弹出菜单中的“Open in Terminal”,启动 Linux 终端控制台窗体。
15)Linux 终端窗体启动后,在左侧任务栏的“Linux 终端”图标上点击鼠标右键,选择弹出菜单中
的“Add to Favorites”将其固定在任务栏。
16)点击 Ubuntu20.04 桌面右上角的电源图标,选择“Power Off/Log Out”下面的“Power Off”菜
单项,然后在弹出的窗体中再点击“Power Off”按钮,关闭当前虚拟机。
17)回到 Vmware Workstation,选中这里安装的 Ubuntu20.04,然后点击“编辑虚拟机设置”。
18)在虚拟机设置窗体,调整一下内存和处理器的数量,比如 4GB 内存和 2 个处理器,建议内存至少2GB 以上。

2.Ubuntu 基本配置(Basical configuration for Ubuntu)
1)打开一个 Linux 终端窗体,在其中输入下面的命令,先更新一下软件源信息并对当前已安装的软件进行升级:
2)输入下面的命令安装 openssh-server。为避免版本冲突这里先卸载 openssh-client,在安装
openssh-server 时会自动安装匹配版本的 openssh-client。

3)继续输入下面的命令来安装一下 vim,它是 vi 编辑器的增强版,比如支持用不同的颜色高亮代码的显示。一旦 vim 安装完毕,在 Linux 终端窗体输入 vi 或 vim 命令时,实际启动的就是这个 vim 增强版编辑器。
4)输入下面的命令,将 Ubuntu20.04 自带的防火墙禁用掉,避免在远程终端连接时出现问题,包括运行 Hadoop 和 Spark 时也要禁用防火墙。
5)Windows 自带的记事本是一个非常简单易用的文字编辑器,在 Ubuntu20.04 的桌面环境中也带有一个类似的图形化“Text Editor”文本编辑器,我们可以在应用程序列表中找到并将它启动起来。
在使用这个图形化的文本编辑器保存文件时,还要注意 Linux 的权限问题,如无权限的话将导致无法正常保存。此外,还可以通过 Linux 终端命令 gedit 启动编辑器,启动时也可以在前面加上 sudo 获取 root 权限,在后面加上文件名以编辑该文件

3.Vi 编辑器(Vi editor)
1)在 Linux 终端窗体中输入“vi”或“vim”命令,实际启动的都是 vim 编辑器。
3)下面是最常用的一些 Vi 编辑器分类命令,掌握好这些最基本的 Vi 编辑命令很重要。
4)对照上述 vi 编辑命令清单,按照下面的内容进行输入练习,保存到当前主目录的 hello.txt 文件。
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 命令即可退出远程登录。
此外,MobaXterm 还会将连接过的服务器信息保存在收藏栏中,双击保存的连接信息即可自动连接,或者在保存的连接信息上点击鼠标右键,选择弹出菜单中的 Edit session(编辑)、Delete session(删除)等还可以对连接信息进行管理。
1.3.2 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 核的话,一些应用程序可能就无法正常
启动,在生产环境这两个参数应去掉。
3)配置完毕,可以启动 YARN 服务相关的程序,执行过程中会分别运行 ResourceManager
和 NodeManager 这两个进程。
从 jps 命令的输出结果可以看出,YARN 集群资源管理服务已在运行。
6.HDFS 和 YARN 的测试
考虑到后续还会经常执行一些 Hadoop 的相关命令,为方便起见这里先把 Hadoop 的 bin
目录设置到 PATH 环境变量中。
1)使用 vi 编辑器修改/etc/profile 文件,在其中添加有关 Hadoop 环境变量设置。
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 管理页面,如图 1-39 所示。如果是在 Windows 的浏览器访问,则需要将网址中的 localhost 改成Ubuntu20.04 虚拟机的 IP 地址才行。

6)因为我们这里没有配置 Hadoop 中的 MapReduce 组件模块,因此 YARN 暂时还无法真 正测试,待 Spark 环境搭建完毕,到时就可以提交 Spark 应用程序到 YARN 上面运行了。
1.3.3 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 服务时所做的那样。
如果 jps命令输出的进程名中不包含 HDFS 服务的三个程序,说明HDFS 服务没有运行(比
如可能重启过虚拟机),要使用 start-dfs.sh 命令将其启动。
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 文件配置也可以):
从 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 终端继续执行下面的命令:





如果出现ln: failed to create symbolic link '/usr/bin/python': File exists报错,表明在 /usr/bin 目录下已经存在一个名为 python 的文件或符号链接,因此无法再次创建同名的符号链接。为了避免覆盖或删除系统中可能依赖的现有文件,我们需要先检查现有的 python 文件或链接
如果输出结果为lrwxrwxrwx 1 root root 16 Feb 26 06:49 /usr/bin/python -> /usr/bin/python3,可以通过sudo rm /usr/bin/python命令删除现有链接再创建新的连接
ls -l /usr/bin/python通过这个命令进行检查
3)现在可以验证 pip 和 pip3 的设置是否达到了预期目标。
【学习提示】
3)当 pip 包管理工具安装配置好之后,考虑到实际使用时需要访问网络下载软件,下
面将 pip 源改成国内镜像(如阿里云、清华镜像站点等),以加快下载速度。
当 pip 镜像源配置文件修改完毕,可以通过下面的命令进行验证是否有效:

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