《PySpark大数据分析实战》-10.独立集群模式的代码运行

news2024/12/27 12:02:38

📋 博主简介

  • 💖 作者简介:大家好,我是wux_labs。😜
    热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。
    通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP)、TiDB数据库认证SQL开发专家(PCSD)认证。
    通过了微软Azure开发人员、Azure数据工程师、Azure解决方案架构师专家认证。
    对大数据技术栈Hadoop、Hive、Spark、Kafka等有深入研究,对Databricks的使用有丰富的经验。
  • 📝 个人主页:wux_labs,如果您对我还算满意,请关注一下吧~🔥
  • 📝 个人社区:数据科学社区,如果您是数据科学爱好者,一起来交流吧~🔥
  • 🎉 请支持我:欢迎大家 点赞👍+收藏⭐️+吐槽📝,您的支持是我持续创作的动力~🔥

《PySpark大数据分析实战》-10.独立集群模式的代码运行

  • 《PySpark大数据分析实战》-10.独立集群模式的代码运行
    • 前言
    • 使用spark-submit提交代码
    • Spark History Server历史服务
    • 独立集群模式的代码运行流程
    • 结束语

《PySpark大数据分析实战》-10.独立集群模式的代码运行

前言

大家好!今天为大家分享的是《PySpark大数据分析实战》第2章第3节的内容:独立集群模式的代码运行。

使用spark-submit提交代码

spark-submit可以在不指定选项和参数、仅指定Python代码路径的情况下正常运行,但是这种方式提交运行,Spark应用程序仅会在单机上运行,这与本地模式一致。这种方式没有充分利用集群的资源,并且在集群的Spark Master Web UI上也无法查看提交运行的Spark应用程序。要充分利用集群资源并在Spark Master Web UI上看到提交的Spark应用程序,需要为spark-submit指定必要的选项,其中最重要的一个选项是master。未指定该选项,则Spark默认以本地模式启动,本地模式也是可以指定master选项的,可选的master值包括local、local[n]、local[*]。在独立集群模式下,需要将master的值指定为Spark Master Web UI中看到的值spark://node1:7077。在YARN模式下,需要将master的值指定为yarn。master选项的一些可选值列表见表。

master选项值描述
local本地模式运行,所有计算都在一个线程中,无法并行计算
local[n]本地模式运行,指定使用n个线程来模拟n个worker,通常将n指定为CPU的核数,以最大化利用CPU的能力
local[*]本地运行模式,直接使用CPU的最多核数来设置线程数
spark://node1:7077独立集群模式,指定为独立集群的master地址
yarnSpark on YARN模式,master固定值为yarn,可区分cluster模式和client模式

由于spark-submit所在的路径$SPARK_HOME/bin/已经添加到环境变量$PATH里面,所以可以直接执行命令,指定master选项后提交Spark应用程序,命令如下:

$ spark-submit --master spark://node1:7077 /home/hadoop/WordCount.py

除了master选项,spark-submit还支持其他一些选项:

  • –deploy-mode,用于决定Spark应用程序的Driver在哪里启动,使用client指定Driver在本地启动,使用cluster指定在集群中的一台服务器上启动Driver。默认值是client。
  • –name,指定Spark应用程序的名称。
  • –files,使用逗号分隔的文件列表,用于向集群提交文件,可以传递用于应用程序中使用的参数等。
  • –conf,通过命令行动态地更改应用程序的配置。
  • –driver-memory,指定为应用程序的Driver分配的内存大小。
  • –executor-memory,指定为应用程序的每个Executor分配的内存大小。

Spark应用程序在运行的过程中,会遇到报错的情况,这是由于words.txt文件是存放在本地文件系统的而不是HDFS上,Spark应用程序在执行的时候会去本地系统读取文件,而words.txt仅存在于node1上,在node2和node3上并不存在,所以node2和node3上分配到的executor在进行文件读取的时候就会报错。而文件上传到HDFS则不会有这个问题。错误信息如下:

...
(10.0.0.7 executor 2): java.io.FileNotFoundException: File file:/home/hadoop/words.txt does not exist
...
(10.0.0.6 executor 1): java.io.FileNotFoundException: File file:/home/hadoop/words.txt does not exist
...

将words.txt复制到所有服务器节点后再次运行Spark应用程序,程序就不会报错,可以正确运行并成功输出结果。复制文件到所有节点的命令如下:

$ scp words.txt node2:~/
$ scp words.txt node3:~/

程序运行完成后,在Spark Master Web UI可以看到应用程序的Job信息,两次运行的应用程序如图所示。

