文章目录
零、本讲学习目标
- 学会搭建Spark伪分布式环境
- 学会启动Spark Shell进行交互式操作
- 学会使用Spark WebUI查看运行状态
Spark单机伪分布式是在一台机器上既有Master,又有Worker进程。搭建Spark单机伪分布式环境可在Hadoop伪分布式的基础上进行搭建。
一、搭建伪分布式Hadoop
(一)登录ied虚拟机
-
利用win7虚拟机上的FinalShell登录ied虚拟机
-
本机远程桌面连接win7虚拟机【对外IP地址:192.168.177.116,私有IP地址:192.168.100】
-
虚拟机
ied
上已经安装了Spark单机版环境,单机版Spark不需要Hadoop,但是Spark伪分布式环境就需要建立在Hadoop伪分布式环境基础之上。
(二)配置免密登录
1、在ied虚拟机上生成密钥对
- 执行
ssh-keygen
命令后,一直敲回车,生成节点的公钥和私钥,生成的文件id_rsa
会自动放在/root/.ssh
目录下,然后我们可以把公钥发往远程机器或本机。
2、将生成的公钥发送到本机
- 执行命令:
ssh-copy-id root@ied
3、验证虚拟机是否能免密登录本机
- 执行命令:
ssh ied
,再执行命令:exit
(三)下载与Spark版本匹配的Hadoop安装包
- 下载链接:https://pan.baidu.com/s/1iFS66cwNcOqrlXBas-3Fxw 提取码:f1lw
(四)上传Hadoop安装包
- 将Hadoop安装包上传到虚拟机ied的
/opt
目录
(五)将Hadoop安装包解压到指定目录
- 执行命令:
tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local
(六)查看Hadoop目录
1、查看Hadoop安装目录
-
执行命令:
cd /usr/local/hadoop-2.7.7
与ll
-
bin
目录:命令脚本 -
etc/hadoop
目录:存放hadoop的配置文件 -
lib
目录:hadoop运行的依赖jar包 -
sbin
目录:存放启动和关闭hadoop等命令 -
libexec
目录:存放的也是hadoop命令,但一般不常用 -
最常用的就是bin和etc目录
2、查看Hadoop配置目录
- 勾出了Hadoop比较重要的配置文件
3、查看sbin子目录
- 勾出了启动与停止dfs和yarn服务的脚本文件
(七)配置Hadoop实现伪分布式
1、修改环境配置文件 - hadoop-env.sh
- 进入hadoop配置目录,执行命令:
vim hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_231
export HADOOP_HOME=/usr/local/hadoop-2.7.7
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
- 存盘退出,然后执行
source hadoop-env.sh
,让配置立即生效
2、修改核心配置文件 - core-site.xml
- 执行命令:
vim core-site.xml
<configuration>
<!--用来指定hdfs的老大,namenode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ied:9000</value>
</property>
<!--用来指定hadoop运行时产生文件的存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.7.7/tmp</value>
</property>
</configuration>
3、修改分布式文件系统配置文件 - hdfs-site .xml
- 执行命令:
vim hdfs-site.xml
<configuration>
<!--指定hdfs保存数据副本数量,默认值是3-->
<!--如果是伪分布模式,此值是1-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--设置hdfs的操作权限,false表示任何用户都可以在hdfs上操作文件-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
4、修改MapReduce配置文件 - mapred-site.xml
-
执行命令:
cp mapred-site.xml.template mapred-site.xml
,基于模板文件生成配置文件
-
执行命令:
vim mapred-site.xml
<configuration>
<!--指定mapreduce运行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 说明:yarn是资源协调工具,将MapReduce交给它来管理,效率更高。
5、修改yarn配置文件 - yarn-site.xml
- 执行命令:
vim yarn-site.xml
<configuration>
<!--指定yarn的老大resoucemanager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>ied</value>
</property>
<!--NodeManager获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
6、配置hadoop的环境变量
- 执行命令:
vim /etc/profile
export HADOOP_HOME=/usr/local/hadoop-2.7.7
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
- 存盘退出,执行命令
source /etc/profile
,让配置生效
(八)格式化名称节点
- 执行命令:
hdfs namenode -format
,格式化名称节点,形成可用的分布式文件系统HDFS
- 名称节点格式化成功信息
(九)启动与关闭hadoop服务
1、启动Hadoop服务
- 执行命令:
start-dfs.sh
,启动dfs服务 - 分布式存储
- 执行命令:
start-yarn.sh
,启动yarn服务 - 分布式计算
- 执行命令:
jps
,查看hadoop进程
2、停止hadoop服务
- 执行命令:
stop-dfs.sh
,停止dfs服务
- 执行命令:
stop-yarn.sh
,停止yarn服务
二、搭建伪分布式Spark
- 我们已经在单机版Spark基础上搭建了伪分布式Hadoop,下面通过Spark环境配置文件实现伪分布式Spark
(一)进入spark配置目录
- 执行命令:
cd $SPARK_HOME/conf
(二)修改环境配置文件 - spark-env.sh
- 基于环境配置文件模板生成环境配置文件
- 执行命令:
cp spark-env.sh.template spark-env.sh
- 执行命令:
vim spark-env.sh
- 存盘退出,执行命令:
source spark-env.sh
,让环境配置生效
(三)配置slaves文件
- 执行命令:
vim slaves
(伪分布式,ied既是主节点,也是从节点)
三、启动伪分布式Spark
(一)启动hadoop服务
- 执行命令:
start-dfs.sh
- 执行命令:
start-yarn.sh
(二)启动spark服务
-
执行命令:
start-master.sh
,启动spark老大 - Master
-
执行命令:
start-slaves.sh
,启动spark小弟 - Worker
-
查看进程
-
执行命令:
vim $SPARK_HOME/sbin/spark-config.sh
,添加JAVA_HOME
环境变量
-
存盘退出,执行命令:
source $SPARK_HOME/sbin/spark-config.sh
,让配置生效
-
此时,再执行命令:
start-slaves.sh
,启动spark小弟 - Worker
四、交互式Spark Shell
- 将
/home/test.txt
上传到HDFS的/input
目录
(一)scala版spark shell
-
执行命令:
spark-shell --master spark://ied:7077
-
演示词频统计
-
在
scala>
提示符后面执行:quit
,退出scala版spark shell
(二)python版spark shell
-
执行命令:
pyspark --master=local
-
演示词频统计
-
在
>>>
提示符后执行exit()
函数退出python版spark shell
五、访问Spark WebUI
(一)启动scala版spark shell
- 执行命令:
spark-shell --master spark://ied:7077
(二)访问Spark WebUI
- 访问
http://ied:4040
- 注意端口号是4040
1、关闭与禁用虚拟机ied的防火墙
- 执行命令:
systemctl stop firewalld
- 执行命令:
systemctl disable firewalld
- 执行命令:
systemctl status firewalld
,查看防火墙状态
- 关闭宿主机win7防火墙
2、配置宿主机win7的hosts文件
- 在
C:\Windows\System32\drivers\etc\hosts
文件里添加一句IP与主机名映射:192.168.1.110 ied
3、访问Spark WebUI
- 访问
http://ied:4040