
Spark
runzhliu
毕业于中山大学,目前专注于容器和大规模并行计算
展开
-
【Spark】A Step-by-step Guide for Debugging Memory Leaks in Spark Applications
翻译自 Databricks 的博客: https://databricks.com/blog/2020/12/16/a-step-by-step-guide-for-debugging-memory-leaks-in-spark-applications.html这篇文章是翻译 Databricks 的一篇博客,这是一篇很不错的文章,看完之后,大家基本可以靠自己一步一步地去发现 Spark 应用内存泄漏的原因了,这里就不做完整的翻译了,根据大纲大概解读一下。This job kept on cr.原创 2021-01-24 16:48:19 · 152 阅读 · 0 评论 -
【Spark Operator】webhook的NamespaceSelector和ObjectSelector
之前走读 Spark Opeartor Webhook 部分的代码的时候发现,因为业务种类很多,我们需要在 webhook 层加很多参数和配置来控制用户的一些行为但是发现原生的 Spark Operator 只接受 NamespaceSelector 也就是这种行为的控制职能针对一个命名空间的对象。这个范围对我们来说有点太大了,我们喜欢更精细一点去控制 Webhook 的效果,所以这里可以通过修改 Webhook,引入 ObjectSelector 来控制。修改 spark-operator webhook原创 2020-12-31 11:25:42 · 690 阅读 · 0 评论 -
【pyspark】parallelize和broadcast文件落盘问题(后续)
之前写过一篇文章,pyspark】parallelize和broadcast文件落盘问题,这里后来倒腾了一下,还是没找到 PySpark 没有删掉自定义类型的广播变量文件,因为用户的代码是一个 While True 的无限循环,类似下面的逻辑(下面的代码实际上 destroy 是可以删除落盘的广播变量文件的,但是用户的代码删不掉,因为没有仔细研究用户的代码 ,所以其实这个问题我感觉也不算 PySpark 的问题,只是在帮用户解决问题的时候另辟蹊径了 ,所以就记录下来了)。class KK: de原创 2020-08-15 18:54:39 · 288 阅读 · 0 评论 -
【pyspark】parallelize和broadcast文件落盘问题
parallize() 和 boradcast() 方法,在不使用 spark.io.encryption.enabled=true 的情况下,都会以文件的格式跟 JVM 交互,因为将一个大的 dataset ongoing def parallelize(self, c, numSlices=None): """ Distribute a local Python collection to form an RDD. Using xrange is原创 2020-08-14 12:15:07 · 605 阅读 · 0 评论 -
【Spark】常见的编译错误
文章目录1 java.lang.ClassNotFoundException: xsbt.CompilerInterface2 Unable to find: dev/checkstyle-suppressions.xml3 Unable to find configuration file at location scalastyle-config.xml4 Summary1 java.lang.ClassNotFoundException: xsbt.CompilerInterface改动了一下 S原创 2020-08-12 20:29:34 · 1951 阅读 · 0 评论 -
【pyspark】广播变量のdestroy...
今天发现用户的 pyspark 程序 driver 所在的母机的磁盘告警了,进去 pyspark driver pod 一看,发现有个目录数据多达1T了。一开始怀疑是 shuffle 文件没有清理干净,但通过 lsof 等命令查看是哪些进程在写,发现依然...原创 2020-08-11 16:42:31 · 647 阅读 · 0 评论 -
【Spark Operator】webhook的分析
spark operator 是支持 webhook 的,也就是说,可以通过 webhook 来给 spark operator 创建的 pod 加上如 NodeSelector, PodAffinity, InitContainer 等特性。这在原生的 Spark 里只能通过配置 Pod Template 来做,个人觉得 Pod Template 不如 webhook 方便,而且 Spark 的逻辑里没有对 Pod Template 进行语法的校验。但是目前 // NamespaceSelector原创 2020-08-03 18:09:27 · 715 阅读 · 0 评论 -
【Kubernetes】additionalPrinterColumns的配置
如果有运行和监控 Kubernetes Operator 的经验的话应该知道,假设文中说的 Operator 都是 Spark Operator,那么作为管理员 ,可能需要经常到 k8s master 上 kubectl get sparkapp -n xxx 这种的操作,来看一下某个 namespace 下的 SparkApp 的情况,但是默认我们只能打出该 namespace 下所有的 SparkApp 的 Name 字段,显然这样是没什么意义的,比较有意义的,是需要知道哪些 SparkApp 是在运行原创 2020-08-02 15:39:03 · 1195 阅读 · 0 评论 -
【Spark on K8S】Spark里的k8s client
Spark on K8S 在 submit 的时候默认是直接在 K8S Master 节点提交,通过 --master 或者 SparkConf 中的 spark.master 来指定。The Spark master, specified either via passing the --master command line argument to spark-submit or by setting spark.master in the application’s configuration,原创 2020-08-02 15:25:53 · 564 阅读 · 0 评论 -
【IDEA】阅读Spark源码,配置Scala SDK
很久没有看 Spark 的源码了,打开 IDEA,一堆报错,看了一下主要是 Scala 的问题,所以先删掉了 IDEA 里下载的 Scala SDK,然后重新安装,重新配置。观看视频,最后可以看到,如果是通过 IDEA 来下载 Scala SDK 的包,默认是用 ivy 来做包管理工具的,你也可以用 maven 来下载,下载好后指定到 maven 下载到的地址。 【IDEA】Spark源码配置Scala SDK原创 2020-08-02 15:04:23 · 260 阅读 · 0 评论 -
【Spark】用scala2.11编译打包构建镜像
如果关注 Spark 社区的同学已经知道,从 Spark 3.0 开始,就不再支持用 Scala 2.11 来编译了,Scala 2.11 相关的依赖也被 Owen 去掉了,所以如果要用 Spark 3.0 的同学就需要用 Scala 2.12 去编译打包了。而如果还在用 Spark 2.x 版本的,至少在 2.4.5 的版本中,已经是将 Scala 2.12 作为默认的 Scala 版本了,如果用户的程序是用 Scala 2.11 写的,也需要将 Spark 用 Scala 2.11 编一次,而 Ma原创 2020-07-27 09:41:52 · 1455 阅读 · 0 评论 -
【Spark Operator】核数设置Cores/Cores Limit/Cores Request,你搞清楚没有?
我们先看下 Spark原创 2020-07-18 10:35:21 · 1322 阅读 · 0 评论 -
【Spark Operator】集成Airflow
我们的任务流调度是采用 Airflow,画出 DAG 之后再按序执行,其中 Etcd 是我们很重要的组件,所以封装出一个 Airflow 的 Etcd Operator,然后将任务写到 Etcd,而在集群里有个 Watcher 的程序会监听 Etcd 任务的 key,一旦发现就会通过 Spark Operator 的 Spark Application Client 把任务提交到 api-server。...原创 2020-07-17 07:25:54 · 685 阅读 · 0 评论 -
【Spark on Kubernetes】Executor环境变量
今天在给 Executor 配置环境变量的时候,以为 Executor 环境变量跟 Driver 一样是通过 spark.kubernetes.driverEnv.XXX=YYY,最后发现其实是 spark.executorEnv,要注意 Env 的大小写,都是细节…可以看到下图,其实 Spark on Kubernetes 的文档,并没有写,所以 Executor 环境变量就是普通的参数即可。...原创 2020-07-15 16:25:57 · 921 阅读 · 0 评论 -
【spark operator】remote error: tls: bad certificate
用 spark operator 的 Helm Charts 部署 spark operator,因为 spark operator 支持通过 webhook 来给 Driver/Executor Pod 添加 initContainer 这些选项,但是部署完之后发现下面的错误。因为是证书问题,所以一下子就锁定是创建 webhook 服务的过程有问题了。所以查一下 webhook init 的 Job 的日志可以看到下面的错误。这个问题是因为之前在部署的时候,直接使用 spark operator原创 2020-06-16 10:11:12 · 2267 阅读 · 0 评论 -
Spark on Kubernetes PodTemplate 的配置
文章目录@[toc]1 Overview2 PodTemplate3 Example4 Summary1 Overview本文主要讲 Apache Spark 在 on Kubernetes 的 PodTemplate 的问题,以及也会讲到 Spark Operator 里关于 PodTemplate 的问题,当然也会讲到 Apache Spark 2.2 on Kubernetes 那个 F...原创 2020-04-02 11:25:42 · 1563 阅读 · 0 评论 -
Spark 2.2 on K8S 和 Kubernetes v1.14
文章目录就像之前写过很多关于 Spark on K8S 的文章,Spark 2.2 是 Fork 出来的版本,虽然经受住了我们部门超大规模的 Spark 计算业务的考验,但是由于 Spark 社区很快就在 2.3 跟进了 on K8S 的模块,所以 Spark 2.2 是很早就被废弃并且不维护的,所以如果此时还想用 Spark 2.2 上生产环境,是非常危险的,因为很多 Bug,是得不到反馈的...原创 2020-03-26 16:24:05 · 237 阅读 · 0 评论 -
Spark Opeartor的指标体系
文章目录1 Overview2 Metrics2.1 Spark Metrics2.2 Workqueue Metrics2.3 指标初始化2.4 其他2.5 工作时的指标3 Summary1 Overviewspark-on-k8s-operator,下文简称 Spark Operator, 背景知识就不介绍太多了,本文主要分享一下 Spark Operator 的指标系统是如何构建的,之后...原创 2020-02-22 09:30:16 · 580 阅读 · 1 评论 -
Spark两个rdd join发生数据倾斜的典型情况
有两个RDD,分别是RDDA[Ka, Va] 和 RDDB[Kb, Vb],数据量都比较大,在做join操作的时候,可以看出,shuffle read 有严重的数据倾斜现象,导致拖慢了整个 job 的速度:其实从上述问题中,可以看出来,index=0 的 task 必然有问题,如果不熟悉自己的数据分布的话,很容易误以为自己的数据分布是均匀的,所以建议打印出来前十个 key 出来看看。否则就...原创 2020-02-03 14:07:40 · 629 阅读 · 0 评论 -
Spark 3.0 对 GPU 做了什么支持
Spark 本身在数据处理流程里占据非常重要的地位,而在人工智能的战场,传统 Spark 能带来什么呢?在深度学习里,模型训练一般都被 Tensorflow, PyTorch 等深度学习框架占领了,而 Spark 提供的 GraphX 和 MlLib 可以做一些机器学习的东西,但是在深度学习的战场里,明显没有什么优势,最大的问题就在于硬件加速上,3.0 以前的社区版 Spark 是没有任务调度 ...原创 2020-02-03 11:09:26 · 2290 阅读 · 0 评论 -
IDEA 本地运行 Spark Demo 报错
运行spark demo时出现java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)。这个问题可以说是新手必须会遇到的问题了,主要原因是环境中的 Scala 版本和 Spark 的 Scala 版本不一致所导致的。很多文章也提到了,把 pom.xml 文件改一下,到 Project 信息里查看 Sc...原创 2019-11-28 09:00:53 · 607 阅读 · 0 评论 -
Spark Operator 是如何提交 Spark 作业
文章目录OverviewSpark Operator 中的 spark-submit 命令SummaryOverview本文将 Spark 作业称为 Spark Application 或者简称为 Spark App 或者 App。目前我们组的计算平台的 Spark 作业,是通过 Spark Operator 提交给 Kubernetes 集群的,这与 Spark 原生的直接通过 spark-...原创 2019-10-12 16:21:37 · 1372 阅读 · 0 评论 -
Spark on Kubernetes 动态资源分配
文章目录1 Overview2 Spark on Kubernetes 的发展3 Dynamic Resource Allocation 动态资源申请4 External Shuffle Service5 Spark on Kubernetes 的动态资源申请6 Summary1 Overview本文主要讲述了 Spark on Kubernetes 的发展过程和 Dynamic Resour...原创 2019-10-04 21:21:54 · 1731 阅读 · 2 评论 -
Spark 3.0.0-SNAPSHOT Access Kerberized HDFS
文章目录1 Overview2 Design1 OverviewSpark 2.2 on K8S 的 Fork 已经废弃近两年了,那时候的几个主力开发也全部转移到 Spark 2.3/2.4 以及即将发布的 3.0 的 on K8S 模块的开发了。3.0 相对于 2.2 的 Fork 除了关于 Spark App 的管理外,大部分特性都是 2.2 的改良,甚至镜像文件都只剩下一个(更方便管理...原创 2019-07-04 18:37:22 · 788 阅读 · 0 评论 -
Spark 2.2/2.3/2.4 的 Dynamic Resource Allocation
文章目录1 Overview2 Comparison3 Summary1 Overview因为有计划将 K8S 上的 Spark 2.2 升级到更新的版本,关于动态资源扩展,是一个比较关心的问题。2 Comparison先看看目前 Spark 2.4.3 里 KubernetesClusterSchedulerBackend 是怎么写的。所以说,这部分的工作在是在 Feature Wo...原创 2019-06-07 07:26:02 · 605 阅读 · 0 评论 -
在 K8S 部署一个 Spark History Server - 篇3
文章目录1 Overview2 部署3 SummaryHistory Server -> HS1 Overview因为这个系列的主要是想讲怎么在 K8S 上运行 HS,所以篇3讲述的就是这个,假设你已经有一个 K8S 集群,一个 build 好的 image,本文只是将 HS 运行在 K8S 上,关于日志和其他配置的最佳实践,本文不提供参考。2 部署要将 HS 部署在 K8S ...原创 2019-08-26 10:27:33 · 963 阅读 · 0 评论 -
Spark 面试题系列-2
文章目录1 RDD 如何通过记录更新的方式容错2 Spark 优越性Spark 的几个优势MapReduce 与 Spark 相比,有哪些异同点3 Transformation 和 action 是什么?区别?举几个常用方法4 RDD 容错方式5 可以解释一下这两段程序的异同吗6 说说 map 和 mapPartitions 的区别7 groupByKey 和 reduceByKey 是属于 Tr...原创 2019-07-26 10:44:36 · 921 阅读 · 0 评论 -
Spark 2.2 on K8S Dynamic Resource Allocation
文章目录1 Background2 Practice2.1 spark shuffle service2.2 spark groupbytest3 Summary1 Background离线计算的 Spark 任务中,会提供「最小副本数」作为离线计算任务的 Executor 数。也就是说,当 Spark Job 最大的资源数就是500个 Executor,这样会导致 task 数量较多的任务一...原创 2019-06-18 10:51:02 · 523 阅读 · 0 评论 -
Spark 程序优化建议
文章目录1 RDD 缓存2 并行度3 Jobs/Stages 太多1 RDD 缓存Persist 到内存的 RDD,比较多,9T左右,Excutor 一共分配了25T内存。剩下给 Shuffle 的空间不算大了,所以会引起频繁的 GC。建议:减少缓存级别,可以适当持久化到磁盘的方式保存 RDD。采用 Kryo 的序列化方式,减少所需要的内存空间合理的 Cache 会带来性能的飞跃...原创 2019-06-19 18:15:33 · 282 阅读 · 0 评论 -
Spark on K8S 访问 Kerberized HDFS
文章目录1 Overview2 Practice2.1 前提条件2.2 部署 Kerberized HDFS2.3 Spark 程序访问 HDFS3 Summaryhttps://databricks.com/session/apache-spark-on-k8s-and-hdfs-security1 OverviewSpark 从2.3开始支持 Native 的 K8S 作为 reso...原创 2019-06-03 15:53:21 · 2058 阅读 · 0 评论 -
Spark persist MEMORY_AND_DISK & DISK_ONLY
文章目录1 Overview2 Summary1 Overview假设程序中需要对一个接近 3T 的模型文件进行 cache。3T 的文件: hdfs://xxx:9000/xxx_graphobject Persona { def main(args: Array[String]): Unit = { val spark = SparkSession .b...原创 2019-06-19 11:24:22 · 3923 阅读 · 0 评论 -
spark shell 配置 Kryo 序列化
文章目录修改默认序列化方式Reference修改默认序列化方式Spark 默认使用 Java Serialization 作为序列化方式,但是这种序列化方式一般会被认为性能和效率一般。因此 Spark 官方是推荐使用 Kryo 来代替默认的序列化方式的,为了便于调试,我们可以在 spark-shell 环境中更改默认的配置参数,使得默认的序列化方式变为 KryoSerializer。$ ex...翻译 2019-06-19 08:41:30 · 357 阅读 · 0 评论 -
Spark-Submit 和 K8S Operation For Spark
文章目录1 Overview2 译文2.2 A Deeper Look At Spark-Submit2.3 How Does Spark-Submit Work2.4 A Look At Kubernetes Operator For Apache Spark2.4 How Kubernetes Operator For Spark Works3 Summary1 Overview本文翻译自...原创 2019-05-24 21:20:12 · 1690 阅读 · 0 评论 -
Delta Lake 学习笔记(四) - 名词解释
文章目录1 Overview2 名词解释2.1 ACID2.2 SNAPSHOT2.3 MetaData2.4 事务日志2.5 CheckSum2.6 Protocol3 Summary1 Overview在了解 Delta Lake 之前,我觉得有必要解释一下经常出现的一些名词,这里收集记录一下。如果跟我一样是菜鸡,可能你也需要看一下…2 名词解释2.1 ACIDACID 就是指数据库...原创 2019-05-09 09:31:24 · 730 阅读 · 0 评论 -
Spark的Dockerfile分析
文章目录1 Overview2 Spark里的Kubernetes2.1 Dockerfile2.2 Entrypoint3 Summary看完的老铁,可以赏个赞啊!1 OverviewSpark 容器化的前提是需要 Spark 的镜像文件,那么怎么 build 呢?Spark 官方是提供了 Dockerfile 的,并且也提供了脚本工具,可以自行 build 并发布到自己的 Restr...原创 2019-05-01 08:51:05 · 901 阅读 · 0 评论 -
Spark on Kubernetes在Mac的Demo
文章目录1 Overview2 Start2.1 部署本地的 K8S 集群2.2 Spark 跑起来2.3 应用日志3 Summary1 Overview讲真,Spark 2.3 开始原生支持 K8S,按照Spark 2.4 官网的方法一开始真的没跑起来,K8S Dashboard 又一堆问题,可能我太菜了,头疼。结果我再仔细看看官方指导,发现…2 Start2.1 部署本地的 K8S ...原创 2019-04-29 17:55:31 · 863 阅读 · 0 评论 -
深入浅出Spark的Checkpoint机制
文章目录1 Overview1.1 LocalRDDCheckpointData1.2 ReliableRDDCheckpointData2 Checkpoint尝试3 Summary1 Overview当第一次碰到 Spark,尤其是 Checkpoint 的时候难免有点一脸懵逼,不禁要问,Checkpoint 到底是什么。所以,当我们在说 Checkpoint 的时候,我们到底是指什么?...原创 2019-04-08 12:17:46 · 527 阅读 · 0 评论 -
Spark history server fails to render compressed inprogress history file in some cases
文章目录1 Overview2 复盘3 Fix1 Overview我们目前生产环境,包括 Spark History Server 用的都是 Spark 2.2.0 的 Fork 版本,所以社区有些基于 2.2.0 甚至之前版本的 Fix 是没有合并进来的。近期在看 Spark History Server 的时候,偶尔会发现无法访问。2 复盘检查 Spark History Server...原创 2019-06-22 15:26:35 · 241 阅读 · 0 评论 -
加速Spark编译
文章目录今天看到 Spark 有一个挺好玩的 PR,打算本地合进来测试一下,那么这样就涉及到重新编译 Spark 的操作了。看着本子已经挂着 Docker For Mac,打开 Kubernetes 已经吃掉了 8G 内存,还有若干 IDEA 打开着,我的本子一直呼呼在叫。想起来以前在公司都是拿着测试服务器来做打包编译这些杂事的,所以到服务器上配置一下就好。当然很多公司的服务器都是跟外网隔...原创 2019-06-26 21:49:59 · 403 阅读 · 0 评论 -
Spark 面试题系列
之前在知乎上整理过一些 Spark 常问的面试题,知识有点老旧了,而且当时没有太注重排版,计划从这篇开始,逐渐将原来的面试题文档给取代掉,预计每篇大概整理10条问题,对 Spark 一些基础知识点,尤其是面试的时候会碰到的问题,来一个总结。总结的顺序可能是无序的,也就是说,不一定是由浅入深,但是应该是比较「口水化」的问答模式,适合对 Spark 还不是相当熟悉的读者。...原创 2019-07-24 18:41:49 · 790 阅读 · 1 评论