首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于Spark面试题,你应该知道这些!

本篇博客,博主打算再出个番外篇,也就是再为大家分享一些Spark面试题,敢问各位准备好了么~ 1、Spark Application在没有获得足够资源,job就开始执行了,可能导致什么问题发生?...hadoop一个作业称为job,job里面分为map taskreduce task,每个task都是在自己进程运行,当task结束时,进程也结束。...driver端内存溢出 : 可以增大driver内存参数:spark.driver.memory (default 1g) map过程产生大量对象导致内存溢出: 具体做法可以在产生大量对象...数据不平衡导致内存溢出: 数据不平衡除了有可能导致内存溢出外,也有可能导致性能问题,解决方法上面说类似,就是调用repartition重新分区。...shuffle后内存溢出: shuffle内存溢出情况可以说都是shuffle后,单个文件过大导致

1.7K21

Spark性能调优篇七之JVM相关参数调整

Spark作业运行时,创建出来大量对象,每一次将对象放入JVM时,首先将创建对象都放入到eden区域其中一个survivor区域中;当eden区域一个survivor区域放满了以后,这个时候触发...一次full gc会使得所有其他程序暂停很长时间。最终严重影响我们Spark性能运行速度。...;另外一块儿,就是我们刚才所说,用来给spark算子函数运行使用,存放函数自己创建对象。...这是因为可能是说executor堆外内存不太够用,导致executor在运行过程,可能内存溢出;然后可能导致后续stagetask在运行时候,可能要从一些executor中去拉取shuffle...所以拉取数据时候,建立不了连接。然后超过默认60s以后,直接宣告失败。几次都拉取不到数据的话,可能导致spark作业崩溃。也可能导致DAGScheduler,反复提交几次stage。

1.8K10
您找到你想要的搜索结果了吗?
是的
没有找到

窗口函数为什么更容易出现性能问题?——一个优化案例

其实这篇是源自于我之前一个优化案例: 优化效果很明显,但手段很简单,难点在于对窗口函数内存使用理解。 这篇就从内存处理角度说一说窗口函数为啥更容易出现性能问题。...如果觉得这篇很难懂的话,很早之前总结过窗口函数相关一些知识点,这些知识点现在还是适用,阔以先看看: spark、hive窗口函数实现原理复盘 SparkSql窗口函数源码分析(第一部分) Hive...普通聚合函数物理执行计划分为SortBasedHashBased;而window则都是SortBased。...spark窗口函数处理逻辑入口在WindowExec类,在这个类里,我们能看到,ExternalAppendOnlyUnsafeRowArray是窗口函数用来存放每个窗口中数据缓存结构: 有两个参数...如果该值设置太低,数据频繁溢出导致磁盘写入过多,从而导致性能下降。

1.4K20

Spark 基础面试题

10.RDD共享变量: 在应用开发,一个函数被传递给Spark操作(例如mapreduce),在一个远程集群上运行,它实际上操作是这个函数用到所有变量独立拷贝。这些变量会被拷贝到每一台机器。...map过程产生大量对象导致内存溢出 这种溢出原因是在单个map中产生了大量对象导致,例如:rdd.map(x=>for(i <- 1 to 10000) yield i.toString),这个操作在...数据不平衡导致内存溢出 数据不平衡除了有可能导致内存溢出外,也有可能导致性能问题,解决方法上面说类似,就是调用repartition重新分区。这里就不再累赘了。...shuffle后内存溢出 shuffle内存溢出情况可以说都是shuffle后,单个文件过大导致。...executor-cores这个参数的话,就有可能导致,每个Executormemory是一样,但是cores数量不同,那么在cores数量多Executor,由于能够同时执行多个Task,就容易导致内存溢出情况

65420

Spark面对OOM问题解决方法及优化总结

SparkOOM问题不外乎以下两种情况 map执行内存溢出 shuffle后内存溢出 map执行内存溢出代表了所有map类型操作,包括:flatMap,filter,mapPatitions...在Spark-1.6.0后加入了堆外内存,进一步优化了Spark内存使用,堆外内存使用JVM堆以外内存,不会被gc回收,可以减少频繁full gc,所以在Spark程序,会长时间逗留再Spark...2.数据不平衡导致内存溢出: 数据不平衡除了有可能导致内存溢出外,也有可能导致性能问题,解决方法上面说类似,就是调用repartition重新分区。这里就不再累赘了。...3.coalesce调用导致内存溢出: 这是我最近才遇到一个问题,因为hdfs不适合存小问题,所以Spark计算后如果产生文件太小,我们会调用coalesce合并文件再存入hdfs。...RDD对象,这虽然不一定会导致内存溢出,但是产生大量中间数据,增加了gc操作。

