jjzjj

scala - Spark : long delay between jobs

coder 2024-01-05 原文

所以我们正在运行提取数据并进行一些扩展数据转换并写入几个不同文件的 spark 作业。一切都运行良好,但我在资源密集型作业完成和下一个作业开始之间出现随机的扩展延迟。

在下图中,我们可以看到安排在 17:22:02 的作业用了 15 分钟才完成,这意味着我预计下一个作业将安排在 17:37:02 左右。但是,下一个工作安排在 22:05:59,即工作成功后 +4 小时。

当我深入研究下一个作业的 spark UI 时,它显示 <1 秒的调度程序延迟。所以我很困惑这="" 4="" 小时的延迟是从哪里来的。="">

(Spark 1.6.1 与 Hadoop 2)

更新:

我可以确认大卫在下面的回答是关于如何在 Spark 中处理 IO 操作的,这有点出乎意料。 (考虑到排序和/或其他操作,文件写入本质上是在幕后“收集”是有意义的。)但我对 I/O 时间不包括在作业执行时间中这一事实感到有点不安。我想您可以在 Spark UI 的“SQL”选项卡中看到它,因为即使所有作业都成功,​​查询仍在运行,但您根本无法深入研究。

我确信还有更多改进方法,但以下两种方法对我来说已经足够了:

  1. 减少文件数量
  2. parquet.enable.summary-metadata 设置为 false

最佳答案

I/O 操作通常会在主节点上产生大量开销。由于这项工作不是并行的,因此可能需要相当长的时间。由于它不是作业,因此不会显示在资源管理器 UI 中。 master节点完成的一些I/O任务示例

  • Spark 将写入临时 s3 目录,然后使用主节点移动文件
  • 文本文件的读取经常发生在master节点上
  • 写入parquet文件时,master节点会在写入后扫描所有文件以检查schema

这些问题可以通过调整 yarn 设置或重新设计代码来解决。如果您提供一些源代码,我也许可以查明您的问题。

Discussion of writing I/O Overhead with Parquet and s3

Discussion of reading I/O Overhead "s3 is not a filesystem"

关于scala - Spark : long delay between jobs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36524945/

