day02-Spark集群及参数

一、Spark运行环境变量问题(了解)

1-pycharm远程开发运行时,执行的是服务器的代码

2-通过本地传递指令到远程服务器运行代码时,会加载对应环境变量数据,加载环境变量文件是用户目录下的.bashrc文件

在/etc/bashrc

1-1 在代码中添加

使用os模块在代码中添加环境变量

from pyspark import SparkContext
import os
​
# 这里可以选择本地PySpark环境执行Spark代码,也可以使用虚拟机中PySpark环境,通过os可以配置
os.environ['JAVA_HOME'] = '/export/server/jdk'
​
​
sc = SparkContext()
​
data = [1,2,3,4]
​
rdd = sc.parallelize(data)
​
res = rdd.reduce(lambda x,y:x+y)
​
print(res)

1-2 在用户环境文件中添加

在用户的环境变量文件中添加

当运行远程代码文件时,会读取/root/.bashrc文件中配置的信息

export JAVA_HOME=/export/server/jdk

使用os模块指定,每次代码文件中都要指定

使用bashrc只需要指定一次

二、集群下Spark的使用(掌握)

集群使用:Cluster Mode Overview - Spark 3.5.1 Documentation

2-1 Standalone模式

使用spark自带的standalone资源调度服务

  • node1启动服务

 /export/server/spark/sbin/start-all.sh
  • standalone服务角色介绍

    • master 类似yarn中的ResourceManger 负责管理整资源服务

    • worker 类似yarn 中Nodemanager 负责将每台机器上的资源给到计算任务

  • standalone的资源调度页面

    • http://192.168.88.100:8080/

  • 交互开发 :指定使用standalone进行资源调度

pyspark  --master spark://node1:7077
  • 脚本式开发

from pyspark import SparkContext
​
# master参数可以指定调用的资源服务
#  使用standalone资源调度
sc = SparkContext(master='spark://node1:7077')

2-2 yarn模式

  • 启动服务

/export/server/hadoop/sbin/start-yarn.sh
  • yanr的服务角色

    • ResourceManger

    • Nodemanager

  • yarn的资源调度页面

    • http://192.168.88.100:8088/

  • 交互开发 :指定使用yarn进行资源调度

    • 需要启动hdfs

    • start-dfs.sh

pyspark  --master yarn
  • 脚本开发

from pyspark import SparkContext
# 没有指定任何参数,使用本地local模式
sc = SparkContext()
​
# master参数可以指定调用的资源服务
# 使用yarn资源调度
sc = SparkContext(master='yarn')

2-3 不同运行模式总结

  • 交互式

# 没有任何指定,采用是local模式,调用的是本机资源无法使用集群资源,相当于是单机计算
pyspark
​
# 使用standalone资源调度 需要启动standalone服务
pyspark  --master spark://node1:7077
​
# 使用yarn资源调度,高可用的使用方式一样  需要启动yarn服务
pyspark  --master yarn
  • 脚本式

    • 在代码中指定

from pyspark import SparkContext
​
# 没有指定任何参数,使用本地local模式
sc = SparkContext()
​
# master参数可以指定调用的资源服务
#  使用standalone资源调度
sc = SparkContext(master='spark://node1:7077')
​
# 使用yarn资源调度
sc = SparkContext(master='yarn')
​

实际开发只需要选择一种方式即可,公司中主要使用yarn

2-4 集群模式下运行流程

  • 运行计算任务生成dirver程序

  • 在dirver中生成sparkcontext对象

  • 通过sparkcontext中方法向资源调度服务器申请资源

  • 找对应的资源节点创建executor进程

  • executor创建后会通知sparkcontext

  • sparkcontext分配计算任务task到对应的executor执行,每个task就是一个线程

三、Spark的历史日志服务(掌握)

历史日志用来产看spark计算任务运行情况

  • 启动hadoo

    • start-all.sh

  • 启动

/export/server/spark/sbin/start-history-server.sh
  • 执行计算任务

  • 访问历史日志页面

    • 计算任务运行期间

      • http://192.168.88.100:4040/

    • 计算任务结束后

      • http://192.168.88.100:18080/

四、spark的指令参数(熟悉)

使用spark指令时可以通过参数方式配置相关spark的信息

4-1 书写格式

pyspark --参数 参数值

4-2 参数说明

 pyspark --help

