浅析 Spark Shuffle 内存使用

在使用 Spark 进行计算时,我们经常会碰到作业 (Job) Out Of Memory(OOM) 的情况,而且很大一部分情况是发生在 Shuffle 阶段。那么在 Spark Shuffle 中具体是哪些地方会使用比较多的内存而有可能导致 OOM 呢? 为此,本文将围绕以上问题梳理 Spark 内存管理和 Shuffle 过程中与内存使用相关的知识;…

Read More

组织级敏捷转型的四个阶段

物理结构对系统是至关重要的,但它们很少是杠杆点,因为改变物理结构通常不太容易而且见效慢。恰当的杠杆点,需要从一开始就被设计好。一旦实体的结构建立起来了,要想找到杠杆点,就需要理解系统的限制和瓶颈,在尽可能发挥它们的最大效率的同时,避免出现较大的波动或扩张,超出其承受能力。——德内拉·梅多斯《系统之美》 笔者认为,敏捷转型是一个系统性的改进工程,具有时间和空间两个维度的复杂性,故要用动态的眼光来观察。作为参与组织全局优化的改进工作者,视野不能局限于研发过程,更要避免深陷于诸如“在某个小技术团队内推行三三五五”之类流于形式的过程中。 推动敏捷转型和做其他改进工作一样,目的是帮助组织成功,…

Read More

Flume在有赞大数据的实践

一、前言 Flume 是一个分布式的高可靠,可扩展的数据采集服务。 Flume 在有赞的大数据业务中一直扮演着一个稳定可靠的日志数据“搬运工”的角色。本文主要讲一下有赞大数据部门在 Flume 的应用实践,同时也穿插着我们对 Flume 的一些理解。 二、Delivery 保证 认识 Flume 对事件投递的可靠性保证是非常重要的,它往往是我们是否使用 Flume 来解决问题的决定因素之一。 消息投递的可靠保证有三种:…

Read More

Druid Segment Balance 及其代价计算函数分析

一. 引言 Druid 的查询需要有实时和历史部分的 Segment,历史部分的 Segment 由 Historical 节点加载,所以加载的效率直接影响了查询的 RT(不考虑缓存)。查询通常需要指定一个时间范围[StartTime, EndTime],该时间范围的内所有 Segment 需要由 Historical 加载,最差的情况是所有 Segment 不幸都储存在一个节点上,加载无疑会很慢;…

Read More

Spark Streaming在数据平台日志解析功能的应用

一、日志解析功能的背景: 通过日志,我们可以获得很多有用的信息,最常见的日志信息包括应用产生的访问日志、系统的监控日志,本文所针对的日志是大数据离线任务产生的运行日志。目前日志解析功能依附于有赞大数据平台,也就是有赞的data_platform,为该平台的一个功能。 目前支持解析的日志类型包括:Hive任务、Spark任务、Datay增量任务、导入任务、导出、MR任务、Hbasebulk、脚本任务等。dataplatform支持的调度类型为:批量重跑、测试类型、正常调度和手动导入任务。 做这个日志解析部分的目的分为几个,…

Read More