点击应用程序链接,可以看到应用程序运行情况如图所示。在该列表中点击stdout和stderr链接可以查看日志信息。

Spark History Server历史服务

Spark应用程序运行结束后,Spark Driver Web UI随着Driver程序的结束而被关闭,此时要看应用程序的执行情况及日志信息,可以通过Spark History Server进行查看,Spark History Server的默认服务端口是18080,通过浏览器访问node1的该端口打开Spark History Server界面,可以看到两次运行结束的应用程序,如图所示。

点击应用程序列表中的链接,会跳转到应用程序的执行情况界面,如图所示。历史应用程序执行情况界面,与Spark Driver Web UI界面一致,功能也一样。

独立集群模式的代码运行流程

使用spark-submit提交Spark应用程序到独立集群进行运行,应用程序的执行流程如图所示。

:在Spark集群启动后,不管集群中是否有提交Spark应用程序运行,Worker节点都会向Master节点汇报自己的资源情况,例如空闲CPU、空闲内存等。

1:客户端通过spark-submit提交应用程序运行,首先会执行程序中的main()函数,在客户端启动Driver进程。

2:Driver进程启动后,会实例化SparkContext,SparkContext会向集群的Master注册并申请资源。

3:Master会根据Worker的资源情况,分配满足条件的Worker节点,Worker节点上会启动Executor。

4:Executor启动后,会反向注册到Driver。

5:Executor反向注册完成后,Driver将应用程序代码进行解析,并由Task Scheduler将Task分配到Worker节点并最终由Executor进行执行。

6:Executor执行Task任务,并向SparkContext汇报状态,直到Task执行完成。

7:当所有的Task都执行完成,SparkContext会请求Master进行注销,整个应用程序运行完成。

结束语

好了,感谢大家的关注,今天就分享到这里了,更多详细内容,请阅读原书或持续关注专栏。

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

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

相关文章

03. 医院设置_后端

1、Swagger2 测试工具 编写和维护接口文档是每个程序员的职责,根据Swagger2可以快速帮助我们编写最新的API接口文档,再也不用担心开会前仍忙于整理各种资料了,间接提升了团队开发的沟通效率。 swagger通过注解表明该接口会生成文档&#xf…

CSC公派研究生项目|电气工程在读博士谈丹麦奥尔堡大学联培体会

2023年已近兔尾,很多人已经开始新一年的规划,对于国内在读博士而言,申请国家留学基金委(CSC)公派研究生项目也开始列入议事日程,然而,如何申请?在国外学习收获如何?本篇知…

IDEA小技巧

目录 1. IDEA自动添加注释 创建类的时候自动添加注释 创建函数、方法的注释 1. IDEA自动添加注释 参考文档:idea java 自动添加文件注释 idea新建类自动注释_mob6454cc73c728的技术博客_51CTO博客 【操作工具】IDEA创建类及已有类添加注释-详细操作_idea设置创建…

【状态机FSM 序列检测 饮料机_2023.12.1】

同步状态机 概念 同步状态机(同一脉冲边沿触发):有限个离散状态及某状之间的转移 异步状态机无法综合 分类 Moore状态机 只和状态有关,与输入无关 Mealy状态机 和状态和输入都有关 Mealy型比Moore型少一个状态 结构 由状态寄…

AI日报:OpenAI向新用户重新开放ChatGPT Plus订阅

欢迎订阅专栏 《AI日报》 获取人工智能邻域最新资讯 文章目录 总览Chatgptplus重新开放订阅#暂停原因功能 OpenAI的1000万美元安全人工智能拨款拨款初衷学术捐赠 总览 ChatGPT Plus再次向新用户开放,但目前每三小时限制发送40条消息。 OpenAI还宣布拨款1000万美元…

喜报!Coremail荣获2023信创“大比武”优秀生态融合奖

近期,2023信创“大比武”金融业务创新应用赛道(简称金融赛道)活动正式落下帷幕。经过赛程的层层考核,中泰证券股份有限公司(简称“中泰证券”)与Coremail联合组成的“中泰证券CACTER邮件安全保卫队”最终在…

Linux篇:信号

一、信号的概念: ①进程必须识别能够处理信号,信号没有产生,也要具备处理信号的能力---信号的处理能力属于进程内置功能的一部分 ②进程即便是没有收到信号,也能知道哪些信号该怎么处理。 ③当进程真的受到了一个具体的信号的时候…

2021实战面试

1、Rem , em , px , % , vw 之间的区别 PX: px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。 em: 1,子元素字体大小的em是相对于父元素字体大小 2,元素的width/height/padding/margin用em的话是相对于该元素的font-size rem:1rem是…

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针测试

