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

Spark高手之路2—Spark安装配置

文章目录

  • Spark 运行环境
    • 一、Local 模式
      • 1. 下载压缩包
      • 2.上传到服务器
      • 3. 解压
      • 4. 启动 Local 环境
      • 5. 命令行工具
      • 6. 退出本地模式
      • 7. 提交应用
    • 二、Standalone 模式
      • 1. 解压
      • 2. 修改配置文件
        • 1)进入解压缩后路径的 conf 目录,复制 workers.template 文件为 workers
        • 2)修改 workers文件,添加 work 节点
        • 3)复制 spark-env.sh.template 文件名为 spark-env.sh
        • 4)修改 spark-env.sh 文件,添加 JAVA_HOME 环境变量和集群对应的 master 节点
        • 5)分发 spark-standalone 目录
      • 3. 启动集群
        • 1)执行脚本命令
        • 2)查看三台服务器运行进程
        • 3)查看 Master 资源监控 Web UI 界面:http://hadoop001:8080/
      • 4. 提交应用
      • 5. 提交参数说明
      • 6. 配置历史服务
        • 1)修改 spark-defaults.conf.template 文件名为 spark-defaults.conf
        • 2)启动 hadoop 集群
        • 3)创建 directory 文件夹
        • 4)修改 spark-default.conf 文件,配置日志存储路径
        • 5)修改 spark-env.sh 文件, 添加日志配置
        • 6)分发配置文件
        • 7)重新启动集群和历史服务
        • 8)重新执行任务
        • 9)查看历史服务:http://hadoop001:18080
      • 7. 配置高可用(HA)
        • 1)启动HDFS
        • 2)启动 Zookeeper
        • 3)修改 spark-env.sh 文件添加如下配置
        • 4)分发配置文件
        • 5)启动集群
        • 6)启动 hadoop002 的单独 Master 节点
        • 7)提交应用到高可用集群
        • 8)停止 Hadoop001的 Master 资源监控进程
        • 9)查看 Hadoop002 的 Master 资源监控 Web UI,稍等一段时间后,Hadoop002节点的 Master 状态提升为活动状态

Spark

Spark 运行环境

Spark 作为一个数据处理框架和计算引擎,被设计在所有常见的集群环境中运行, 在国内工作中主流的环境为 Yarn,不过逐渐容器式环境也慢慢流行起来。接下来,我们就分别看看不同环境下 Spark 的运行

image-20230306210116515

一、Local 模式

所谓的 Local 模式,就是不需要其他任何节点资源就可以在本地执行 Spark 代码的环境,一般用于教学,调试,演示等。

1. 下载压缩包

Spark官网

image-20230306211357288

下载 Spark 安装包

image-20230306211454448

点击下载:

image-20230306211544237

image-20230306211800346

2.上传到服务器

image-20230306212132424

3. 解压

image-20230306212229672

image-20230306212330242

4. 启动 Local 环境

1)进入解压缩后的路径,执行如下指令

bin/spark-shell

image-20230306212530074

image-20230306212701669

2)启动成功后,可以输入网址进行 Web UI 监控页面访问

image-20230306212852177

5. 命令行工具

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

image-20230306213319053

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

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

image-20230306213521318

6. 退出本地模式

按键 Ctrl+C 或输入 Scala 指令

image-20230306213702799

7. 提交应用

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.12-3.2.3.jar \
10

1) --class 表示要执行程序的主类,此处可以更换为咱们自己写的应用程序

2) --master local[2] 部署模式,默认为本地模式,数字表示分配的虚拟 CPU 核数量

3) spark-examples_2.12-3.0.0.jar 运行的应用类所在的 jar 包,实际使用时,可以设定为咱们自己打的 jar 包

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

image-20230306214645176

二、Standalone 模式

local 本地模式毕竟只是用来进行练习演示的,真实工作中还是要将应用提交到对应的集群中去执行,这里我们来看看只使用 Spark 自身节点运行的集群模式,也就是我们所谓的独立部署(Standalone)模式。Spark 的 Standalone 模式体现了经典的 master-slave 模式。
集群规划:

MasterWorker
hadoop001
hadoop002
hadoop003

1. 解压

同上

2. 修改配置文件

1)进入解压缩后路径的 conf 目录,复制 workers.template 文件为 workers