# 表示应用运行的模式,要么是本地local要么是集群(Standalone、YARN、Mesos)了
--master MASTER_URL
# 本地模式∶local[2]  数字表示可以使用到本地的cpu核心数据量,  loacl[*]  *表示自动判断
# Standalone集群∶spark∶//xxx∶7077,yyy∶7077 
# YARN 集群∶ yarn 
​
# 表示的是应用运行的名称,通常在应用开发的时候指定
--name NAME 
​
# 表示应用运行时指定的某些参数配置,http∶//spark.apache.org/docs/2.2.0/configuration.html
# 当value中值有空格组成的时候,使用双引号将key=value引起来
# 可以不用在bashrc写配置可以通过conf配置,每次运行都要指定很麻烦
--conf "PROP=VALUE"
# 第一种方式∶属性的值中没有空格
--conf spark.eventLog.enabled=false
# 第二种方式∶属性的值中有空格,将属性和值统一使用双引号引起来
--conf"spark.executor.extraJavaOptions=-XX:+PrintGCDetails -XX:+PrintGCTimestamps"
​
​
# Driver相关配置  对driver一般不用配置
# 指定Driver Program JVM进程内存大小,默认值为1g
--driver-memory MEM
​
# 表示Driver 运行CLASS PATH路径,使用不多
--driver-class-path
​
# Spark standalone with cluster deploy mode∶运行在standalone 中cluster Deploy Mode 默认值为1  cpu核心数据
# 运行在YARN in cluster mode,默认值是1 
--driver-cores NUM 
​
​
# Executor运行所需内存大小
--executor-memory MEM 
​
# Execturo 运行的CPU Cores,默认的情况下,在Standalone集群上为worker节点所有可有的CpuCores,在YARN集群下为2
--executor-cores NUM
​
# 表示运行在Standalone集群下,所有Executor的CPU Cores,结合--executor-cores计算出Executor个数
--total-executor-cores
​
# 表示在YARN集群下,Executor的个数,默认值为2
--num-executors
​
​
# 表示Drive Program运行的地方,也叫做应用部署模式,默认值为client,通常在生产环境中使用cluster
--deploy-mode DEPLOY_MODE

4-3 参数演示

  • 指定名称

pyspark  --name itcast
  • 指定配置信息

pyspark --master yarn --name itcast_conf --conf 'spark.sql.shuffle.partitions=100'

  • 指定运行资源

pyspark --master yarn  --name yarn_demo   --num-executors 3 --executor-cores 2

五、spark-submit提交方式(熟悉)

一般是在代码上线部署使用spark-submit提交运行代码

Submitting Applications - Spark 3.5.1 Documentation

采用该方式运行提交代码,dirver的运行位置有资源调度服务决定

spark-submit [指令参数]  Python文件或java文件

5-1 部署模式参数

# 表示Drive Program运行的地方,也叫做应用部署模式,
# 默认值为client,通常在生产环境中使用cluster
--deploy-mode DEPLOY_MODE
  • 两种模式区别

    • dirver在哪里运行

      • clinet模式:dirver是在提交代码的服务器上运行,该方式是默认方式,不指定是就采用client模式

      • cluster模式:dirver由资源的调度服务找到对应服务器上运,在该模式下必须指定master,选择资源调度服务

5-2 clinet模式指定

spark-submit  --master yarn   /root/spark_demo/main.py

5-3 cluster 模式

spark-submit  --master yarn --deploy-mode cluster   /root/spark_demo/main.py

六 端口

Hadoop

  • web页面访问

    • hdfs 9870

    • yarn 8088

    • history 19888

  • 程序服务访问

    • hdfs 8020

CDH访问端口

  • 7180

Spark

  • 采用standalone

    • web端口 8080

  • 历史日志

    • 运行期间 4040

    • 运行结束 18080

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

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

相关文章

Python 算法交易实验74 QTV200第二步(改): 数据清洗并写入Mongo

说明 之前第二步是打算进入Clickhouse的,实测下来有一些bug 可以看到有一些分钟数据重复了。简单分析原因: 1 起异步任务时,还是会有两个任务重复的问题,这个在同步情况下是不会出现的2 数据库没有upsert模式。clickhouse是最近…

MT1568 学生成绩

题目 有3个学生,每个学生有3门课的成绩,从键盘输入数据,包括学号、姓名、三门课成绩,学号整型,姓名字符型,成绩实型,计算3门课程总平均成绩,以及平均分最高的学生信息。不考虑非法成…

【webrtc】webrtc 与h265

参考 webrtc 支持H265(三) 总结_webrtc h265-CSDN博客 enable-chromium-hevc-hardware-decoding/README.zh_CN.md at main StaZhu/enable-chromium-hevc-hardware-decoding GitHub 《WebRTC系列》实战 Web 端支持 h265 硬解_webrtc-streamer h265编码-CSDN博客 webrtc分块…

mysql GROUP_CONCAT函数详解

文章目录 概要使用技巧1. 建表、插入数据2.以id分组,把age字段的值拼成一行,逗号分隔(默认)3.以id分组,把age字段的值拼成 一行,分号分隔4.以id分组,把去冗余的age字段的值打印在一行5.以id分组,把age字段的…

算法:链表题目练习

目录 链表的技巧和操作总结 常用技巧: 链表中的常用操作 题目一:反转一个单链表 题目二:链表的中间结点 题目三:返回倒数第k个结点 题目四:合并两个有序链表 题目五:移除链表元素 题目六&#xff…

