一、 VMware虚拟机的安装
简介:VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、LINUX等系统,本章主要介绍该软件的安装。
注意事项:这一步基本没什么难点,傻瓜式跟着教程下一步即可,唯一需要注意的点就是第5步中安装路径不要包含中文,可能会造成后面莫名其妙的问题,并且要勾选对应的选项。
1、在VMware官网下载最新版,下载网址链接为:
https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html 如下图红色箭头,选择Windows版,点击立即下载
2、下载完成后运行安装包开始安装。
3、点击下一步。
4、接受许可,继续下一步。
5、选择安装路径,默认会安装在C盘,这里我将软件安装在E盘的VMware文件夹下,如下图设置后点击下一步。
注意:安装路径不可以含有中文字符
6、用户取消设置取消勾选,然后点击下一步
7、然后继续下一步
8、然后点击安装
9、等待安装
10、点击许可证
11、可以选择输入密钥以激活永久使用,或者跳过试用30天,密钥可以网上搜索或者某宝购买。
12、完成安装
二、 VMware安装Ubuntu
简介:此章节介绍在VMware中安装Ubuntu,主要步骤包括:安装镜像文件、在Vmware中导入并配置、进入系统预设
注意事项:
① 一定要牢记22步中设置的账号密码;
② 安装完毕后需要确认Ubuntu中网络连接正常,否则会影响后续步骤;
③ 29步中的常用命令建议熟知,方便后续操作;
④ 第30步实现虚拟机与本机文件传输建议一定要实现,不然后续传输文件会很麻烦,网上也有很多其他方法也可采用,可自行百度。
1、 首先需要下载Ubuntu镜像,下载网址链接为:https://ubuntu.com/download/desktop
2、 进入上面的页面后点击download下载
3、 镜像文件下载完成
4、找到桌面的VMware,右键以管理员身份运行
5、打开后,点击创建新的虚拟机
6、选择典型,然后下一步
7、这里选择稍后安装操作系统,然后下一步
8、然后选择Linux操作系统、版本选择Ubuntu 64位,然后下一步
9、更改虚拟机路径,默认会在C盘下,建议修改,不要使用中文路径,这里我选择放在E盘下,然后下一步
10、这里按默认的设置即可,然后下一步
11、这里点击自定义硬件
12、内存、处理器的设置根据自身电脑的实际性能进行设置,(建议内存2GB以上,电脑配置好的,内存大小、处理器数量可以上调)
13、然后选择CD/DVD(STAT),在右边选择使用ISO映像文件,点击浏览选择之前下载好的Ubuntu镜像文件(之前的第3步)
14、其余设置默认即可,网络适配器选择NAT,检查确定无误后,点击右下角关闭
15、这里直接点击完成
16、开启虚拟机,然后稍等片刻,等待加载
17、进到下边这个界面后,选择中文(简体)、点击安装Ubuntu
18、键盘布局均选择Chinese,然后继续。(这里可能会因为窗口过小而无法显示下面选项,可以用Tab键进行选择或者先暂时退出,在桌面鼠标右键选择显示设置,然后修改成合适的分辨率后,再次启动桌面的Ubuntu安装程序)
19、选择正常安装、安装Ubuntu时下载更新,然后继续
20、如下图设置,然后选择现在安装
然后依旧点击继续
21、然后选择地点,Shanghai,然后继续
22、设置用户名和密码,注意:请牢记自己的密码!设置完成后继续
23、然后等待安装,时间较长,耐心等待……
24、安装完成后点击现在重启
25、这里输入刚才设置的密码
26、显示如下界面表示安装Ubuntu成功
27、可以点击最左上角浏览器查看网络连接是否正常
28、至此,在VMware下安装Ubuntu就完成了
29、Linux常用命令介绍
cd / 切换到根目录
cd /usr 切换到根目录下的usr目录
cd …/ 切换到上一级或者cd …
cd ~ 切换到home目录
ls 查看当前目录下所有目录和文件
mkdir aaa 在当前目录下创建一个名为aaa的目录
mkdir /usr/aaa 在指定目录/usr下创建一个名为aaa的目录
rm -rf aaa 递归删除当前目录下的aaa目录(不询问)
mv aaa bbb 将aaa重命名为bbb
tar -zxvf test.tar.gz 将名为test的解压包解压到当前目录下
Sudo sudo是为所有想使用root权限的普通用户设计的。可以让普通用户具有临时使用root权限的权利。只需输入自己账户的密码即可。
cat sudo.conf 使用cat查看sudo.conf文件,只能显示最后一屏内容
30、如何实现虚拟机和本地主机的文件共享
1、通过安装VMware tools可以实现宿主机和虚拟机之间的文件共享以及文本粘贴复制
以往提取的那种安装方式比较麻烦,而且容易出错,这里介绍另一种方法:(一定要联网环境下)
首先鼠标右键桌面打开终端,输入以下命令,先更新apt:
sudo apt-get upgrade
2、更新完成后执行下面命令,然后等待下载安装
sudo apt-get install open-vm-tools-desktop -y
3、最后执行如下命令重启
sudo reboot
4、 如下图,重启完成后就可以通过拖拽将本地宿主机内的文件复制到虚拟机内了,也可以自由粘贴复制文本到虚拟机。
三、 Hadoop安装与配置教程
简介:在正式安装spark前需要先进行Hadoop的安装与配置,主要步骤包括: 新建新用户、安装vim编辑器、安装SSH server、安装jdk并配置环境变量、安装hadoop。
注意事项:
① 安装完vim后建议大致看一下文档中所介绍的vim基本操作,后边步骤会频繁用到;
② 安装SSH server、jdk、配置环境变量时要验证每步最后的验证现象是否与文档中的一致,若有问题需要先排除,否则后边步骤无法进行;
③ Jdk版本的选取建议和本教程一致,jdk1.8版本即可;
④ 第35步中后半部分主要在介绍针对常见错误的解决方式,若35步执行过程正常不需要执行这一部分,请注意区分。
1、 首先需要创建一个名为hadoop的用户,打开终端窗口(按ctrl+alt+t或者鼠标右键点击在终端中打开),输入以下命令创建新用户:
sudo useradd -m hadoop -s /bin/bash
会提示你输入当前用户的密码(第二节第22步中设置的),输入即可。
注意:在Linux的终端中输入密码,终端是不会显示任何你当前输入的密码,也不会提示你已经输入了多少字符密码。
2、 接着使用如下命令设置此用户密码:sudo passwd hadoop
3、 可为 hadoop 用户增加管理员权限,方便部署,避免一些权限问题,在终端中输入命令:sudo adduser hadoop sudo
4、最后注销当前用户(点击屏幕右上角的标志,选择注销),返回登陆界面。在登陆界面中选择刚创建的 hadoop 用户进行登陆。
5、用 hadoop 用户登录后,我们先更新一下 apt(如果之前安装VMware tools时已经更新了这一步可以跳过),后续我们使用 apt 安装软件,如果没更新可能有一些软件安装不了。按 ctrl+alt+t 打开终端窗口,执行如下命令:
sudo apt-get update
6、 后续需要修改一些配置文件,建议安装一下vim(一款Linux系统上的文本编辑器,可以理解为Linux版的记事本),在终端中输入如下命令:
sudo apt-get install vim
安装过程中需要确认,在提示处输入Y即可,然后稍等片刻等待安装即可。
这里介绍一下vim的简单常用操作:
① :首先创建一个名为a.txt的文本,并用vim打开,在终端中输入命令: vim a.txt
② :进到下面这个界面后按一下i键即可进入插入模式(此时左下角会显示插入),然后便可以自由输入信息了
③ :这里我们输入hfut后如果想保存并退出,需要先按一下Esc键退出插入模式,然后输入冒号键:,接着输入x,最后回车即可保存退出。
7、 介绍完vim的操作,继续回到Hadoop的安装上来,集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH serve,在终端中输入以下命令:
sudo apt-get install openssh-server
安装过程中需要输入Y以继续
8、 安装完成后,可以使用以下命令登陆本机:
ssh localhost
9、此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入用户hadoop的密码,这样就登陆到本机了。
9、 但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。
首先需要先退出刚才的ssh localhost,在终端中输入命令:exit
10、然后输入命令:cd ~/.ssh/
11、然后输入命令:ssh-keygen -t rsa
会遇到提示,都按回车即可
12、然后输入命令:cat ./id_rsa.pub >> ./authorized_keys
13、此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了,如下图所示
接着在输入退出登录的命令继续进行之后的操作:
Exit
14、然后需要java环境,这里选择安装JDK1.8,我们已经把JDK1.8的安装包jdk-8u162-linux-x64.tar.gz放在本文档的同文件夹下,请自行下载。然后将该安装包从本地主机共享给虚拟机,关于如何在虚拟机和本地主机间进行文件共享见第二节第30步
然后将安装包放到主目录下,如图
15、然后创建/usr/lib/jvm目录用来存放JDK文件
先在终端中输入以下命令进入到对应路径下:
cd /usr/lib
16、然后输入以下命令创建一个名为jvm的文件夹
sudo mkdir jvm
17、然后输入以下命令回到主文件夹:
cd ~
18、然后执行如下命令将JDK安装包解压到/usr/lib/jvm目录下:
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C/usr/lib/jvm
19、进入/usr/lib/jvm目录下查看,已经有一个jdk1.8.0_162文件,即成功
20、继续执行如下命令,设置环境变量
cd ~
vim ~/.bashrc
21、上面命令使用vim编辑器打开了hadoop这个用户的环境变量配置文件,请在这个文件的开头位置,添加如下几行内容:(如何使用vim编辑器见第三节步骤6)
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME={JAVA_HOME}/lib:{JAVA_HOME}/bin:$PATH
22、然后保存并退出vim编辑器,然后执行如下命令让.bashrc文件的配置立即生效
source ~/.bashrc
23、接着可以使用如下指令查看jdk是否安装成功:
java -version
若出现返回如下信息,则说明安装成功
24、接着开始安装Hadoop,同样Hadoop的安装包已经放在本文档的文件夹内,将其下载到本地主机然后共享到虚拟机内即可,关于如何在本地主机和虚拟机之间传输文件见第二节步骤30,这里我们将安装包放在虚拟机中的主目录下
25、然后执行如下命令将hadoop-3.3.1.tar.gz压缩包解压到路径/usr/local下
sudo tar -zxvf ./hadoop-3.3.1.tar.gz -C /usr/local
然后通过命令:
cd /usr/local/
ls
这两条命令查看该路径下是否有hadoop-3.3.1这个文件夹
26、然后通过如下命令将此文件夹重命名为hadoop
sudo mv ./ hadoop-3.3.1/ ./hadoop
可以看到已经重命名
27、然后通过如下命令,修改文件权限
sudo chown -R hadoop ./hadoop
28、输入如下两条命令来检查 Hadoop 是否可用,成功的话则会显示 Hadoop 版本信息,如下图:
cd /usr/local/hadoop
./bin/hadoop version
29、Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。现在我们可以执行例子来感受下 Hadoop 的运行。运行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。
在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。
首先输入如下两条命令,在路径/usr/local/hadoop下新建一个名为input的文件夹
cd /usr/local/hadoop
mkdir ./input
30、然后输入下面两条命令,将配置文件作为输入文件
cp ./etc/hadoop/*.xml ./input
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep ./input ./output ‘dfs[a-z.]+’
31、然后输入下面命令查看运行结果
cat ./output/*
执行成功后如下所示,输出了作业的相关信息,输出的结果是符合正则的单词 dfsadmin 出现了1次
注意,Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output 删除,即执行如下命令才可以再此运行上述程序
rm -r ./output
32、Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
首先输入如下命令进入到/usr/local/hadoop路径下
cd /usr/local/hadoop
然后修改配置文件core-site.xml,输入如下命令:
gedit ./etc/hadoop/core-site.xml
33、然后将其中的最后两行:
修改为:
hadoop.tmp.dir
file:/usr/local/hadoop/tmp
Abase for other temporary directories.
fs.defaultFS
hdfs://localhost:9000
然后保存并退出
34、接着用同样的方法修改配置文件hdfs-site.xml,输入如下命令
gedit ./etc/hadoop/hdfs-site.xml
然后将其中的最后两行:
修改为:
dfs.replication
1
dfs.namenode.name.dir
file:/usr/local/hadoop/tmp/dfs/name
dfs.datanode.data.dir
file:/usr/local/hadoop/tmp/dfs/data
然后保存并退出
35、配置完成后,执行 NameNode 的格式化,执行下面两条命令:
cd /usr/local/hadoop (先进入到对应路径下)
./bin/hdfs namenode -format
成功的话,会返回一大串信息,其中会有一行看到 “successfully formatted” 的提示,如图
若无法正常格式化NameNode,出现如下情况:
解决方法:
输入下列命令,进入sbin路径下
cd /usr/local/hadoop/sbin
然后输入命令,启动各个namenode上的 JournalNode进程
./hadoop-daemon.sh start journalnode
接着输入命令
cd /usr/local/hadoop/bin
完成上述命令后,再次格式化即可
./hadoop namenode -format
如果在这一步或者下一步时提示 Error: JAVA_HOME is not set and could not be found. 的错误,则说明之前设置 JAVA_HOME 环境变量那边就没设置好,请按教程先设置好 JAVA_HOME 变量,否则后面的过程都是进行不下去的。如果已经按照前面教程在.bashrc文件中设置了JAVA_HOME,还是出现 Error: JAVA_HOME is not set and could not be found. 的错误,那么,请到hadoop的安装目录修改配置文件“/usr/local/hadoop/etc/hadoop/hadoop-env.sh”,在里面找到“export JAVA_HOME=${JAVA_HOME}”这行,然后,把它修改成JAVA安装路径的具体地址,比如,“export JAVA_HOME=/usr/lib/jvm/default-java”,然后,再次启动Hadoop。
36、接着开启 NameNode 和 DataNode 守护进程,输入如下两条命令
cd /usr/local/hadoop
./sbin/start-dfs.sh
启动完成后,可以通过命令
jps
来判断是否成功启动,若成功启动则会列出如下进程:
37、成功启动后,可以访问 Web 界面 http://localhost:9870 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。
38、下面开始运行Hadoop伪分布式实例,上面的单机模式,grep 例子读取的是本地数据,伪分布式读取的则是 HDFS 上的数据。要使用 HDFS,首先需要在 HDFS 中创建用户目录,首先执行如下命令:
./bin/hdfs dfs -mkdir -p /user/hadoop
39、接着将 ./etc/hadoop 中的 xml 文件作为输入文件复制到分布式文件系统中,即将 /usr/local/hadoop/etc/hadoop 复制到分布式文件系统中的 /user/hadoop/input 中。我们使用的是 hadoop 用户,并且已创建相应的用户目录 /user/hadoop ,因此在命令中就可以使用相对路径如 input,其对应的绝对路径就是 /user/hadoop/input:
输入以下命令:
./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input
40、 复制完成后,可以通过如下命令查看文件列表:
./bin/hdfs dfs -ls input
41、伪分布式运行 MapReduce 作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件(可以将单机步骤中创建的本地 input 文件夹,输出结果 output 文件夹都删掉来验证这一点)。
执行以下命令以运行程序:
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep input output ‘dfs[a-z.]+’
41、 执行如下命令,查看运行结果的命令(查看的是位于 HDFS 中的输出结果):
./bin/hdfs dfs -cat output/*
结果如下,注意到刚才我们已经更改了配置文件,所以运行结果不同。
42、 我们也可以执行下面命令将运行结果取回到本地
rm -r ./output (先删除本地的 output 文件夹(如果存在))
./bin/hdfs dfs -get output ./output (将 HDFS 上的 output 文件夹拷贝到本机)
cat ./output/*
43、 若要关闭 Hadoop,则运行
./sbin/stop-dfs.sh
44、 下次启动 hadoop 时,无需进行 NameNode 的初始化,只需要运行
./sbin/start-dfs.sh
就可以。
至此,Hadoop的安装与所有配置就完成了!
四、 Spark的安装与配置(本地模式)
简介:本章节是在之前的基础上安装本地版spark,主要步骤包括:spark的下载、安装并配置相关信息、最终测试并验证
注意事项:
① 务必保证第三步中的Hadoop已经安装无误方可进行此章节步骤;
② 下载时注意spark版本及类型,建议选择和本教程相同的版本。
1、 在Ubuntu中打开浏览器,访问以下链接:http://spark.apache.org/downloads.html
按照如下图下载
2、下载的文件,默认会被浏览器保存在“/home/hadoop/下载”目录下
2、 Spark部署模式主要有四种:Local模式(单机模式)、Standalone模式(使用Spark自带的简单集群管理器)、YARN模式(使用YARN作为集群管理器)和Mesos模式(使用Mesos作为集群管理器)。
3、 这里介绍Local模式(单机模式)的 Spark安装。我们选择Spark 3.2.0版本,并且假设当前使用用户名hadoop登录了Linux操作系统。
首先在终端中执行如下命令,将刚才下载的压缩包解压到路径/usr/local下:
sudo tar -zxf ~/下载/spark-3.2.0-bin-without-hadoop.tgz -C /usr/local/
4、 然后执行如下命令,将解压后的文件夹重命名为spark
cd /usr/local (先进入对应路径下)
sudo mv ./ spark-3.2.0-bin-without-hadoop/ ./spark (重命名)
5、 还需要执行下面命令,修改文件权限
sudo chown -R hadoop:hadoop ./spark (这里的hadoop就是你的用户名)
6、 安装后,还需要修改spark的配置文件spark-env.sh,执行如下命令
cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
7、 执行下面命令,编辑spark-env.sh文件:
vim ./conf/spark-env.sh
在第一行添加以下配置信息:
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
修改完成后保存退出
7、有了上面的配置信息以后,Spark就可以把数据存储到Hadoop分布式文件系统HDFS中,也可以从HDFS中读取数据。如果没有配置上面信息,Spark就只能读写本地数据,无法读写HDFS数据。
然后通过如下命令,修改环境变量
vim ~/.bashrc
在.bashrc文件中添加如下内容:
export HADOOP_HOME=/usr/local/hadoop
export SPARK_HOME=/usr/local/spark
export PYTHONPATH=SPARK_HOME/python/lib/py4j-0.10.9.2-src.zip:HADOOP_HOME/bin:PATH
8、接着还需要让该环境变量生效,执行如下代码:
source ~/.bashrc
9、 配置完成后就可以直接使用,不需要像Hadoop运行启动命令。通过运行Spark自带的 示例,验证Spark是否安装成功。
cd /usr/local/spark
bin/run-example SparkPi
10、执行时会输出非常多的运行信息,输出结果不容易找到,可以通过 grep 命令进行过滤(命令中的 2>&1 可以将所有的信息都输出到 stdout 中,否则由于输出日志的性质,还是会输出到屏幕中):
bin/run-example SparkPi 2>&1 | grep “Pi is”
运行结果如下图:
11、学习Spark程序开发,建议首先通过pyspark交互式学习,加深Spark程序开发的理解。这里介绍pyspark 的基本使用。pyspark提供了简单的方式来学习 API,并且提供了交互的方式来分析数据。你可以输入一条语句,pyspark会立即执行语句并返回结果,这就是我们所说的REPL(Read-Eval-Print Loop,交互式解释器),为我们提供了交互式执行环境,表达式计算完成就会输出结果,而不必等到整个程序运行完毕,因此可即时查看中间结果,并对程序进行修改,这样可以在很大程度上提升开发效率。
因为我们之前已经设置了PYSPARK_PYTHON环境变量,因此直接使用如下命令启动pyspark即可。
bin/pyspark
12、现在,你就可以在里面输入python代码进行调试了。比如,下面在命令提示符后面输入一个表达式“3*7”,然后回车,就会立即得到结果:
13、最后,可以使用命令“exit()”退出pyspark,如下所示:
或者,也可以直接使用“Ctrl+D”组合键,退出pyspark。
14、接着我们通过一个简单的应用程序来演示如何通过 Spark API 编写一个独立应用程序。使用 Python进行spark编程比Java和Scala简单得多。在进行Python编程前,请先确定是否已经.bashrc中添加PYTHONPATH环境变量。接下来即可进行Python编程.
这里在新建一个test.py文件,并在test.py添加代码
cd ~
vim test.py
15、在test.py中添加如下代码,:
from pyspark import SparkContext
sc = SparkContext( ‘local’, ‘test’)
logFile = “file:///usr/local/spark/README.md”
logData = sc.textFile(logFile, 2).cache()
numAs = logData.filter(lambda line: ‘a’ in line).count()
numBs = logData.filter(lambda line: ‘b’ in line).count()
print(‘Lines with a: %s, Lines with b: %s’ % (numAs, numBs))
16、保存代码后,通过如下命令执行:
python3 ~/test.py
hadoop@heziyi-ZenBook-UX425IA-U4700IA:/usr/local/spark$ python3 test.py
2022-11-17 10:02:01,633 WARN util.Utils: Your hostname, heziyi-ZenBook-UX425IA-U4700IA resolves to a loopback address: 127.0.1.1; using 192.168.1.110 instead (on interface wlp1s0)
2022-11-17 10:02:01,634 WARN util.Utils: Set SPARK_LOCAL_IP if you need to bind to another address
Setting default log level to “WARN”.
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
2022-11-17 10:02:02,345 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
/usr/local/spark/python/pyspark/context.py:238: FutureWarning: Python 3.6 support is deprecated in Spark 3.2.
FutureWarning
Lines with a:65, Lines with b: 33
17、至此,Spark的安装工作也就完成了!
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net