生产环境中的spark
生产环境中的spark
breeze_lsw
打杂工程师
展开
-
Delta Presto Integration & Manifests 机制
Delta Lake 在 0.5 之前只支持通过 Spark 读取数据,在新版本中增加了其他处理引擎通过 manifest 文件访问 Delta Lake 的能力。下文以Presto 为例说明如何通过 manifest 文件访问数据,manifest 文件的生成及其一些限制。原创 2019-12-17 11:46:18 · 1634 阅读 · 0 评论 -
Delta Lake 平台化实践(离线篇)
Delta Lake 是什么?简单的说就是为大数据场景添加了事务功能,并且支持了 update/delete/merge into 等功能, Delta Lake 初探。要将 Delta Lake 与 spark2.4 sql 以及大数据平台打通还是有一些工作需要去做,下文是在该过程中的一些实践及思考。目录SQL 支持DMLQueryInsert平台化工作浏览 delta 数据元数据兼容碎...原创 2019-12-15 21:18:26 · 2973 阅读 · 1 评论 -
Spark 小文件合并优化实践
对 spark 任务数据落地(HDFS) 碎片文件过多的问题的优化实践及思考。原创 2019-10-24 11:04:37 · 8414 阅读 · 4 评论 -
Spark 数据读取冷启动优化分析
Spark 读取数据冷启动 (在一个 Session 中第一次读取该数据) 时,会从文件系统中获取文件的一些元数据信息用于优化,如果一个目录下的文件过多,就会比较耗时(可能达到数十分钟),该逻辑在 InMemoryFieIndex 中实现。下文针对该过程进行分析。文章目录InMemoryFileIndexbefore spark 2.1after spark 2.1优化 HDFS 获取 F...原创 2019-05-27 18:35:53 · 2486 阅读 · 0 评论 -
Delta 初探
Delta Lake 初探Delta Lake在说 Delta Lake 之前,不得不说下近几年火热的 Data Lake ,Data Lake 的主要思想是将企业中的所有数据进行统一管理。例如基于 Hadoop 的 Data Lake 方案可以非常低成本的存储所有类型的数据,但是显而易见的,它只支持批量插入,用户读取时无法获取当前更新的数据,多用户写还可能会发生异常,数据并不是非常可靠。...原创 2019-04-29 01:01:00 · 6265 阅读 · 1 评论 -
使用 spark sql extensions 实现 skew join
文章目录背景实现方式原理用法语法编译&配置Test局限性参考背景使用 Join 时,如果出现数据倾斜就会导致OOM或者单task长时间执行的现象,如果是大小表关联的场景,还可以使用 MAPJOIN 的方式来解决,如果遇到两张大表目前还没有比较好的解决方案。实现方式使用spark sql extensions 的扩展功能,增加自定义 hint 在 sql parser 层对相关逻辑进...原创 2019-03-12 01:15:57 · 2518 阅读 · 1 评论 -
使用 aspectj 对 spark 进行拦截
开源产品要想用的得心应手免不了要根据公司的业务/场景对其做一些改造,如果直接在源码的层面对其修改,当时可能用的很爽,但后期与社区代码的合并,版本升级可能会变成一场噩梦。对于一个平台来说,使用者对技术本身是不敏感的,所以我们需要增加一些限制来减少集群的一些不可控情况,例如不断的写入新表/新数据却不记得删除,大量不按规范创建的表名等情况。与此同时应尽量让技术对用户透明,比如让其无感...原创 2018-09-04 01:30:38 · 1664 阅读 · 5 评论 -
使用 jvm-profiler 分析 spark 内存使用
文章目录背景jvm-profiler分析总结背景在生产环境中,为了提高任务提交的响应速度,我们研发了类似 Spark Jobserver 的服务,各种类型的 spark 任务复用已经启动的 Spark Application,避免了 sparkContext 初始化冷启动的过程。但是这些服务的内存是固定的,因此开放了用户自定义 Executor 的权限,不过也带来了很多问题,最典型的就是内存...原创 2018-10-27 15:53:57 · 2237 阅读 · 3 评论 -
使用 Prometheus 和 Grafana 监控 Spark 应用
背景每个开发者都想了解自己任务运行时的状态,便于调优及排错,Spark 提供的 webui 已经提供了很多信息,用户可以从上面了解到任务的 shuffle,任务运行等信息,但是运行时 Executor JVM 的状态对用户来说是个黑盒,在应用内存不足报错时,初级用户可能不了解程序究竟是 Driver 还是 Executor 内存不足,从而也无法正确的去调整参数。Spark 的度量系统提供了...原创 2018-09-13 01:17:18 · 7654 阅读 · 4 评论 -
spark on yarn cgroup 资源隔离(cpu篇)
环境配置cdh 5.9.0cm 5.15.0os centos 7.2背景yarn container 默认不支持对cpu进行资源隔离,一些计算密集型任务甚至可能占满NM节点的cpu资源,从而影响到其他任务的执行效率。spark streaming 出现消费延时一些调度任务运行时间波动较大目标限制一些计算密集型任务的CPU使用,避免多 Cont...原创 2018-08-02 17:59:21 · 4162 阅读 · 3 评论 -
提高spark任务稳定性1 - Blacklist 机制
场景 一个 spark 应用的产生过程: 获取需求 -> 编写spark代码 -> 测试通过 -> 扔上平台调度。 往往应用会正常运行一段时间,突然有一天运行失败,或是失败了一次才运行成功。从开发者的角度看,我的代码没问题,测试也通过了,之前一段都运行好好的,怎么突然就失败了呢?为什么我重新调度又能正常运行了,是不是你们平台不稳定?是什么导致了上述问题?...原创 2018-04-25 00:01:43 · 6962 阅读 · 0 评论