pyspark的部署,standalone模式和yarn模式的原理以及一些运用

本文详细介绍了如何在Spark环境中启动HDFS和YARN服务,开启历史服务器,以及standalone模式和HA模式的配置。还探讨了SparkOnYARN模式的原理和部署,包括driver和executor的角色以及pyspark的交互机制。
摘要由CSDN通过智能技术生成

开启spark服务之前要先优先打开hdfs服务和相应的历史服务器

standalone模式

  • hdfs开启
start-dfs.sh
  • yarn开启
$HADOOP_HOME/sbin/start-yarn.sh
  • 开启yarn的历史服务器
$HADOOP_HOME/bin/mapred --daemon start historyserver
  • 开启spark的历史服务器
    spark/sbin目录下执行
start-history-server.sh
  • 开启spark服务
    spark/sbin目录下执行
./start-all.sh

要注意不要直接执行start-all,不然是启动hdfs服务的

  • 访问sparkmaster服务
    观察spark-master是否处于工作状态中,可以访问{master-node}:8080端口,其中会给出master节点的工作端口和地址。
    通过这个地址就能够创建standalone状态的spark集群服务。

  • 观察spark程序运行状态
    在spark job运行的过程中,可以访问{master-node}:4040端口,会给出进程具体的工作状态过程。
    要注意在job结束后该端口就会被关闭,无法访问。

spark程序中Job、State、Task三个概念之间的关系

一个spark程序(Application)可以被拆分成多个job,每个job又可以被拆分成多个state(stage),
每个state又会分出多个task来执行。
每个task占据一个线程

spark中线程和进程之间的关系

spark每个task占据一个线程
每次提交spark的applicatio任务,master(Driver)节点会分析该application,然后决定要使用多少个executor,每个executor会占据一个进程。每个worker节点中都包含一个executor进程。
driver会将一个application根据action算子的数量,将一个application拆分成多个job,在每个job的内部,根据有向无环图(DAG)再将一个job划分成多个stage,每个stage的内部也根据DAG拆分成多个task,每个task占据一个线程。
DAG scheduler负责任务的拆分,然后将taskset交给task manager,task manager负责将task放在具体的executor上执行。

spark standalone HA 模式

standalone 存在master单点故障的问题,即master一旦宕机,则该standalone集群即不可用

解决方法:使用zookeeper的standby masters

  • 设置多个master节点,但是保证只有一个master处于激活状态,其余的master节点都是处于standby状态
  • 当一个master宕机的时候,另一个standby的master就会被激活
  • 系统的信息都被持久化到了文件系统中,包括worker、driver、application等信息,因此,后续提交的job就会由新的master来执行,正在进行中的job不受影响

启动zookeeper

zookeeper/bin目录下执行

./zkServer.sh start

spark on yarn 模式

spark on yarn模式就是不需要创建spark独立的集群,让spark依赖于yarn集群。
在standalone模式中,如果已经有了yarn集群,那么在单独部署一个spark集群,就对资源的利用率进行了降低。
on yarn模式中,不需要部署spark集群,只需要通过一个服务器充当客户端将spark部署到yarn集群上即可。

spark on yarn的本质

  • master 角色由yarn的resourcemanager担当
  • worker的角色由NodeManger担当
  • Driver运行在yarn的容器内或者在提交任务的客户端进程中
  • executor运行在yarn的容器中

spark on yarn的部署

确保两个环境变量配置好了

  • HADOOP_CONF_DIR
  • YARN_CONF_DIR

spark on yarn的两种模式

两种模式的主要区别在于driver的运行位置不同

  • cluster模式
    driver运行在yarn容器的内部,和applicationmaster运行在同一个容器内

    • 缺点:需要进入到容器的内部才能够看到driver的日志,client模式可以直接在客户端的标准流中看到日志的输出
    • 优点:通讯效率较高、较为稳定,适合生产模式
  • client模式
    driver运行在客户端进程中,运行在spark-submit的进程中。

    • 缺点:通讯效率较cluster模式相对较低,且基于客户端进程,较为不稳定
    • 优点:输出日志较容易观察,适合测试开发环境

client模式
在这里插入图片描述

cluster模式
在这里插入图片描述

pyspark on spark原理

在这里插入图片描述

  • driver端
    python通过socket与spark创建的driver运行的底层JVM进行交互,代码通过py4j转换成java代码,创建对应的sc,实现与spark的运行

  • worker端
    worker上会创建一个pyspark的守护进程,driver的指令发送给executor的jvm,jvm将其转发给pyspark的守护进程,守护进程将该指令调度到运行中的python程序上。
    本质上worker端的python进程在工作,但是指令来自于jvm,通过RPC协议发送给python进程

  • 34
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值