云计算实验2 Spark部署与运行

该博客记录《云计算及其应用》课程中的一个关于Spark的实验
使用的系统是Ubuntu 20.04.4 LTS 和OpenEuler 20.03LTS
两个系统都运行在Vmware workstation pro 16.2.1 上

一、Local 模式运行 Spark

1. 上传 spark和java压缩包

老师分享的压缩包的微信群中,下载后需要上传到虚拟机中,该模式只需要一个系统,这里我使用的是Ubuntu,上传有多种方式,

  1. vmware tools 直接拖拽
  2. 磁盘映射
  3. 打包成.iso 装载到dvd磁盘

这里我选择的是第三种,可以看一下我的这一篇博客 https://blog.csdn.net/qq_41680771/article/details/121739501?spm=1001.2014.3001.5501

2. 解压并配置环境变量

我使用的是 root 用户

我把spark压缩包放置在用户主目录下
在这里插入图片描述
(为了方便复制,我是putty和主机切换使用,所以截图背景不太统一)
解压

tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz

在这里插入图片描述
重命名

mv spark-3.0.0-bin-hadoop3.2 spark
在这里插入图片描述


jdk我没有使用老师的java8, 我自己下载了一个java11

官网下载页面 https://www.oracle.com/java/technologies/downloads/#java11

选择这个
在这里插入图片描述
下载完成后我放在了 /usr/lib/jvm/ 目录下(需要自己新建)

mkdir /usr/lib/jvm/

解压 tar -zxvf jdk-11.0.14_linux-x64_bin.tar.gz
请添加图片描述
然后配置环境变量
修改 .bashrc 文件

vim ~/.bashrc

在末尾添加如下内容

export JAVA_HOME=/usr/lib/jvm/jdk-11.0.14
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=.:${JAVA_HOME}/bin:$PATH

请添加图片描述
:wq 保存退出

重新生效该文件
sourcee ~/.bashrc

查看java版本信息
java -version
请添加图片描述

3. 启动spark shell

~/spark/bin/spark-shell

在这里插入图片描述

这时可以在浏览器中查看可视化界面
127.0.0.1:4040

scala wordcount
这时可以重新打开一个terminal,原来的被占用了
首先新建一个文件在data/目录下,可以随意写一些内容
vim word.txt

在这里插入图片描述
在这里插入图片描述

在spark shell界面

sc.textFile("~/spark/data/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

在这里插入图片描述

4. 使用 spark submit 提交

在新打开的terminal界面

~/spark/bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[2] ./examples/jars/spark-examples_2.12-3.0.0.jar 10
  1. –class 表示要执行程序的主类, 此处可以更换为咱们自己写的应用程序
  2. –master local[2] 部署模式,默认为本地模式,数字表示分配的虚拟 CPU 核数量
  3. spark-examples_2.12-3.0.0.jar 运行的应用类所在的 jar 包, 实际使用时,可以设定为咱们自己打的 jar 包
  4. 数字 10 表示程序的入口参数,用于设定当前应用的任务数量

在这里插入图片描述
在这里插入图片描述
可视化界面
在这里插入图片描述

5. 退出spark shell

:q 退出


第一部分结束



二、Standalone 模式运行 Spark

1.首先查看两台机器的ip

ifconfig
(如果报错请先安装)

Master(ubuntu)Slave(openEuler)
192.168.91.128192.168.91.129

2. 在master中解压并且配置java环境变量

由于上一部分我已经配置完毕,这里就不需要重复操作了

3. 修改配置文件

  • 进入解压缩后路径的 conf 目录,修改 slaves.template 文件名为 slaves
    mv slaves.template slaves
  • 修改 slaves 文件,添加 work 节点

192.168.91.128
192.168.91.129

在这里插入图片描述
注意!!! 这里我的两台机器都是root用户(用户名相同)
如果你的不相同
格式应该是
userName@IP

(建议使用相同用户名,防止踩坑)

  • 修改 spark-env.sh.template 文件名为 spark-env.sh

mv spark-env.sh.template spark-env.sh

  • 修改 spark-env.sh 文件,添加 JAVA_HOME 环境变量和集群对应的 master 节点
export JAVA_HOME=/usr/lib/jvm/jdk-11.0.14
export SPARK_MASTER_HOST=192.168.91.128
export SPARK_MASTER_PORT=7077

在这里插入图片描述

4. 将 spark 复制到 slave 上,同步配置环境变量

(1) ssh 连接

首先为了避免多次输入用户密码,使用ssh先实现两个系统无密码访问

先下载安装
sudo apt-get install openssh-server

使用语法如下

生成密钥 ssh-keygen -t rsa

传递密钥 ssh-copy-id -i "userName@IP"

一通回车就好
在这里插入图片描述
在这里插入图片描述
尝试连接:
在这里插入图片描述
连接成功

退出连接
在这里插入图片描述

(2)scp 传输文件

使用说明

scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径>

举例: scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下

scp work@192.168.0.10:/home/work/source.txt /home/work/ #把192.168.0.10机器上的source.txt文件拷贝到本地的/home/work目录下
scp work@192.168.0.10:/home/work/source.txt work@192.168.0.11:/home/work/ #把192.168.0.10机器上的source.txt文件拷贝到192.168.0.11机器的/home/work目录下

scp -r /home/work/sourcedir work@192.168.0.10:/home/work/ #拷贝文件夹,加-r参数
scp -r /home/work/sourcedir work@www.myhost.com:/home/work/ #使用主机名
scp -r -v /home/work/sourcedir work@www.myhost.com:/home/work/ #显示详情,加-v参数

复制spark
scp -r ~/spark/ root@192.168.91.129:~/spark/

在这里插入图片描述
复制 jdk
scp -r /usr/lib/jvm/ root@192.168.91.129:/usr/lib/jvm/

在这里插入图片描述
配置slave 中的环境变量

操作相同
在这里插入图片描述

5. 启动集群

(1) 执行脚本命令

~/spark/sbin/start-all.sh
在这里插入图片描述

(2) 使用 jps 命令查看进程

jps
在这里插入图片描述

(3) 查看 Master 资源监控 Web UI 界面

http://192.168.133.133:8080
在这里插入图片描述

(4) 使用 spark-submit 提交任务

~/spark/目录下

bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://192.168.91.128:7077  ./examples/jars/spark-examples_2.12-3.0.0.jar 10

命令参数说明

bin/spark-submit \
--class <main-class>
--master <master-url> \
... # other options
<application-jar> \
[application-arguments]
参数解释可选值举例
–classSpark 程序中包含主函数的类-------
–masterSpark 程序运行的模式(环境)local[*]、 spark://master:7077
–executor-memory 1G指定每个 executor 可用内存为 1G-------
–total-executor-cores 2指定所有 executor 使用的 cpu 核数为 2 个-------
–executor-cores指定每个 executor 使用的 cpu 核数-------
application-jar打包好的应用 jar,包含依赖。这个 URL 在集群中全局可见。 比如 hdfs:// 共享存储系统,如果是 file:// path,那么所有的节点的
path 都包含同样的 jar-------
application-arguments传给 main()方法的参数-------

运行截图:
在这里插入图片描述
在这里插入图片描述

实验结束


贴一个很好的教程

https://blog.csdn.net/Alice2O3/article/details/123980977

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值