利用LLM本身训练SoTA embedding模型

今天分享一篇Microsoft公司的一篇文章,Title: Improving Text Embeddings with Large Language Models:使用大语言模型改善文本嵌入。 这篇文章探索了直接利用LLM来做embedding模型,其只需要利用合成数据和少于1000次的训练步骤就能获得高质…

语言模型:文本表征词嵌入技术调研

1 文本表征 文本表征是自然语言处理中的关键部分,尤其在当前大模型快速发展的背景下。由于大模型存在知识有限、处理文本长度有限、保密要求和大模型幻觉等问题,结合外部数据显得尤为重要。 为了便于存储和检索,除了保存纯文本外&#xff0…

Debug 调试代码

我们使用 debug 的目的, 认为就是查看代码的执行过程的。 步骤: 1. 打断点 断点的意义是, debug 运⾏的时候, 代码会在断点处停下来不执行如果是想要查看代码的执行过程, 建议将断点放在第⼀行在代码 和 行号之间 点击,出现的红色圆点 就是断点, 再次点击可以取消 …

Webpack: 构建微前端应用

Module Federation 通常译作“模块联邦”,是 Webpack 5 新引入的一种远程模块动态加载、运行技术。MF 允许我们将原本单个巨大应用按我们理想的方式拆分成多个体积更小、职责更内聚的小应用形式,理想情况下各个应用能够实现独立部署、独立开发(不同应用甚…

高项-信息系统工程知识要点

1、五大软件架构风格 数据流风格:批处理序列、管道/过滤器 ◆调用/返回风格:主程序X 子程序、数据抽象、面向对象、层次结构 ◆独立构件风格:进程通信、事件驱动 虚拟机风格:解释器、基于规则的系统 仓库风格:数据库系…

apipost的安装和测试添加接口能否正常使用

1.进入官网,点击免费使用(我是windows 64位,选合适自己的配置) 2.开始安装 选仅为我安装——下一步 选择自己的安装目录——点安装 等待 运行——完成 3.apipost一些基本操作——实现添加内容 (1)新建接口…

《人人都是产品经理》:项目一图流

《人人都是产品经理》:项目一图流 项目一图流 项目一图流

【Spring】springSecurity

1、概述 1.1定义和用途 Spring Security为基于Spring的企业应用系统提供声明式的安全访问控制解决方案。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC、DI(控制反转和依赖注入)和AOP(面向切面编程&…

FreeSWITCH 1.10.10 简单图形化界面22-JsSIP的demo测试并记录坑

FreeSWITCH 1.10.10 简单图形化界面22-JsSIP的demo测试 00 FreeSWITCH GUI界面预览01、安装FreeSWITCH GUI先看使用手册02. 使用手册在这里0、设置FreeSWITCH账号1、jssip的demo网站2、设置jssip账号并登录3、整理坑3.1 掉线问题3.11 解决3.2 呼叫问题13.21 解决13.3 呼叫问题2…

PAE:从潮流报告中提炼有效产品属性

本文将介绍PAE,一种用于包含 PDF格式的文本和图像的产品属性提取算法。目前大部分的方法侧重于从标题或产品描述中提取属性,或利用现有产品图像中的视觉信息。与之前的工作相比,PAE从潮流趋势报告的PDF文件中提取属性,提取的属性包…

ML307R OpenCPU HTTP使用

一、函数介绍 二、示例代码 三、代码下载地址 一、函数介绍 具体函数可以参考cm_http.h文件,这里给出几个我用到的函数 1、创建客户端实例 /*** @brief 创建客户端实例** @param [in] url 服务器地址(服务器地址url需要填写完整,例如(服务器url仅为格式示…

spl实现循环计算

需求 需要对一批数据进行价格计算 这里面的一部分单价来自于历史记录,但是另外一部分的单价,需要边计算边存储 数据库结构 CREATE TABLE tbl_mix_trace_price (lot_id_out varchar(255) DEFAULT NULL COMMENT 产出,lot_id_in varchar(255) DEFAULT NULL…

谈一下MySQL的两阶段提交机制

文章目录 为什么需要两阶段提交?两阶段提交流程?两阶段提交缺点? 为什么需要两阶段提交? 为了保证事务的持久性和一致性,MySQL需要确保redo log和binlog的同步持久化。MySQL通过“两阶段提交”的机制来实现在事务提交…

洛谷U420301题解

题解 方法一枚举 时间复杂度 O ( n 2 ) O(n^2) O(n2) 主要代码 int main() {int n,t;cin >> n;for(int i 1;i < n;i) cin >> a[i];cin >> t;for(int i 1;i < n;i){for(int j i 1;j < n;j){if(a[i] a[j] t){cout << "Yes"…

定个小目标之刷LeetCode热题(34)

15. 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三…