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

news2025/7/31 4:31:30

文章目录

  • 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=8989

export 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/394507.html

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

相关文章

人人都学会APP开发 提高就业竞争力 简单实用APP应用 安卓浏览器APP 企业内部通用APP制作 制造业通用APP

安卓从2009年开始流程于手机、平板&#xff0c;已经是不争的非常强大生产力工具&#xff0c;更为社会创造非常高的价值&#xff0c;现在已经是202X年&#xff0c;已经十几年的发展&#xff0c;安卓平台已经无所不在。因此建议人人都学学APP制作&#xff0c;简易入门&#xff0c…

JavaSe第6次笔记

1.不建议使用c语言的数组的表示方法。 2.二维数组表示方法 3.数组整体初始化时&#xff0c;只能在定义时初始化。 int[] array; array new int[]{1, 2}; 4. boolean类型数组&#xff0c;默认值是false&#xff0c;String类型数组&#xff0c;默认是null&#xff0c;其它是…

CHAPTER 2 目录及文件

目录及文件1 目录1.1 目录结构1.2 核心目录2 文件2.1 /etc/中的文件2.1.1 修改主机名(/etc/hostname)2.1.2 网卡配置文件2.1.3 开机自启动配置文件(/etc/rc.local)2.1.4 /etc/motd和/etc/issue2.2 /var/中的文件2.3 /proc/中的文件2.3.1 CPU信息(lscpu)3 文件类型3.1 类型说明3…

Golang中GC和三色屏障机制【Golang面试必考】

文章目录Go v1.3 标记—清楚(mark and sweep)方法Go V1.5 三色标记法三色标记过程无STW的问题强弱三色不变式插入写屏障Go V1.8的三色标记法混合写屏障机制混合写屏障场景场景1:对象被一个堆对象删除引用&#xff0c;成为栈对象的下游场景2:对象被一个栈对象删除引用&#xff0…

PyQt 做美*女GIF设置桌面,每天都很爱~

人生苦短&#xff0c;我用python 要说程序员工作的最大压力不是来自于工作本身&#xff0c; 而是来自于需要不断学习才能更好地完成工作&#xff0c; 因为程序员工作中面对的编程语言是在不断更新的&#xff0c; 同时还要学习熟悉其他语言来提升竞争力… 好了&#xff0c;学习…

python模块引入问题和解决方案_真方案不骗人

1.pycharm运行python脚本的过程 使用pycharm等编辑器run/debug运行python脚本时&#xff0c;编辑器会通过本地python命令全路径执行脚本&#xff0c;例如 D:\DevelopTools\Python\python.exe D:/Codes/一长串路径/bbss_nature_python/demo/test_no_param_in.py 并且会在pyth…

自动化框架如何搭建?让10年阿里自动化测试老司机帮你搞定!自动化测试脚本怎么写?

一、何为框架&#xff1f;何为自动化测试框架&#xff1f; 无论是日常技术交流&#xff0c;还是在自动化测试实践中&#xff0c;经常会听到一个词叫&#xff1a;框架。之前对“框架”这个词知其然不知其所以然。现在看过一些资料以及加上我自己的一些实践有了我自己的一些看法…

PowerJob中的Vert.x的应用,是点睛之笔还是大材小用?我感觉有点故意炫技啊

这是一篇为了参加活动写得文章&#xff0c;不知道为什么&#xff0c;写得时候网络巨差&#xff0c;我是顶着闹心发上来的&#xff0c;最后大家女神节快乐。 最近难得忙了一下&#xff0c;领导让我从Vert.x和lagom中技术选型&#xff0c;因为lagom是scala写得&#xff0c;我虽然…

2023高质量设计竞赛汇总,想证明自己实力的快来

对于设计师来说&#xff0c;参加设计比赛不仅能够提升自己的设计能力&#xff0c;也是一条证明实力最好的捷径。小编也收集整理了不少近期设计大赛&#xff0c;分别标注了截止日期和官网等&#xff0c;宝子们记得码住收藏&#xff0c;赶紧SHOW起来&#xff01;优酷X站酷 一千零…

