spark基本原理介绍以及日志收集

举报
顾先生啊 发表于 2022/12/29 17:10:08 2022/12/29
【摘要】 1、Spark on yarn基本介绍1.1 框架流程(以cluster模式为例)client提交spark应用程序给RMRM收到请求之后,会在集群中随机选择一个NM,为该应用程序分配第一个Container,然后在这个Container上启动AMAM启动driver,并初始化SparkContextAM启动时会向RM注册,并向RM申请资源用于ExecutorAM一旦申请到资源也就是Cont...

1、Spark on yarn基本介绍

1.1 框架流程(cluster模式为例)

  • client提交spark应用程序给RM
  • RM收到请求之后,会在集群中随机选择一个NM,为该应用程序分配第一个Container,然后在这个Container上启动AM
  • AM启动driver,并初始化SparkContext
  • AM启动时会向RM注册,并向RM申请资源用于Executor
  • AM一旦申请到资源也就是Container之后,会在对应的ContainerContainer信息里面会包含NM节点信息)启动Executor
  • executor启动后会向SparkContext注册,AMSparkContext会分配任务集给Executor执行Task

1.2 yarn-clientyarn-cluster模式的差异点

  • yarn-client
  • driver在提交任务的节点启动,且不受YARN管控
  • 默认driver的日志打印在console端,任务运行完无法找到,可通过修改properties文件重定向日志到文件中
  • 用户生产环境中,如果客户端在集群外,则client模式下可能会由于“防火墙”的原因导致任务提交失败
  • yarn-cluster
  • driver启动在集群中的节点上(实质是am作为一个container启动,启动会会启动一个线程来调用用户的程序,从而完成driver的启动)
  • driver启动后,客户端的提交任务的进程可以关闭,不会影响程序的运行, client将不会发挥其他任何作用,仅仅负责提交

1.3 Spark相关角色概念介绍

  • Client:客户端进程,负责提交作业到Master
  • ApplicationMaster:负责应用的资源管理,根据应用的需要,向资源管理部门(ResourceManager)申请资源
  • Driver:Application 的驱动线程。Driver通过运行Spark应用的main函数来执行应用,从应用开始执行到把Task提交到Executor端有很多步骤,这些步骤都在Driver端完成。Driver端会把应用进行编排,最终会生成一个个的Task,并提交给Executor去执行,当Task被提交到Executor端后,Driver会和Executor进行通信,实时监控执行状态
  • Worker:Spark 的工作节点,用于执行提交的作业。在 YARN模式下 Worker 指的就是NodeManager 
  • ResourceManager:资源管理部门,负责整个集群的资源统一调度和分配
  • Executor:Executor是执行Spark应用的容器,顾名思义,它的职责就是根据Driver端的要求来启动执行线程,执行任务,并返回执行结果。

1.4 Spark任务相关概念

  • Task(任务):单个分区数据及上的最小处理流程单元。
  • TaskSet(任务集):由一组关联的,但互相之间没有Shuffle依赖关系的任务所组成的任务集。
  • Stage(调度阶段):一个任务集对应的调度阶段。
  • Job(作业):有一个RDD Action生成的一个或多个调度阶段所组成的一次计算作业。
  • Application(应用程序):Spark应用程序,由一个或多个job组成。
  • Spark日志介绍

2.1 Spark UI (event log)

    (1) 日志介绍

   spark的jobHistory提供的一个可以直接在spark原生页面看到一个任务的执行情况,从spark的服务进入sparkwebUI,然后根据具体的任务id,找到对应的  eventlog,有时候定位问题时候,收集到eventlog,上传到自己集群上,可以在本地查日志下载,eventlog有两种办法下载

  • 通过sparkUI页面直接下载

然后进入spark页面,找到具体的app ID,右侧Download按钮

  • 通过后台从hdfsget:hdfs dfs –get  具体目录  本地目录

hdfs目录中spark1x对应的目录是:/sparkJobHistory, spark2x对应的目录是:/spark2xJobHistory2x

                    

2.2 yarn日志

spark on yarn模式,有client模式和cluster模式,日志中包含如下信息:

任务基本信息(用户、队列等)

stderr:标准错误

stdout:标准输出

directory.info:配置文件、jar包加载信息

gc.log:gc日志

2.2.1 Driver日志:

  • client模式下,driver直接运行在启动任务的节点上,可以在控制台,直接查看
  • cluster模式下,driver日志存在于集群中的executor日志中,如下图:

spark的cluster模式中application日志就是driver日志,因此也可以在yarnapplication日志中找到,如下图:

  • Spark日志下载

3.1 Spark UI (event log)

eventlog有两种办法下载

a .通过sparkUI页面直接下载

然后进入spark页面,找到具体的app ID,右侧Download按钮

b 通过后台从hdfsget:hdfs dfs  –get  具体目录  本地目录

hdfs目录中spark1x对应的目录是:/sparkJobHistory, spark2x对应的目录是:/spark2xJobHistory2x

3.2 yarn日志

spark的driverexecutor日志收集:

  1. hdfsgethdfs dfs –get /tmp/logs/任务提交用户名 /logs/任务ID  /本地目录
  2. yarn具体日志页面右键另存为网页

         3.对于正在运行的任务,需要使用:yarn logs -applicationId  任务id,或者只收某个executor的日志使用: yarn logs -containerId executor对于的containerId

    【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
    • 点赞
    • 收藏
    • 关注作者

    评论(0

    0/1000
    抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。