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是最近…

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 允许我们将原本单个巨大应用按我们理想的方式拆分成多个体积更小、职责更内聚的小应用形式,理想情况下各个应用能够实现独立部署、独立开发(不同应用甚…

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

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

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

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

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文件中提取属性,提取的属性包…

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通过“两阶段提交”的机制来实现在事务提交…

小迪安全v2023 javaWeb项目

小迪安全v2023 javaWeb项目 文章目录 小迪安全v2023 javaWeb项目1. webgoat靶场1. 环境配置与docker操作 2. jwt令牌1. jwt 第四关 签名没验证空加密2. jwt 第五关 爆破签名密钥3. jwt 第八关 kid参数可控 1. webgoat靶场 1. 环境配置与docker操作 自行下载配置vmware的kali-…

《mysql篇》--查询(进阶)

目录 将查询结果作为插入数据 聚合查询 聚合函数 count sum group by子句 having 联合查询 笛卡尔积 多表查询 join..on实现多表查询 内连接 外连接 自连接 子查询 合并查询 将查询结果作为插入数据 Insert into 表2 select * from 表1//将表1的查询数据插入…

Linux开发讲课20--- QSPI

SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口,一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,为 PCB 的布局上节省空间…

Springcloud-消息总线-Bus

1.消息总线在微服务中的应用 BUS- 消息总线-将消息变更发送给所有的服务节点。 在微服务架构的系统中,通常我们会使用消息代理来构建一个Topic,让所有 服务节点监听这个主题,当生产者向topic中发送变更时,这个主题产生的消息会被…

多线程引发的安全问题

前言👀~ 上一章我们介绍了线程的一些基础知识点,例如创建线程、查看线程、中断线程、等待线程等知识点,今天我们讲解多线程下引发的安全问题 线程安全(最复杂也最重要) 产生线程安全问题的原因 锁(重要…

Hive笔记-6

6.2.8 聚合函数 1) 语法 count(*),表示统计所有行数,包含null值; count(某列),表示该列一共有多少行,不包含null值; max(),求最大值,不包含null,除非所有值都是null&a…

不同node版本的切换及其指定版本vue-cli脚手架下载

目录 一.清空本地已安装node.js版本 二.装nvm管理工具 三.安装指定node版本 四.使用nvm命令切换或删除指定node版本 五.在指定node版本下下载指定vue-cli脚手架 一.清空本地已安装node.js版本 1.按健winR弹出窗口,键盘输入cmd,然后敲回车。 2.输入…