湖南媒体资源有哪些?湖南媒体邀约怎么做?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 湖南位于中国中南部&#xff0c;以其美丽的自然风光、丰富的历史文化和独特的湖湘文化而著名&#xff0c;拥有丰富的媒体资源。以下是一些湖南省的媒体资源&#xff1a; 1.湖南日报社: …

Spark 应用调优

Spark 应用调优人数统计优化摇号次数分布优化Shuffle 常规优化数据分区合并加 Cache优化中签率的变化趋势中签率局部洞察优化倍率分析优化表信息 : apply : 申请者 : 事实表lucky : 中签者表 : 维度表两张表的 Schema ( batchNum&#xff0c;carNum ) : ( 摇号批次&#xff0c…

Java基础——Lambda表达式

一、函数式编程思想概述https://www.runoob.com/java/java8-lambda-expressions.html在数学中&#xff0c;函数就是有输入量、输出量的一套计算方案&#xff0c;也就是“拿数据做操作”面向对象强调“必须通过对象的形式来做事情”&#xff0c;做事情之前首先要创建一个对象函数…

B站游戏推广,怎样查看B站游戏推广榜数据?

近年来&#xff0c;B站发展得越来越大&#xff0c;越来越多的游戏商也加入B站进行推广&#xff0c;那么作为游戏运营商&#xff0c;怎样查看游戏在B站上的推广数据呢&#xff1f;游戏排行榜游戏商业推广榜包含视频推广榜、直播推广榜&#xff0c;按照日榜、周榜、月榜&#xff…

【Linux 网络编程1】使用UDP/TCP编写套接字,多进程/多线程版本的TCP编写的套接字,将套接字封装

目录 1.学习网络编程前的一些基础知识 2.UDP(user datagram protocol)协议的特点 3.使用有UPD编写套接字 4.使用TCP编写套接字 4.2.TCP客服端 4.3.TCP服务器端 4.4.单进程版本&#xff08;没有人会使用&#xff09; 4.5.多进程版本 4.6.多线程版本 5.把套接字封装 1…

扬帆优配|2600亿新能源巨头狂飙!外资唱多中国:再涨15%

全国停摆的危机&#xff0c;正在迫临法国。 大停工正在将法国推向风险境地。法国政府估计&#xff0c;当地时间3月7日&#xff0c;将迸发全国大型停工游行。法国总工会宣告&#xff0c;到时将让全法国停摆。法国担任交通业务的部长级代表克莱蒙博讷正告称&#xff0c;7日将成为…

JavaScript 混淆技术

根据JShaman&#xff08;JShaman是专业的JavaScript代码混淆加密网站&#xff09;提供的消息&#xff0c;JavaScript混淆技术大体有以下几种&#xff1a; 变量混淆 将带有JS代码的变量名、方法名、常量名随机变为无意义的类乱码字符串&#xff0c;降低代码可读性&#xff0c;如…

原神 Android 教程 —安卓版

准备材料 一台能读写 /system 分区的 Android 手机(或:一台安装了 Magisk 的 Android 手机) 有人搞出来免root端了,此条件不再必须私服客户端

数据同步工具Sqoop

大数据Hadoop之——数据同步工具SqoopSqoop基本原理及常用方法 1 概述 Apache Sqoop&#xff08;SQL-to-Hadoop&#xff09;项目旨在协助RDBMS&#xff08;Relational Database Management System&#xff1a;关系型数据库管理系统&#xff09;与Hadoop之间进行高效的大数据交…

HStream Console、HStreamDB 0.14 发布

近两个月&#xff0c;HStreamDB 相继发布了 0.13 和 0.14 版本&#xff0c;包含多项已知问题修复。同时&#xff0c;我们也发布了全新的 HStream Console 组件&#xff0c;为 HStreamDB 带来了简洁友好的图形化管理界面&#xff0c;将帮助用户更轻松地使用和管理 HStreamDB. H…

LinqConnect兼容性并支持Visual Studio 2022版本

LinqConnect兼容性并支持Visual Studio 2022版本 现在支持Microsoft Visual Studio 2022版本17.5预览版。 添加了Microsoft.NET 7兼容性。 共享代码-共享相同的代码&#xff0c;以便在不同的平台上处理数据。LinqConnect是一种数据库连接解决方案&#xff0c;适用于不同的基于.…