image-20230306215917854

image-20230306232353871

2)修改 workers文件,添加 work 节点

image-20230306232550518

3)复制 spark-env.sh.template 文件名为 spark-env.sh

image-20230306232705346

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

export JAVA_HOME=/export/servers/jdk1.8.0_161/
SPARK_MASTER_HOST=hadoop001
SPARK_MASTER_PORT=7077

image-20230306233039646

注意:7077 端口,相当于 hadoop3 内部通信的 8020 端口,此处的端口需要确认自己的 Hadoop 配置

5)分发 spark-standalone 目录

分发到hadoop002

image-20230306233310576

image-20230306233421249

分发到hadoop003

image-20230306233401103

image-20230306233507152

3. 启动集群

1)执行脚本命令

sbin/start-all.sh

image-20230306233900345

2)查看三台服务器运行进程

image-20230306233955759

image-20230306234009092

image-20230306234020212

3)查看 Master 资源监控 Web UI 界面:http://hadoop001:8080/

image-20230306234232891

4. 提交应用

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop001:7077 \
./examples/jars/spark-examples_2.12-3.2.3.jar \
10

image-20230306234642599

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

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

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

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

image-20230306234806316

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

image-20230306235353891

image-20230306235416310

image-20230306235447229

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

image-20230306235724923

5. 提交参数说明

在提交应用中,一般会同时一些提交参数

bin/spark-submit \
--class <main-class>
--master <master-url> \
... # other options
<application-jar> \
[application-arguments]
参数解释可选值举例
–classSpark 程序中包含主函数的类
–masterSpark 程序运行的模式(环境)模式:local[*]、spark://hadoop001:7077、Yarn
–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()方法的参数符合集群内存配置即可,具体情况具体分析。

6. 配置历史服务

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

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

image-20230307081745482

2)启动 hadoop 集群

image-20230307082239405

3)创建 directory 文件夹

image-20230307082407512

集群查看:

image-20230307082438898

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

spark.eventLog.enabled  true
spark.eventLog.dir  hdfs://hadoop001:9000/directory

image-20230307083358493

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

export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080 
-Dspark.history.fs.logDirectory=hdfs://hadoop001:9000/directory 
-Dspark.history.retainedApplications=30"

image-20230307083537647

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

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

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

6)分发配置文件

image-20230307083923550

image-20230307083957489

7)重新启动集群和历史服务

image-20230307084347136

image-20230307084429095

8)重新执行任务

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop001:7077 \
./examples/jars/spark-examples_2.12-3.2.3.jar \
10

image-20230307084706279

9)查看历史服务:http://hadoop001:18080

image-20230307084753876

7. 配置高可用(HA)

所谓的高可用是因为当前集群中的 Master 节点只有一个,所以会存在单点故障问题。所以为了解决单点故障问题,需要在集群中配置多个 Master 节点,一旦处于活动状态的 Master发生故障时,由备用 Master 提供服务,保证作业可以继续执行。这里的高可用一般采用
Zookeeper 设置

集群规划:

MasterZookeeperWorker
hadoop001
hadoop002
hadoop003

1)启动HDFS

image-20230307173632138

2)启动 Zookeeper

image-20230307171105630

image-20230307171123915

image-20230307171141919

3)修改 spark-env.sh 文件添加如下配置

注释如下内容:
#SPARK_MASTER_HOST=hadoop001
#SPARK_MASTER_PORT=7077添加如下内容:
#Master 监控页面默认访问端口为 8080,但是可能会和 Zookeeper 冲突,所以改成 8989,也可以自定义,访问 UI 监控页面时请注意
SPARK_MASTER_WEBUI_PORT=8989export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER 
-Dspark.deploy.zookeeper.url=hadoop001,hadoop002,hadoop003
-Dspark.deploy.zookeeper.dir=/spark"

image-20230307171806857

4)分发配置文件

image-20230307172225106

image-20230307172236475

5)启动集群

image-20230307172452101

6)启动 hadoop002 的单独 Master 节点

image-20230307172833908

此时 hadoop002 节点 Master 状态处于备用状态

image-20230307172933156

7)提交应用到高可用集群

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop001:7077,hadoop002:7077 \
./examples/jars/spark-examples_2.12-3.2.3.jar \
10

