IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Spark Listener & Spark on Yarn -> 正文阅读

[大数据]Spark Listener & Spark on Yarn

Saprk 监控

目前掌握了
作业运行中的监控,4040。
运行结束的HistoryServer,18080。也可以根据Api自己开发。

作业运行中的监控也可以有API自己开发。

SparkListener

继承SparkListenerInterface,实现作业开始前、后等需要做的操作。
直接实现SparkListener,覆写需要的方法就可以。

override def onTaskEnd(taskEnd: SparkListenerTaskEnd): Unit = {
    val metrics = taskEnd.taskMetrics  //通过metrics可以拿到很多信息

    val taskMetricsMap = scala.collection.mutable.HashMap(
      "executorDeserializeTime" -> metrics.executorDeserializeTime, //executor的反序列化时间
      "executorDeserializeCpuTime" -> metrics.executorDeserializeCpuTime, //executor的反序列化的 cpu时间
      "executorRunTime" -> metrics.executorRunTime, //executoor的运行时间
      "resultSize" -> metrics.resultSize, //结果集大小
      "jvmGCTime" -> metrics.jvmGCTime,
      "resultSerializationTime" -> metrics.resultSerializationTime,
      "memoryBytesSpilled" -> metrics.memoryBytesSpilled,
      "diskBytesSpilled" -> metrics.diskBytesSpilled,
      "peakExecutionMemory" -> metrics.peakExecutionMemory //executor的最大内存
    )
  // ....
}

然后在SparkConf中set自定义的SparkListener监听器。

new SparkConf().set("spark.extraListeners","com.gargantua.listener.MySparkListener")

在配置文件中指定的话,对所有作业都监听。

jmx

http://gargantua:9870/jmx 可以拿到hdfs的json格式的运行信息
同理,yarn的json也可以获取http://gargantua:8123/jmx

于是可以带参数的http请求查询指定的信息
http://gargantua:9870/jmx?qry=…
可以定时调度去获取信息,再记录到DB,在由UI展示、邮件或短信电话告警

Spark on Yarn

MR、Spark、Flink on Yarn 都是因为有实现了对应的ApplicationMaster才能跑作业
MRAM、SparkAM、FlinkAM

确保HADOOP_CONF_DIR指向hadoop集群

不然会报错的

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

Spark on Yarn 可以 client提交yarn,可以spark集群提交yarn

client提交yarn

spark-shell 可以直接在本地启动,也可以提交jar到yarn,也可以on Yarn 启动。

spark-shell \
--master yarn \
--deploy-mode client \
--class org.apache.spark.examples.SparkPi \
/home/hadoop/app/spark-3.2.0-bin-hadoop3.2/examples/jars/spark-examples*.jar \
10

scala>

client提交yarn后有如下进程

12039 SparkSubmit        // spark-shell  driver
12231 ExecutorLauncher   // 其实就是ApplicationMaster,只为区分 cluster-mode还是 client-mode
12298 YarnCoarseGrainedExecutorBackend   // executer
12330 YarnCoarseGrainedExecutorBackend   // executer

cluster提交yarn

不能再用spark-shell,spark集群只需要提交就行,没有、没法打开终端

spark-submit \
--master yarn \
--deploy-mode cluster \
--class org.apache.spark.examples.SparkPi \
/home/hadoop/app/spark-3.2.0-bin-hadoop3.2/examples/jars/spark-examples*.jar \
10

提交后有如下进程

16185 SparkSubmit
16323 ApplicationMaster
16488 YarnCoarseGrainedExecutorBackend
16539 YarnCoarseGrainedExecutorBackend
区别总结

client

	driver是运行在提交的机器的 + 调度、分发作业(本机终端不能退出,不然driver和所有的executor关系就断了)
	AM: 从YARN上申请资源
	pi:在driver端是看的到日志输出的

cluster

	driver是运行在am里面的(毕竟现在集群下有多个spark,总不能让driver是运行在每个提交的机器)
	AM: 从YARN上申请资源 + 调度、分发作业
	pi:日志在终端上是看不到的,你的去container里面找

对于client模式来说,提交的机器可以是集群外的。
在这个条件下才有一个说法,少用client模式,因为driver与executer的交互网络开销会非常大。对于提交机器是属于集群内一台机器而言,cluster模式和client模式区别不大。

cluster模式下,driver与executer仍然避免不了网络交互,只不过都在一个集群内(局域网内、同机架内)。

其实区别不大,但生产还是推荐cluster模式;自测可以client,方便查日志。

ps -ef | grep [pid]
僵尸进程就把他父进程也杀掉,父进程的pid在他pid的后面。

spark-shell与spark-submit

spark-submit

主要是用于提交编译并打包好的Jar包到集群环境中来运行,和hadoop中的hadoop jar命令很类似,hadoop jar是提交一个MR-task,而spark-submit是提交一个spark任务。

相对于spark-shell来讲它不具有REPL(交互式的编程环境),在运行前需要指定应用的启动类,jar包路径、参数等内容。可以设置不同的Spark所支持的集群管理和部署模式。

spark-shell

这个命令启动一个可给用户输入spark命令的shell,是一个REPL环境。指定master时通过spark-submit提交作业,不指定master时会启动一个SparkSubmit进程来模拟Spark运行环境。

通过查看spark-shell源码可以发现在主main中他会调用spark-submit 的类的入口。运行spark-shell提交任务后最终还是由spark-submit来完成。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 11:06:45  更:2022-05-06 11:06:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:17:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码