spark on yarn 的执行过程在 yarn RM 上无法直接查看,即 http://192.168.10.10:8088,这对于调试程序很不方便,所以需要手动配置

配置方法

1. 配置 spark-defaults.conf 

cp spark-defaults.conf.template spark-defaults.conf

添加如下配置

spark.eventLog.enabled           true
spark.eventLog.dir hdfs://hadoop10:9000//user/root/history
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 5g
spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
spark.history.fs.logDirectory hdfs://hadoop10:9000//user/root/history
spark.yarn.historyServer.address master:18080

spark.eventLog.enabled 设置为 true 表示开启日志记录

spark.eventLog.dir 表示存储日志的地址,application 运行过程中所有的日志均存于该目录下,一般设置为 hdfs 路径,也可以设置为 本地路径

  // HDFS:hdfs://hadoop10:9000//user/root/history  事先创建目录

  // 本地:file:///directory

spark.history.fs.logDirectory 这个配置和 spark.eventLog.dir 保持一致,spark histroy server 只展示该路径下的信息

spark.yarn.historyServer.address 设置 history server 的 ip port,指向 http://192.168.10.10:8088 上的 Tracking UI

spark.eventLog.compress 是否压缩记录 Spark 事件信息,前提 spark.eventLog.enabled 为 true,默认使用的是 snappy

2. 修改 spark-env.sh

在原来基础上添加

export SPARK_HISTORY_OPTS="-Dspark.history.retainedApplications=15"

spark.history.retainedApplications 设置在 History Server 显示的 Application 历史记录个数,如果超过这个值,旧的应用程序信息将被删除.

3. 启动 Spark History Server

sbin/start-history-server.sh

此时打开 http://192.168.10.10:18080 即可查看

web UI 解析

web ui 包括以下几部分

假设执行如下命令

spark-submit --master yarn --num-executors 8 --executor-cores 5 gpsfreq.py

启动 8 个 Executor,每个 Executor 启动 5 个 core,共 40 个 core

stage

点开第 0个 stage

根据我上面的分析,做了如下改动

减少了 executor 数 和 executor core 数

spark-submit --master yarn --num-executors 4 --executor-cores 1 gpsfreq.py

结果效率提升了2倍

把 textFile 设定 3 个分区,仍然采用上面的命令

运行效率更高了,而且解决了最初的问题

参考资料:

https://www.jianshu.com/p/4d28edc599ea  为Spark on Yarn配置WebUI日志记录

https://blog.csdn.net/zyj8170/article/details/58158966  Spark on YARN配置日志Web UI

https://www.cnblogs.com/hexu105/p/8182472.html  spark on yarn UI界面详解

spark调优篇-spark on yarn web UI的更多相关文章

  1. spark调优篇-Spark ON Yarn 内存管理(汇总)

    本文旨在解析 spark on Yarn 的内存管理,使得 spark 调优思路更加清晰 内存相关参数 spark 是基于内存的计算,spark 调优大部分是针对内存的,了解 spark 内存参数有也 ...

  2. 【翻译】Spark 调优 (Tuning Spark) 中文版

    由于Spark自己的调优guidance已经覆盖了很多很有价值的点,因此这里直接翻译一份过来.也作为一个积累. Spark 调优 (Tuning Spark) 由于大多数Spark计算任务是在内存中运 ...

  3. spark调优篇-oom 优化(汇总)

    spark 之所以需要调优,一是代码执行效率低,二是经常 OOM 内存溢出 内存溢出无非两点: 1. Driver 内存不够 2. Executor 内存不够 Driver 内存不够无非两点: 1. ...

  4. spark调优篇-数据倾斜(汇总)

    数据倾斜 为什么会数据倾斜 spark 中的数据倾斜并不是说原始数据存在倾斜,原始数据都是一个一个的 block,大小都一样,不存在数据倾斜: 而是指 shuffle 过程中产生的数据倾斜,由于不同的 ...

  5. spark 调优——基础篇

    开发调优 调优概述 Spark性能优化的第一步,就是要在开发Spark作业的过程中注意和应用一些性能优化的基本原则.开发调优,就是要让大家了解以下一些Spark基本开发原则,包括:RDD lineag ...

  6. 【Spark篇】---Spark调优之代码调优,数据本地化调优,内存调优,SparkShuffle调优,Executor的堆外内存调优

    一.前述 Spark中调优大致分为以下几种 ,代码调优,数据本地化,内存调优,SparkShuffle调优,调节Executor的堆外内存. 二.具体    1.代码调优 1.避免创建重复的RDD,尽 ...

  7. Spark性能优化:开发调优篇

    1.前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算 ...

  8. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  9. 【Spark调优】提交job资源参数调优

    [场景] Spark提交作业job的时候要指定该job可以使用的CPU.内存等资源参数,生产环境中,任务资源分配不足会导致该job执行中断.失败等问题,所以对Spark的job资源参数分配调优非常重要 ...

随机推荐

  1. python编写弹球游戏的实现代码

    #coding:utf- from tkinter import * import random import time class Ball: #创建一个球类 def __init__(self, ...

  2. AcWing:241. 楼兰图腾(树状数组逆序对)

    在完成了分配任务之后,西部314来到了楼兰古城的西部. 相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们分别用V和∧的形状来代表各自 ...

  3. Hive 参数

    hive.exec.max.created.files •说明:所有hive运行的map与reduce任务可以产生的文件的和 •默认值:100000  hive.exec.dynamic.partit ...

  4. python数据分析与应用

    python数据分析与应用笔记 使用sklearn构建模型 1.使用sklearn转换器处理数据 import numpy as np from sklearn.datasets import loa ...

  5. jenkins的任务卡住

    今天做jenkins任务的时候,发现一个启动后,一直卡住,在那转圈圈,其实这个时候,任务已经执行完了. 经过分析,因为这个任务是启动一个web服务,直接在机器上执行时,直接占用一个终端. 解决办法,放 ...

  6. Projects: Linux scalability: Accept() scalability on Linux 惊群效应

    小结: 1.不必要的唤醒 惊群效应 https://github.com/benoitc/gunicorn/issues/792#issuecomment-46718939 https://www.c ...

  7. python 语法糖是什么意思

    语法糖指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法.语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读.不过其并没有给语言添加什么新东西.

  8. set serveroutput on

    使用set serveroutput on 命令设置环境变量serveroutput为打开状态,从而使得pl/sql程序能够在SQL*plus中输出结果 使用函数dbms_output.put_lin ...

  9. python3 @classmethod 和 @staticmethod 的区别

    如果您将某个东西定义为classmethod,这可能是因为您打算从类而不是类实例中调用它. 定义类方法的几种方式: 常规方式                       : 需要self隐士传递当前类 ...

  10. Ideal 报错之 Class ** is never used 解决办法

    错误信息: 解决办法: file  ------setting ---------inspections----------Groovy--------------Unuse Declaration  ...