摘要:
在使用 Spark 进行计算时,我们经常会碰到作业 (Job) Out Of Memory(OOM) 的情况,而且很大一部分情况是发生在 Shuffle 阶段。那么在 Spark Shuffle 中具体是哪些地方会使用比较多的内存而有可能导致 OOM 呢? 为此,本文将围绕以上问题梳理 Spark 阅读全文
摘要:
问题: 线上的spark thriftserver运行一段时间以后,ui的executor页面上显示大量的active task,但是从job页面看,并没有任务在跑。此外,由于在yarn mode下,默认情况是一个executor只能有一个active task,但是executor页面的activ 阅读全文
摘要:
kafka作为消息中间件和大数据相关的系统联系非常密切。其实,对于kafka本身而言,它已不仅仅定位于消息中间件,从0.10开始,kafka提供了Stream(KQL)计算功能,开始有了实时处理能力。由于目前kafka主要还是作为消息中间件来使用,所以当前对kafka相关原理的研究也主要集中在消息队 阅读全文
摘要:
之前分析过spark RPC的基本流程(spark RPC详解),其实无论是RPC还是Spark内部的数据(Block)传输,都依赖更底层的网络通信,本文将对spark的网络通信做一下剖析。 1,概要 对于大数据相关的基础组件(Hadoop,HBase,Spark,Kafka),网络通信部分主要有两 阅读全文
摘要:
本文主要打算对spark内部的序列化机制以及在shuffle map中起衔接作用的MapOutputTracker做一下剖析。主要涉及具体实现原理以及宏观设计的一些思路。 1,spark序列化 任何一个分布式框架,序列化都是其必不可少并且很重要一部分,spark也不例外。spark设计序列化的主要类 阅读全文
摘要:
checkpoint在spark中主要有两块应用:一块是在spark core中对RDD做checkpoint,可以切断做checkpoint RDD的依赖关系,将RDD数据保存到可靠存储(如HDFS)以便数据恢复;另外一块是应用在spark streaming中,使用checkpoint用来保存D 阅读全文
摘要:
spark streaming是建立在spark core之上的,也就说spark streaming任务最终执行还是依赖于RDD模型。在转化成最终的RDD模型执行前,spark streaming主要需要处理以下几个问题: a,每个batch的RDD是怎么根据用户的代码生成的(对应JobGener 阅读全文
摘要:
在spark内部,rpc可以用来实现不同组件(Driver, executor,client)之间的远程交互。而在同一组件内,spark还有事件监听机制,如spark中各种指标的采集主要就是通过事件监听机制获取的。另外,本文也会spark中metrics的采集过程做一个简要分析。 1,spark事件 阅读全文
摘要:
之前已经对spark core做了较为深入的解读,在如今SQL大行其道的背景下,spark中的SQL不仅在离线batch处理中使用广泛,structured streamming的实现也严重依赖spark SQL。因此,接下来,会对spark SQL做一个较为深入的了解。 本文首先介绍一下spark 阅读全文
摘要:
之前分析了spark任务提交以及计算的流程,本文将分析在计算过程中数据的读写过程。我们知道:spark抽象出了RDD,在物理上RDD通常由多个Partition组成,一个partition对应一个block。在driver和每个executor端,都有一个Blockmanager。Blockmana 阅读全文