出现错误:

image-20230307173508836

错误原因:没有启动Hadoop集群

image-20230307173747704

8)停止 Hadoop001的 Master 资源监控进程

image-20230307173900000

9)查看 Hadoop002 的 Master 资源监控 Web UI,稍等一段时间后,Hadoop002节点的 Master 状态提升为活动状态

image-20230307173940034

相关文章:

Spark高手之路2—Spark安装配置

文章目录Spark 运行环境一、Local 模式1. 下载压缩包2.上传到服务器3. 解压4. 启动 Local 环境5. 命令行工具6. 退出本地模式7. 提交应用二、Standalone 模式1. 解压2. 修改配置文件1&#xff09;进入解压缩后路径的 conf 目录&#xff0c;复制 workers.template 文件为 worker…...

Java中对象的比较

目录元素的比较基本类型的比较引用类型的比较1. 覆写基类的equals2. 基于Comparble接口类的比较3. 基于比较器比较三种方法对比元素的比较 基本类型的比较 这里就拿整型, 字符型, 布尔型 为例: public static void main(String[] args) {int a 10;int b 20;System.out.pri…...

Python编程训练题2

1.11 有 n 盏灯&#xff0c;编号 1&#xff5e;n&#xff08;0<n<100&#xff09;。第 1 个人把所有灯打开&#xff0c;第 2 个人按下所有编号为 2 的倍数的开关&#xff08;这些灯将被关掉&#xff09;&#xff0c;第 3 个人按下所有编号为 3 的倍数的开关&#xff08;其…...

Shifu基础功能:设备管理

设备管理 deviceshifu_configmap.yaml中的telemetries表示自动测量记录传导。Shifu通过telemetries中设置的方法&#xff0c;以指定时间向设备周期性地发送请求&#xff0c;来判断设备的连接情况。如果设备出现故障或者连接出现问题&#xff0c;edgeDevice的状态将发生改变&am…...

交互:可以执行命令行的框架才是好框架

上一节课&#xff0c;我们开始把框架向工业级迭代&#xff0c;重新规划了目录&#xff0c;这一节课将对框架做更大的改动&#xff0c;让框架支持命令行工具。 第三方命令行工具库 cobra obra 不仅仅能让我们快速构建一个命令行&#xff0c;它更大的优势是能更快地组织起有许多…...

eunomia-bpf 和 wasm-bpf 项目的 3 月进展

eunomia-bpf 项目是一个开源项目&#xff0c;旨在提供一组工具&#xff0c;用于在 Linux 内核中更方便地编写和运行 eBPF 程序。在过去一个月中&#xff0c;该项目取得了一些新的进展&#xff0c;以下是这些进展的概述。 首先&#xff0c;eunomia-bpf 动态加载库进行了一些重要…...

Spring框架核心功能手写实现

文章目录概要Spring启动以及扫描流程实现基础环境搭建扫描逻辑实现bean创建的简单实现依赖注入实现BeanNameAware回调实现初始化机制模拟实现BeanPostProcessor模拟实现AOP模拟实现概要 手写Spring启动以及扫描流程手写getBean流程手写Bean生命周期流程手写依赖注入流程手写Be…...

k8s-镜像构建Flink集群Native session

一.Flink安装包下载 wget https://dlcdn.apache.org/flink/flink-1.14.6/flink-1.14.6-bin-scala_2.12.tgz 二.构建基础镜像推送私服 docker pull apache/flink:1.14.6-scala_2.12 docker tag apache/flink:1.14.6-scala_2.12 172.25.152.2:30002/dmp/flink:...

在 k8S 中搭建 SonarQube 7.4.9 版本(使用 PostgreSQL 数据库)

本文搭建的 SonarQube 版本是 7.4.9-community&#xff0c;由于在官方文档中声明 7.9 版本之后就不再支持使用 MySQL 数据库。所以此次搭建使用的数据库是 PostgreSQL 11.4 版本。 一、部署 PostgreSQL 服务 1. 创建命名空间 将 PostgreSQL 和 SonarQube 放在同一个命名空间…...

从getBean()分析BeanFactory和ApplicationContext

本文说了哪些问题: BeanFactory 是啥ApplicationContext 是啥什么时候去实例化一个 bean, BeanFactory 和 ApplicationContext 实例化 bean 都是在什么时候 一个 Bean 什么时候被初始化 任何一个 Bean, 都是在 getBean () 的时候被初始化的.BeanFactory 需要字节手动调用 getb…...

详解Redis的主从同步原理

前言 Redis为了保证服务高可用&#xff0c;其中一种实现就是主从模式&#xff0c;即一个Redis服务端作为主节点&#xff0c;若干个Redis服务端作为主节点的从节点&#xff0c;从而实现即使某个服务端不可用时&#xff0c;也不会影响Redis服务的正常使用。本篇文章将对主从模式…...

前端项目上线后,浏览器缓存未刷新问题

文章目录问题背景一、解决办法二、实现原理关于缓存强缓存协商缓存刷新页面对浏览器的影响总结问题背景 前端页面开发测试完&#xff0c;要进行上线&#xff0c;某些页面上传更新到服务器之后&#xff0c;浏览器并没有更新&#xff0c;渲染的还是老页面。这是因为浏览器读了缓存…...

Vulnhub系列:Raven 1

该篇为Vulnhub系列靶机渗透&#xff0c;本次靶机存在4个flag。下面开始我们今天的渗透之旅。Raven靶机有很多种思路&#xff0c;我将对其进行一一整理。首先进行信息收集&#xff0c;利用arp-scan和nmap&#xff0c;进行靶机的ip及端口扫描发现了22、80、111端口。下面访问80端…...

MybatisPlus------多数据源环境(十一)

MybatisPlus------多数据源环境&#xff08;十一&#xff09; 生产环境中常常会存在多个数据源。 比如读写分离、一主多从、混合模式等等。 首先再pom文件中需要引入依赖&#xff1a; 多数据源所需要使用到的依赖 <!-- 多数据源所需要使用到的依赖--><depend…...

Tomcat+IDEA+Servlet能显示页面但提交form表单出现404问题

问题&#xff1a; 当我们使用tomcat启动&#xff0c;然后输入对应的url路径时候&#xff0c;能出现该html的页面&#xff0c;但提交表单后&#xff0c;却出现了404的问题&#xff0c;这时候我就很疑惑了....然后开始慢慢分析。 思路&#xff1a; 首先我们得知道404状态码是什…...

【蓝桥杯集训16】多源汇求最短路——Floyd算法(2 / 2)

目录 Floyd求最短路模板 4074. 铁路与公路 - floyd 脑筋急转弯 Floyd求最短路模板 活动 - AcWing 题目&#xff1a; 给定一个 n 个点 m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c;边权可能为负数。 再给定 k 个询问&#xff0c;每个询问包含两个整数 x 和…...

simulink stateflow 状态机

系列文章目录 文章目录系列文章目录前言一、基操二、stateflow 数据三、chart动作四、chart的执行五、flow chart / junction六、状态机中的函数 Stateflow Functions七、chart层次结构八、案例——吸尘器机器人的驱动模式前言 一、基操 在tooltrip中选择DEBUG&#xff0c;通过…...

水库大坝安全监测的主要坝体类型介绍

水电站和水库大坝安全的分类中有重力坝、土石坝等不同的大坝形式。就在这里详细水库大坝安全监测按照建造形式&#xff0c;基本上可以分为三类&#xff1a;重力坝、土石坝和拱坝。 &#xff08;1&#xff09;重力坝 重力坝&#xff0c;顾名思义就是利用自身重力来维持坝体稳定…...

物理层概述(二)重点

目录前言编码与调制&#xff08;1&#xff09;基带信号与宽带信号编码与调制编码与调制&#xff08;2&#xff09;数字数据编码为数字信号非归零编码【NRZ】曼斯特编码差分曼彻斯特编码数字数据调制为模拟信号模拟数据如何编码为数字信号模拟数据调制为模拟信号物理层传输介质导…...

成都待慕电商:抖音极速版商品卡免佣扶持政策规则

新规&#xff0c;抖音极速版推出商品卡免佣扶持政策规则&#xff0c;本次抖音规则如何规定&#xff1f;具体往下看&#xff1a;一、政策简介1.1政策介绍为了更好地满足用户消费需求&#xff0c;丰富商家经营模式&#xff0c;降低商家经营成本&#xff0c;现平台针对商品卡场景推…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...