目录 前言 Tessy 如何进行打桩操作 普通桩 高级桩 手写桩 Tessy单元测试之指针相关测试注意事项 有类型的指针(非函数指针): 有类型的函数指针: void 类型的指针: 结语 前言 进行单元测试之后,但凡…

免费且强大卸载软件工具-Geek Uninstaller

Geek Uninstaller是一款用于Windows操作系统的免费卸载软件。它提供了一种比Windows内置卸载工具更彻底的卸载程序的方法。界面简单没有广告,操作也十分的简单。 特点 完全的程序卸载:Geek Uninstaller 被设计为彻底卸载程序,包括删除剩余…

YOLOv8改进《目标对象计数》多任务实验:深度集成版来了!支持自定义数据集训练自定义模型

💡该教程为改进YOLO专栏,属于《芒果书》📚系列,包含大量的原创改进方式🚀 💡🚀🚀🚀内含改进源代码 按步骤操作运行改进后的代码即可💡更方便的统计更多实验数据,方便写作 YOLOv8改进《目标对象计数》多任务实验:深度集成版来了!支持自定义数据集训练自定…

springboot发送邮件,内容使用thymeleaf模板引擎排版

springboot发送邮件,内容使用thymeleaf模板引擎排版 1、导入jar包2、yml设置3、收件人以及收件信息设置4、发邮件service5、模版页面6、controller 1、导入jar包 <!--发送邮件--><dependency><groupId>org.springframework.boot</groupId><artifac…

使用Axure RP结合内网穿透工具制作本地静态web页面并实现公网访问

作者简介&#xff1a; 懒大王敲代码&#xff0c;正在学习嵌入式方向有关课程stm32&#xff0c;网络编程&#xff0c;数据结构C/C等 今天给大家讲解使用Axure RP结合内网穿透工具制作本地静态web页面并实现公网访问&#xff0c;希望大家能觉得实用&#xff01; 欢迎大家点赞 &am…

订单系统设计-状态机

1. 状态机 1.1 状态机简介 状态机是有限状态自动机的简称&#xff0c;是现实事物运行规则抽象而成的一个数学模型。 有限状态机一般都有以下特点&#xff1a; 可以用状态来描述事物&#xff0c;并且任一时刻&#xff0c;事物总是处于一种状态&#xff1b;事物拥有的状态总数…

线程安全集合类

文章目录 1. ConcurrentHashMap2. LinkedBlockingQueue 阻塞队列3. ConcurrentLinkedQueue4. CopyOnWriteArrayList JDK1.7 hashmap采用数组加链表头插的方式&#xff0c;在扩容时会出现循环死链问题&#xff0c;A->B->C扩容后C->B->A AB BA出现循环死链。 1. Conc…

Dockerfile的介绍和使用

什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerf…

【Monitor, Maintenance Operation, Script code/prgramme】

Summary of M,M&O,Program JD) Monitor & M&O Symbio信必优) Job chance/opportunities on Dec 12th, 20231.1) Content 招聘JD job description:1.2) suggestions from Ms Liang/Winnie on Wechat app1.3) Java微服务是什么&#xff1f;1.3.1) [URL Java 微服务](…

yarn系统架构与安装

1.1 YARN系统架构 YARN的基本思想是将资源管理和作业调度/监视功能划分为单独的守护进程。其思想是拥有一个全局ResourceManager (RM)&#xff0c;以及每个应用程序拥有一个ApplicationMaster (AM)。应用程序可以是单个作业&#xff0c;也可以是一组作业。 一个ResourceManage…

数据结构与算法之美学习笔记:36 | AC自动机:如何用多模式串匹配实现敏感词过滤功能?

目录 前言基于单模式串和 Trie 树实现的敏感词过滤经典的多模式串匹配算法&#xff1a;AC 自动机解答开篇内容小结 前言 本节课程思维导图&#xff1a; 很多支持用户发表文本内容的网站&#xff0c;比如 BBS&#xff0c;大都会有敏感词过滤功能&#xff0c;用来过滤掉用户输入…

如何做好口译服务,同传和交传哪个服务好

随着中国经济的蓬勃发展和综合实力的不断增强&#xff0c;中国与世界各国的交流也日益频繁。口译作为对外交流的桥梁与纽带&#xff0c;需求量与日俱增&#xff0c;其重要性不言而喻。那么&#xff0c;如何做好口译服务呢&#xff1f;是同传还是交传更好呢&#xff1f; 要做好口…