赞
踩
1-pycharm远程开发运行时,执行的是服务器的代码
2-通过本地传递指令到远程服务器运行代码时,会加载对应环境变量数据,加载环境变量文件是
用户目录下
的.bashrc文件在/etc/bashrc
使用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)
在用户的环境变量文件中添加
当运行远程代码文件时,会读取/root/.bashrc文件中配置的信息
export JAVA_HOME=/export/server/jdk
使用os模块指定,每次代码文件中都要指定
使用bashrc只需要指定一次
使用spark自带的standalone资源调度服务
node1启动服务
/export/server/spark/sbin/start-all.sh
standalone服务角色介绍
master 类似yarn中的ResourceManger 负责管理整资源服务
worker 类似yarn 中Nodemanager 负责将每台机器上的资源给到计算任务
standalone的资源调度页面
交互开发 :指定使用standalone进行资源调度
pyspark --master spark://node1:7077
脚本式开发
from pyspark import SparkContext # master参数可以指定调用的资源服务 # 使用standalone资源调度 sc = SparkContext(master='spark://node1:7077')
启动服务
/export/server/hadoop/sbin/start-yarn.sh
yanr的服务角色
ResourceManger
Nodemanager
yarn的资源调度页面
交互开发 :指定使用yarn进行资源调度
需要启动hdfs
start-dfs.sh
pyspark --master yarn
脚本开发
from pyspark import SparkContext # 没有指定任何参数,使用本地local模式 sc = SparkContext() # master参数可以指定调用的资源服务 # 使用yarn资源调度 sc = SparkContext(master='yarn')
交互式
# 没有任何指定,采用是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
运行计算任务生成dirver程序
在dirver中生成sparkcontext对象
通过sparkcontext中方法向资源调度服务器申请资源
找对应的资源节点创建executor进程
executor创建后会通知sparkcontext
sparkcontext分配计算任务task到对应的executor执行,每个task就是一个线程
历史日志用来产看spark计算任务运行情况
启动hadoo
start-all.sh
启动
/export/server/spark/sbin/start-history-server.sh
执行计算任务
访问历史日志页面
计算任务运行期间
计算任务结束后
使用spark指令时可以通过参数方式配置相关spark的信息
pyspark --参数 参数值
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
指定名称
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提交运行代码
Submitting Applications - Spark 3.5.1 Documentation
采用该方式运行提交代码,dirver的运行位置有资源调度服务决定
spark-submit [指令参数] Python文件或java文件
# 表示Drive Program运行的地方,也叫做应用部署模式, # 默认值为client,通常在生产环境中使用cluster --deploy-mode DEPLOY_MODE
两种模式区别
dirver在哪里运行
clinet模式:dirver是在提交代码的服务器上运行,该方式是默认方式,不指定是就采用client模式
cluster模式:dirver由资源的调度
服务找到对应服务器上运,在该模式下必须指定master,选择资源调度服务
spark-submit --master yarn /root/spark_demo/main.py
spark-submit --master yarn --deploy-mode cluster /root/spark_demo/main.py
web页面访问
hdfs 9870
yarn 8088
history 19888
程序服务访问
hdfs 8020
CDH访问端口
7180
采用standalone
web端口 8080
历史日志
运行期间 4040
运行结束 18080
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。