85610

Spark面对OOM问题解决方法及优化总结

SparkOOM问题不外乎以下两种情况 map执行内存溢出 shuffle后内存溢出 map执行内存溢出代表了所有map类型操作,包括:flatMap,filter,mapPatitions...在Spark-1.6.0后加入了堆外内存,进一步优化了Spark内存使用,堆外内存使用JVM堆以外内存,不会被gc回收,可以减少频繁full gc,所以在Spark程序,会长时间逗留再Spark...2.数据不平衡导致内存溢出: 数据不平衡除了有可能导致内存溢出外,也有可能导致性能问题,解决方法上面说类似,就是调用repartition重新分区。这里就不再累赘了。...3.coalesce调用导致内存溢出: 这是我最近才遇到一个问题,因为hdfs不适合存小问题,所以Spark计算后如果产生文件太小,我们会调用coalesce合并文件再存入hdfs。...RDD对象,这虽然不一定会导致内存溢出,但是产生大量中间数据,增加了gc操作。

2.9K20

Spark会把数据都载入到内存么?

实际上是函数嵌套太深了。 按上面的逻辑,内存使用其实是非常小,10G内存跑100T数据也不是难事。但是为什么Spark常常因为内存问题挂掉呢? 我们接着往下看。 Shuffle本质是什么?...这就是为什么要分Stage了。每个Stage其实就是我上面说那样,一套数据被N个嵌套函数处理(也就是你transform动作)。...为什么Shuffle 容易导致Spark挂掉 前面我们提到,Shuffle不过是偷偷帮你加上了个类似saveAsLocalDiskFile动作。然而,写磁盘是一个高昂动作。...所以一不小心,就容易导致内存溢出了。这其实也是一个很无奈事情。 我们做Cache/Persist意味着什么?...这个才是说为啥Spark是内存计算引擎地方。在MR里,你是要放到HDFS里,但Spark允许你把中间结果放内存里。 总结 我们从一个较新角度解释了RDD Shuffle 都是一个什么样东西。

87420

如何应对大数据分析工程师面试Spark考察,看这一篇就够了

为什么考察SparkSpark作为大数据组件执行引擎,具备以下优势特性。 高效性。内存计算下,Spark 比 MapReduce 快100倍。...三者都会根据Spark内存情况自动缓存运算,这样即使数据量很大,也不用担心内存溢出。 三者有许多共同函数,如filter、map等。...1.driver端内存溢出 可以增大driver内存参数:spark.driver.memory (default 1g); 2.map过程产生大量对象导致内存溢出 这种溢出原因是在单个map中产生了大量对象导致...3.数据不平衡导致内存溢出 数据不平衡除了有可能导致内存溢出外,也有可能导致性能问题,解决方法上面说类似,就是调用repartition重新分区。...,就容易导致内存溢出情况。

1.6K21

Spark面试八股文(上万字面试必备宝典)

map 类型算子执行内存溢出如 flatMap,mapPatitions 原因:map 端过程产生大量对象导致内存溢出:这种溢出原因是在单个 map 中产生了大量对象导致针对这种问题。...shuffle 后内存溢出如 join,reduceByKey,repartition。 shuffle 内存溢出情况可以说都是 shuffle 后,单个文件过大导致。...Spaek 程序执行,有时候默认为什么产生很多 task,怎么修改默认 task 执行个数?...但是 spark 也有劣势,由于 spark 基于内存进行计算,虽然开发容易,但是真正面对大数据时候,在没有进行调优情况下,可能会出现各种各样问题,比如 OOM 内存溢出等情况,导致 spark...持久化数据丢失可能性更大,因为节点故障导致磁盘、内存数据丢失。但是 checkpoint 数据通常是保存在高可用文件系统,比如 HDFS ,所以数据丢失可能性比较低 27.

2.2K20

Spark报错与日志问题查询姿势指南