有关scala - Spark : long delay between jobs的更多相关文章

  1. ruby - 分布式事务和队列,ruby,erlang,scala - 2

    我有一个涉及多台机器、消息队列和事务的问题。因此,例如用户点击网页,点击将消息发送到另一台机器,该机器将付款添加到用户的帐户。每秒可能有数千次点击。事务的所有方面都应该是容错的。我以前从未遇到过这样的事情,但一些阅读表明这是一个众所周知的问题。所以我的问题。我假设安全的方法是使用两阶段提交,但协议(protocol)是阻塞的,所以我不会获得所需的性能,我是否正确?我通常写Ruby,但似乎Redis之类的数据库和Rescue、RabbitMQ等消息队列系统对我的帮助不大——即使我实现某种两阶段提交,如果Redis崩溃,数据也会丢失,因为它本质上只是内存。所有这些让我开始关注erlang和

  2. Spark的常用SQL日期函数 - 2

    一、获取当前时间1、current_date当前日期(年月日)Examples:SELECTcurrent_date;2、current_timestamp/now()当前日期(时间戳)Examples:SELECTcurrent_timestamp;二、从日期字段中提取时间1、year,month,day/dayofmonth,hour,minute,secondExamples:SELECTyear(now());其他的日期函数以此类推month:1day:12(当月的第几天)dayofmonth:12hour,minute,second:分别对应时分秒2、dayofweek、dayofm

  3. ruby - Rubys 的 each_slice 的 Scala 版本? - 2

    Scala有Rubys的版本吗each_slice来自Array类? 最佳答案 Scala2.8有grouped将数据分成大小为n的block(可用于实现each_slice功能):scala>vala=Array(1,2,3,4,5,6)a:Array[Int]=Array(1,2,3,4,5,6)scala>a.grouped(2).foreach(i=>println(i.reduceLeft(_+_)))3711据我所知,在2.7.x中没有任何东西可以开箱即用,但是从take(n)和drop(n)来自RandomAccess

  4. ruby - Scala 缺少哪些动态语言(如 Ruby 或 Clojure)的特性? - 2

    当您选择Scala(或F#、Haskell、C#)等静态类型语言而不是Ruby、Python、Clojure、Groovy(具有宏或运行时元编程功能)等动态类型语言时,您在实践中失去了什么)?请考虑最好的静态类型语言和最好的(在您看来)动态类型的语言,而不是最差的。答案总结:恕我直言,Ruby等动态语言相对于Scala等静态类型语言的主要优势是:快速的编辑-运行周期(JavaRebel是否缩小了差距?)目前Scala/Lift社区比Ruby/Rails或Python/Django小得多可以修改类型定义(尽管动机或需要不是很清楚) 最佳答案

  5. Spark RDD转换成DataFrame的两种方式 - 2

    spark官方提供了两种方法实现从RDD转换到DataFrame。第一种方法是利用反射机制来推断包含特定类型对象的Schema,这种方式适用于对已知的数据结构的RDD转换; 第二种方法通过编程接口构造一个Schema,并将其应用在已知的RDD数据中。一、反射机制推断Schema实现反射机制Schema需要定义一个caseclass样例类,定义字段和属性,样例类的参数名称会被反射机制利用作为列名objectRddToDataFrameByReflect{//定义一个student样例类caseclassStudent(name:String,age:Int)defmain(args:Array[

  6. Spark Kafka流媒体 - 如何确定批次的末端 - 2

    我使用Kafka流媒体从KAFKA主题中消费。(KafkaDirect流)此主题中的数据每5分钟从另一个来源到达。现在,我需要处理每5分钟后到达的数据,并将其转换为SparkDataFrame。现在,流是数据的连续流。我的问题是,如何确定我已经完成了在Kafka主题中加载的第一组数据的阅读?(以便我可以将其转换为数据框架并开始我的工作)我知道我可以提及某个数字的批处理间隔(在JavastreamingContext中),但是即使那样,我也永远无法确定源将数据将数据推到主题的时间。欢迎任何建议。看答案如果我正确理解您的问题,您希望不创建批处理,直到阅读5分钟的所有数据。开箱即用的Spark不会提

  7. Spark Java:发布通话无法正常工作 - 2

    问题:帖子的请求参数作为请求主体,而不是请求参数。我正在使用下面的此语法来调用SparkJavaWeb服务。http://localhost:8080/cumbcustomer?custId#4&amp;name=fredj"SparkJava告诉我:请求IP0:0:0:0:0:0:0:0:1请求动词post请求接收到:CUSTID#4&amp;name=fredj(-&gt;request.body.body())url接收:http://localhost:8080/cumbscustomer有什么想法为什么这些变量作为请求主体而不是请求参数的一部分出现?提前致谢,看答案利用request

  8. ruby - 来自 Rubyist 的关于 Scala 的问题 - 2

    我最近在业余时间四处寻找学习一门新语言,Scala似乎很有吸引力。我有几个问题:不知道Java会强加一个挑战学习吗?那将会一个很大的缺点稍后的?(即人们多久依赖一次特定于Java的库?)差别有多大与ruby相比?(除了被静态类型)是否引入很多新术语,或者我会熟悉大多数语言机制?您会推荐哪些资源?我关注ProgrammingScala和BeginningScala书籍虽然主观,但使用Scala编程是否有趣?:P谢谢 最佳答案 Ruby和Scala之间有许多共同的概念。我已经有一段时间没有编写Ruby代码了,所以这并不详尽。RubySc

  9. Ruby vs Scala——各自的优缺点 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。有什么好处和限制Scala与Ruby比较的语言,尤其是从Web应用程序开发人员的角度来看?强烈欢迎比较图表和证明链接。P.S.这不是圣战题(-:

  10. ruby - Scala 的扩展性是否优于其他 JVM 语言? - 2

    这是我目前知道的唯一询问方式。据了解,Scala使用Java虚拟机。我以为Jruby也是。Twitter将其中间件切换为Scala。他们可以做同样的事情并使用Jruby吗?他们是否可以从Jruby开始,而不是因为扩展问题导致他们首先从Ruby迁移到Scala?我不明白Jruby是什么吗?我假设因为Jruby可以使用Java,所以它可以扩展到Ruby不能的地方。在这种情况下,一切都归结为静态类型与动态类型吗? 最佳答案 Scala是“可扩展的”,因为语言可以通过库进行改进,使扩展看起来像是语言的一部分。这就是为什么actors看起来像

随机推荐