当前位置: 首页 > ai >正文

【Spark征服之路-2.1-安装部署Spark(一)】

  • 实验目标:

本节课实验将完成Spark 4种部署模式的其中2种,分别是Local、Standalone模式。

  • 实验准备工作:
  1. 三台linux虚拟机
  2. spark的压缩包
  • 实验步骤:
Spark-local

Spark的Local模式仅需要单个虚拟机节点即可,无需启动hadoop集群。实验步骤如下:

1. 将spark的安装包上传到虚拟机node01中(建议路径:/opt/software/spark)并解压缩文件。将解压文件夹重命名为spark-local

解压:tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz

重命名:mv spark-3.0.0-bin-hadoop3.2.tgz spark-local

2. 启动Local环境。进入spark-local中,执行如下命令:

bin/spark-shell

启动成功后,可以输入网址进行Web UI监控页面进行访问。(默认端口为4040)

3. 命令行工具

在解压缩文件夹下的 data 目录中,添加 word.txt 文件。

在命令行工具中执行如下代码指令。

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

4. 退出本地模式

Ctrl+C 或者输入scala命令:quit

5. 提交测试应用

在spark-local路径中输入以下指令:

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 表示程序的入口参数,用于设定当前应用的任务数量

运行结果:

Spark-standalone

Spark的独立部署模式可以类比HDFS的完全分布式安装,在这个模式中只会使用Spark自身节点来运行集群,Spark-standalone体现了经典的master-slave模式。

集群规划:

node01

node02

node03

Spark

Master  Worker

Worker

Worker

实验步骤:

1. 解压缩文件。将解压后的文件夹重命名为spark-standalone。

mv spark-3.0.0-bin-hadoop3.2 spark-standalone

在node02、node03节点上分别创建spark文件夹(路径为/opt/software/spark)

2. 修改配置文件

①进入spark-standalone的 conf 目录,修改 slaves.template文件名为 slaves

mv slaves.template slaves

②修改slaves文件,添加worker节点

vi slaves

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

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

    ④修改 spark-env.sh 文件,添加Java的环境变量和集群对应的 master 节点

    vi spark-env.sh

    ⑤分发 spark-standalone 目录(需要提前在node02、node03节点的对应路径创建spark文件夹)

    scp -r spark-standalone node02:/opt/software/spark

    scp -r spark-standalone node03:/opt/software/spark

    启动集群

    ①在spark-standalone路径下执行脚本命令

    sbin/start-all.sh

    ②查看三台节点的运行进程

    ③查看Master资源监控Web UI界面 node01:8080

    ④提交测试应用

    bin/spark-submit \

    --class org.apache.spark.examples.SparkPi \

    --master spark://node01:7077 \

    ./examples/jars/spark-examples_2.12-3.0.0.jar \

    10

    参数说明:

    1) --class 表示要执行程序的主类

    2) --master spark://node01:7077 独立部署模式,连接到 Spark 集群

    3) spark-examples_2.12-3.0.0.jar 运行类所在的 jar 包

    4) 数字 10 表示程序的入口参数,用于设定当前应用的任务数量

    执行任务时,节点会产生多个Java进程

    执行任务时,默认采用服务器集群节点的总核数,每个节点内存 1024M。

    配置历史服务

    由于 spark-shell 停止掉后,集群监控 node01:4040 页面就看不到历史任务的运行情况,所以 开发时都配置历史服务器记录任务运行情况。

    ①修改 spark-defaults.conf.template 文件名为 spark-defaults.conf

    mv spark-defaults.conf.template spark-defaults.conf

    ②修改 spark-default.conf 文件,配置日志存储路径

    注意:需要启动 hadoop 集群,HDFS 上的 directory 目录需要提前存在。

    hdfs dfs -mkdir /directory

    ③修改 spark-env.sh 文件, 添加日志配置

    export SPARK_HISTORY_OPTS="

    -Dspark.history.ui.port=18080

    -Dspark.history.fs.logDirectory=hdfs://node01:9000/directory

    -Dspark.history.retainedApplications=30"

    参数含义:

    ⚫ 参数 1 含义:WEB UI 访问的端口号为 18080

    ⚫ 参数 2 含义:指定历史服务器日志存储路径

    ⚫ 参数 3 含义:指定保存 Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。

    ④分发配置文件

    scp -r spark-defaults.conf node02:$PWD

    scp -r spark-defaults.conf node03:$PWD

    scp -r spark-env.sh node02:$PWD

    scp -r spark-env.sh node03:$PWD

    ⑤重新启动spark集群并启动历史服务

    sbin/stop-all.sh

    sbin/start-all.sh

    sbin/start-history-server.sh

    ⑥重新执行任务

    bin/spark-submit \

    --class org.apache.spark.examples.SparkPi \

    --master spark://node01:7077 \

    ./examples/jars/spark-examples_2.12-3.0.0.jar \

    10

    ⑦查看历史任务 node01:18080

    http://www.xdnf.cn/news/11877.html

    相关文章:

  1. 【Windows开发】Windows 事件跟踪 (ETW)
  2. 【conda配置深度学习环境】
  3. 机器学习的数学基础:线性模型
  4. HDFS分布式存储 zookeeper
  5. 【Spec2MP:项目管理之项目成本管理】
  6. 字节开源FlowGram:AI时代可视化工作流新利器
  7. Promtail采集服务器本地日志存储到Loki
  8. 《最长单调子序列》题集
  9. 细说C语言将格式化输出到FILE *stream流的函数fprintf、_fprintf_I、fwprintf、_fwprintf_I
  10. 轴承排列自动运行 定时器 外中断 PWM部分程序
  11. 使用 systemctl 实现程序自启动与自动重启
  12. RAG技术解析:实现高精度大语言模型知识增强
  13. 【运维实战】Rsync将一台主Web服务器上的文件和目录同步到另一台备份服务器!
  14. 数据库基础篇
  15. 文件解读|检索页(附:新版知网国内刊检索页下载方法!)
  16. cv::FileStorage用法
  17. 多线程爬虫使用代理IP指南
  18. Java面试题及答案整理( 2025年最新版,持续更新...)
  19. PARADISE:用于新生儿缺氧缺血性脑病(HIE)疾病识别与分割的个性化和区域适应性方法|文献速递-深度学习医疗AI最新文献
  20. GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术
  21. Python爬虫之数据提取
  22. JavaScript性能优化实战技术
  23. LeetCode-934. 最短的桥
  24. 【uniapp开发】picker组件的使用
  25. 二叉数-965.单值二叉数-力扣(LeetCode)
  26. JavaWeb:前端工程化-Vue
  27. 舵机在弹簧刀无人机中的作用是什么?
  28. Linux 进程调度与管理:从内核管理到调度机制的深度解析
  29. 【前端AI实践】泛谈AI在前端领域的应用场景
  30. Vue-Todo-list 案例