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

📋 博主简介

  • 💖 作者简介:大家好,我是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进行注销,整个应用程序运行完成。

结束语

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【每日一题】反转二叉树的奇数层

文章目录 Tag题目来源题目解读解题思路方法一:广度优先搜索方法二:深度优先搜索 写在最后 Tag 【深度优先搜索】【广度优先搜索】【二叉树】【2023-12-15】 题目来源 2415. 反转二叉树的奇数层 题目解读 反转二叉树奇数层的节点。 解题思路 对于二叉…

ACL原理和配置

一.ACL概述 1.介绍 ACL 访问控制列表,可以通过对网络中报文流的精确识别,与其他技术结合,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。 2.概述 ACL是…

半导体行业CRM选型推荐,引领企业升级

随着半导体材料行业的快速发展,企业面临着越来越多的挑战。在这个高度竞争的市场中,如何提高销售管理效率、降低成本、优化资源配置成为各企业亟待解决的问题。而引入CRM系统则可以为企业提供一整套信息化解决方案,推动半导体材料行业的持续发…

YOLOv8改进 | 2023Neck篇 | 利用RepGFPN改进特征融合层(附yaml文件+添加教程)

一、本文介绍 本文给大家带来的改进机制是Damo-YOLO的RepGFPN(重参数化泛化特征金字塔网络),利用其优化YOLOv8的Neck部分,可以在不影响计算量的同时大幅度涨点(亲测在小目标和大目标检测的数据集上效果均表现良好涨点…

typescript 实现Optional

我们先看下面的这段代码,一个学生接口,里面有成员id,name,age,gender等等成员, 有一个方法graduate,里面要接受一个Student类型的实参 interface Student {id: numbername: stringage: numbergender: string}function graduate(Student: Student) {//...}现在有一个问题,就是学…

【腾讯云 HAI域探秘】借助高性能服务HAI快速学会Stable Diffusion生成AIGC图片——必会技能【微调】

目录 Stable Diffusion基本使用方法 学术加速测试 配置中文插件 Prompt与Negative prompt 采样器说明 人像生成 水光效果 微调的使用 图像生成种子/seed使用 附加/Extra 微调实例测试 图生图微调 ​编辑 使用蒙版微调 Stable Diffusion基本使用方法 环境配置&am…

利用python进行数据分析 第十四章 数据分析案例

本书正文的最后一章,我们来看一些真实世界的数据集。对于每个数据集,我们会用之前介绍的方 法,从原始数据中ᨀ 取有意义的内容。展示的方法适用于其它数据集,也包括你的。本章包含了一 些各种各样的案例数据集,可以用…

【排序算法】快速排序

文章目录 一:基本概念1.1 介绍1.2 排序流程1.3 图解算法1.3.1 第一步1.3.2 第二步1.3.3 第三步1.3.4 第四步 1.4 动画展示 二:算法性能2.1 时间复杂度2.1.1 理想情况2.1.2 最坏情况 2.2 空间复杂度2.2.1 原地排序2.2.2 非原地排序2.2.3 稳定性 三&#x…

KT148A语音芯片一线串口的控制时序起始脉宽的长度说明

一、KT148A一线串口细节点 KT148A语音芯片支持一线串口控制,单线的时序逻辑,所以就存在两个注意细节 起始脉宽的长度要求数据0和数据1的脉宽分配 一线通讯的时序要求 详见完整开发资料的“KT148A语音芯片使用手册3_V4.pdf”文档 章节3.1有详细的描述…

AD20-Excel创建IC类元件库

目录 准备模板AD操作 准备模板 AD操作 结果生成如下: over!!!

CRM客户管理系统好不好用,有哪些判断标准?

市场上有着众多的CRM客户关系管理系统,从中选择一个适合自己企业的系统并非易事。除了需要了解自己的业务需求之外,还需要对市场上CRM系统的区别有一定的了解。不同的CRM系统各有特点,但有一些通用的标准可以用来评估它们的适用性。那么&…

Three.js中文网14入门案例

Three.js中文网 <template><div id"webgl"></div> </template><script setup> import * as THREE from three; import { OrbitControls } from three/addons/controls/OrbitControls.js;// 创建3D场景对象Scene const scene new TH…

Vue学习计划-Vue2--VueCLi(五)全局事件总线、消息订阅与发布(pubsub)

抛出问题:我们多级组件&#xff0c;或者任意不想关的子组件如何传递数据呢&#xff1f; 1. 全局事件总线&#xff08;$bus&#xff09; 一种组件间通信的方式&#xff0c;适用于任意组件间通信 全局事件总线示意图&#xff1a; 安装全局事件总线&#xff1a; new Vue({..…

ES 如何将国际标准时间格式进行格式化与调整时区

需求&#xff0c;日志收集的时候&#xff0c;时间格式是国际标准时间格式。形如yyyy-MM-ddTHH:mm:ss.SSS。 &#xff08;2023-12-05T02:45:50.282Z&#xff09;这个时区也不对&#xff0c;那如何将此类型的时间&#xff0c;进行格式化呢&#xff1f; 本篇文章体统一个案例&…

前端非常好用的免费网页工具推荐(值得收藏)

1、iloveimg 可在线进行图片编辑、压缩、转换等功能&#xff0c;操作方便&#xff0c;完全免费 2、草料二维码 可在线进行文本、网站、文件、图片、微信等二维码生成 3、比特虫 在线制作网站 ico 图标 4、facicongrabber 免费网页 favicon 提取 5、bazhan.wang 在线扒站工…

上海亚商投顾:沪指收复3000点,房地产板块集体走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日窄幅震荡&#xff0c;创业板指走势较弱&#xff0c;科创50指数跌近1%。房地产板块集体走强&#xff0…

系统的安全性设计

要设计一个安全的系统&#xff0c;除了要了解一些前面讲到的常用的保护手段和技术措施外&#xff0c;还要对系统中可能出现的安全问题或存在的安全隐患有充分的认识&#xff0c;这样才能对系统的安全作有针对性的设计和强化&#xff0c;即“知己知彼&#xff0c;百战百胜”。 下…

调用第三方http接口 hutool工具类

1、引入依赖 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.0.M2</version> </dependency>2、请求组装 String params"<BSXml>" " <MsgHeader>&…

Vue3上传图片和删除图片

<div class"illness-img"><van-uploader:after-read"onAfterRead"delete"onDeleteImg"v-model"fileList"max-count"9":max-size"5 * 1024 * 1024"upload-icon"photo-o"upload-text"上传图…

GaussDB如何创建和管理视图

GaussDB如何创建和管理视图 一、什么是视图 当用户对数据库中的一张或者多张表的某些字段的组合感兴趣&#xff0c;而又不想每次键入这些查询时&#xff0c;用户就可以定义一个视图&#xff0c;以便解决这个问题。 视图与基本表不同&#xff0c;不是物理上实际存在的&#x…