对于driver日志而言,代码println()show()等函数输出,一般都在stdout里,大部分重要报错信息都在stderr里。...2.2、小文件过多 小文件过多表现之一是各task读取数据量远小于一个HDFS block即128M或256M,它也导致任务执行效率较低,极端情况甚至导致HDFS Namenode内存压力大(...有时小文件多造成task数过多,导致driver full gc从而导致Spark UI网页打不开从而看不到Stages情况,因为driver内存有限且负责spark uimetrics信息状态维护...,也可以在SQLselect语句位置加入强制重分区Hint,重分区数即repartition()数字根据任务落地数据量而定,尽量让每个落地文件大小在256M或128M左右,如下所示: 小文件过多也可能导致内存溢出...第三种迹象,如果spark uijob或stages界面,正在运行job或stage只有少数task在长时间running,并且进入该stagedescription链接后,观察Metrics与

2K40

小文件对HDFS危害

一、究竟会出什么问题 因为HDFS为了加速数据存储速度,将文件存放位置数据(元数据)存在了NameNode内存,而NameNode又是单机部署,如果小文件过多,将直接导致NameNode内存溢出...NameNode内存数据将会存放到硬盘,如果HDFS发生重启,将产生较长时间元数据从硬盘读到内存过程。...四、小文件其它危害 小文件除了可能撑爆NameNode。另一个是hive或者spark计算时候影响它速度,因为spark计算时会将数据从硬盘读到内存,零碎文件将产生较多寻道过程。...五、题外话:HDFS为什么将Block块设置为128M 1、如果低于128M,甚至过小。一方面会造成NameNode内存占用率高问题,另一方面会造成数据寻址时间较多。...造成无法利用多DataNode优势,数据只能从从一个DN读取,无法实现多DN同时读取速率优势。

3.4K20

Spark 出现问题及其解决方案

,即48MB,此时,再加上reduce端执行聚合函数代码,可能创建大量对象,这可难导致内存溢出,即OOM。...这就导致有可能在Spark任务运行过程,由于频繁大量网络通讯,本地机器网卡流量激增。...当 Spark 作业包含 SparkSQL 内容时,可能碰到YARN-client模式下可以运行,但是YARN-cluster模式下无法提交运行(报出OOM错误)情况。...SparkSQL内部要进行很复杂SQL语义解析、语法树转换等等,非常复杂,如果sql语句本身就非常复杂,那么很有可能导致性能损耗内存占用,特别是对PermGen占用会比较大。...持久化与checkpoint使用 Spark持久化在大部分情况下是没有问题,但是有时数据可能丢失,如果数据一旦丢失,就需要对丢失数据重新进行计算,计算完后再缓存使用,为了避免数据丢失,可以选择对这个

94320

揭秘Spark应用性能调优

用缓存持久化来加速 Spark 我们知道Spark 可以通过 RDD 实现计算链原理 :转换函数包含在 RDD 链,但仅在调用 action 函数后才会触发实际求值过程,执行分布式运算,返回运算结果...通常需要多次迭代算法,在同一个 RDD 上执行很多次,反复 地重新加载数据重新计算导致时间浪费。更糟糕是,这些算法通常需要很长 RDD 链。...rdd1.count rdd1.collect 如果不调用 cache 函数,当 count collect 这两个 action 函数被调用时, 导致执行从存储系统读文件两次。...调用了 cache 函数,第一个 action 函数(count 函数)会把它运算结果保留在内存,在执行第二个 action 函数(collection 函数)时,直接在使用缓存数据上继续运算,...一个标记为 checkpointing Graph 导致下面的顶点 RDD 边 RDD 做 checkpoint。

96620

Apache Spark:来自Facebook60 TB +生产用例

可靠性修复 处理频繁节点重新启动 为了可靠地执行长时间运行作业,我们希望系统具有容错能力并从故障恢复(主要是由于正常维护或软件错误导致机器重启)。...由于大缓冲区整数溢出导致TimSort问题 (SPARK-13850):测试发现Sparkunsafe内存操作有一个导致TimSort内存损坏错误。...Spark executor内存不足,因为sorter存在导致指针数组无限增长错误。我们通过在没有更多可用于指针数组增长内存时强制将数据溢出到磁盘来解决该问题。...Jstack:Spark UI还在执行程序进程上提供按需jstack函数,可用于查找代码热点。...结果,大块内存未被使用并导致频繁溢出executor OOM。我们修复现在可以正确释放内存并使大型排序有效运行。我们注意到此次修复后CPU性能提高了30%。

1.2K20

Spark性能调优

作业频繁停止工作 ②老年代囤积大量短生命周期对象,导致频繁fullGC,Spark作业长时间停止工作 ③严重影响Spark作业性能运行速度   (2)Spark作业运行过程...Cache对内存要求不是很大,而task算子函数创建对象过多导致频繁GC(可以通过Spark UI查看Yarn界面,查看Spark作业运行统计,从而找到每个Stage运行情况,包括每个task...提升map操作性能   Spark每个Task处理一个RDDPartition,如果是普通map,加入partition内有100w条数据,那么taskmap函数fuction要执行 计算...,从而导致写出数据较多,reduce端缓冲区被填满,函数拉取缓冲区内数据进行处理,创建大量对象来不及回收导致OOM,所以可以适当减小缓冲区大小,从而使内存可以被及时回收;    (3) 如果整个Spark...1; 7.4、解决各种序列化导致报错   (1) 算子函数,如果使用到了外部自定义类型变量,则自定义变量必须是可序列化;   (2) 如果要将自定义类型作为RDD元素类型,那么自定义类型也需要是可序列化

1K20

Apache Spark 3.0.0重磅发布 —— 重要特性全面解析

2020618日,开发了近两(自201810份至今)Apache Spark 3.0.0正式发布!...此外,在数字类型操作,引入运行时溢出检查,并在将数据插入具有预定义schema表时引入了编译时类型强制检查,这些新校验机制提高了数据质量。...Databricks持续开发Koalas——基于Apache Sparkpandas API实现,让数据科学家能够在分布式环境更高效地处理大数据。...6.jpg Spark 3.0为PySpark API做了多个增强功能: 带有类型提示新pandas API pandas UDF最初是在Spark 2.3引入,用于扩展PySpark用户定义函数...Spark 3.0引入了对批处理流应用程序功能监控。可观察指标是可以在查询上定义聚合函数(DataFrame)。

4K00

Apache Spark 3.0.0重磅发布 —— 重要特性全面解析

2020618日,开发了近两(自201810份至今)Apache SparkTM 3.0.0正式发布!...即使由于缺乏或者不准确数据统计信息对成本错误估算导致生成初始计划不理想,但是自适应查询执行(Adaptive Query Execution)通过在运行时对查询执行计划进行优化,允许Spark...此外,在数字类型操作,引入运行时溢出检查,并在将数据插入具有预定义schema表时引入了编译时类型强制检查,这些新校验机制提高了数据质量。...Databricks持续开发Koalas——基于Apache Sparkpandas API实现,让数据科学家能够在分布式环境更高效地处理大数据。...Spark 3.0为PySpark API做了多个增强功能: 带有类型提示新pandas API pandas UDF最初是在Spark 2.3引入,用于扩展PySpark用户定义函数,并将pandas

2.3K20

Spark Streaming,Flink,Storm,Kafka Streams,Samza:如何选择流处理框架

这就是为什么分布式流处理在大数据世界变得非常流行原因。 如今,有许多可用开源流框架。有趣是,几乎所有它们都是相当新,仅在最近几年才开发出来。...与批处理不同,批处理以工作开始结束为界,而工作是在处理有限数据之后完成,而流处理则是指连续不断地处理天,永久到来无边界数据。...成熟度:从采用角度来看很重要,如果框架已经过大公司验证大规模测试,那就太好了。更有可能获得良好社区支持并在堆栈溢出方面提供帮助。...在Flink,诸如map,filter,reduce等每个函数都实现为长时间运行运算符(类似于StormBolt) Flink看起来像是Storm真正继承者,就像Spark批量继承了hadoop...可能是因为来源目的地均为Kafka以及从20176左右发布Kafka 0.11版本开始,仅支持一次。要启用此功能,我们只需要启用一个标志即可使用。

1.7K41

TiDB 2.0 GA Release

2018 4 27 日,TiDB 发布 2.0 GA 版。相比 1.0 版本,对 MySQL 兼容性、系统稳定性、优化器执行器做了很多改进。...* Raft snapshot 处理完之后立即通知 PD,加快调度速度 * 解决 RocksDB 刷盘导致性能抖动问题 * 提升在数据删除之后空间回收 * 加速启动过程垃圾清理过程 * 使用 `...请求扫描数据量,防止超时 * 限制接收 snapshot 过程内存占用,防止 OOM * 提升 CI test 速度 * 解决由于 snapshot 太多导致 OOM 问题 * 配置 gRPC...TiDB 于 2015 5 在 GitHub 创建,同年 12 发布 Alpha 版本,而后于 2016 6 发布 Beta 版,12 发布 RC1 版, 2017 3 发布 RC2...版,6 发布 RC3 版,8 发布 RC4 版,10 发版 TiDB 1.0,并在 2018 3 发版 2.0 RC1。

1.8K50
领券