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

news2025/7/26 20:02:26

  • 实验目标:

本节课实验将完成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.coloradmin.cn/o/2400819.html

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

    相关文章

    VS代码生成工具ReSharper v2025.1——支持.NET 10和C# 14预览功能

    实质上,ReSharper特征可用于C#,VB.net,XML,Asp.net,XAML和构建脚本。 使用ReSharper,你可以进行深度代码分析,智能代码协助,实时错误代码高亮显示,解决方案范围内代码分析…

    【Godot】如何导出 Release 版本的安卓项目

    在使用 Godot 引擎开发安卓游戏或应用时,发布到应用市场(如 Google Play、华为应用市场等)通常需要生成一个 Release 版本的 .apk 包,而非 Debug 版本。本文将详细介绍如何将 Godot 项目导出为 Release 版本的安卓项目&#xff0c…

    VSCode 工作区配置文件通用模板(CMake + Ninja + MinGW/GCC 编译器 的 C++ 或 Qt 项目)

    下面是一个通用模板,适用于大多数使用 VSCode CMake Ninja MinGW/GCC 编译器 的 C 或 Qt 项目。你可以将这个 .vscode 文件夹复制到你的项目根目录下,稍作路径调整即可使用。 📁 .vscode/ 目录结构(通用模板) .vs…

    Java八股文——Redis篇

    目录 1. 缓存穿透解决方案1. 缓存空值2. 布隆过滤器(Bloom Filter)3. 参数校验4. 接口限流与验证码 2. 缓存击穿解决方案1. 设置热点数据永不过期(或很长过期时间)2. 使用互斥锁(如分布式锁)3. 利用异步更新…

    爬虫接口类型判断与表单需求识别全解析

    爬虫接口类型判断与表单需求识别全解析 在爬虫开发中,准确判断目标接口的类型以及是否需要表单提交,是实现高效、稳定爬取的关键一步。本文将通过实际案例,详细介绍如何通过浏览器开发者工具和代码验证来判断接口类型及表单需求。 一、接口…

    Chainlink:连接 Web2 与 Web3 的去中心化桥梁

    区块链技术通过智能合约实现了去中心化的自动执行,但智能合约无法直接访问链下数据,限制了其在现实世界的应用。Chainlink 作为去中心化预言机网络,以信任最小化的方式解决了这一问题,成为连接传统互联网(Web2&#xf…

    编译一个Mac M系列可以用的yuview

    做音视频的有一个神器工具YUView,具体使用和它的功能可以看:https://zhuanlan.zhihu.com/p/558580168, 这个作者讲得很清楚,但是官方只提供了intel的版本,arm版本要自己编,且依赖低版本的ffmpeg。 操作过程…

    rabbitmq Topic交换机简介

    1. Topic交换机 说明 尽管使用 direct 交换机改进了我们的系统,但是它仍然存在局限性——比方说我们的交换机绑定了多个不同的routingKey,在direct模式中虽然能做到有选择性地接收日志,但是它的选择性是单一的,就是说我的一条消息…

    网络交换机:构建高效、安全、灵活局域网的基石

    在数字化时代,网络交换机作为局域网(LAN)的核心设备,承担着数据转发、通信优化和安全防护的关键任务。其通过独特的MAC地址学习、冲突域隔离、VLAN划分等技术,显著提升了网络性能,成为企业、学校、医院等场景不可或缺的基础设施。…

    【Oracle】存储过程

    个人主页:Guiat 归属专栏:Oracle 文章目录 1. 存储过程基础概述1.1 存储过程的概念与特点1.2 存储过程的组成结构1.3 存储过程的优势 2. 基础存储过程2.1 简单存储过程2.1.1 创建第一个存储过程2.1.2 带变量的存储过程 2.2 带参数的存储过程2.2.1 输入参…

    单元测试-断言常见注解

    目录 1.断言 2.常见注解 3.依赖范围 1.断言 断言练习 package com.gdcp;import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test;//测试类 public class UserServiceTest {Testpublic void testGetGender(){UserService userService new UserService…

    TDengine 在电力行业如何使用 AI ?

    在你面前摆着一堆机器运行日志、传感器读数、电表数据,几十万、几百万条每秒增长的数据流,你会怎么处理?是加人、加脚本,还是干脆放弃实时分析? 过去,时序数据是工业的“副产品”:只是存着、查…

    OpenCV C/C++ 视频播放器 (支持调速和进度控制)

    OpenCV C/C 视频播放器 (支持调速和进度控制) 本文将引导你使用 C 和 OpenCV 库创建一个功能稍复杂的视频播放器。该播放器不仅能播放视频,还允许用户通过滑动条来调整播放速度(加速/减速)以及控制视频的播放进度。 使用opencv打开不会压缩画…

    【Linux庖丁解牛】—自定义shell的编写!

    1. 打印命令行提示符 在我们使用系统提供的shell时,每次都会打印出一行字符串,这其实就是命令行提示符,那我们自定义的shell当然也需要这一行字符串。 这一行字符串包含用户名,主机名,当前工作路径,所以&a…

    Linux运维笔记:1010实验室电脑资源规范使用指南

    文章目录 一. 检查资源使用情况,避免冲突1. 检查在线用户2. 检查 CPU 使用情况3. 检查 GPU 使用情况4. 协作建议 二. 备份重要文件和数据三. 定期清理硬盘空间四. 退出 ThinLinc 时注销,释放内存五. 校外使用时配置 VPN注意事项 总结 实验室的电脑配备了…

    【Docker 从入门到实战全攻略(二):核心概念 + 命令详解 + 部署案例】

    5. Docker Compose Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过一个 YAML 文件来配置应用服务,然后使用一个命令即可创建并启动所有服务。 基本命令 docker-compose up # 创建并启动所有服务 docker-compose down # 停止并移除容器、网络等…

    【conda配置深度学习环境】

    好的!我们从头开始配置一个基于Conda的虚拟环境,覆盖深度学习(如PyTorch)和传统机器学习(如XGBoost),并适配你的显卡(假设为NVIDIA,若为AMD请告知)。以下是完…

    力扣4.寻找两个正序数组的中位数

    文章目录 题目介绍题解 题目介绍 题解 题解链接:题解 核心思路:通过二分查找的确定分割点使左右两部分元素数量相等。 class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {int n1 nums1.length;int n2 nums2.length…