浅析 Spark Shuffle 内存使用
在使用 Spark 进行计算时,我们经常会碰到作业 (Job) Out Of Memory(OOM) 的情况,而且很大一部分情况是发生在 Shuffle 阶段。那么在 Spark Shuffle 中具体是哪些地方会使用比较多的内存而有可能导致 OOM 呢? 为此,本文将围绕以上问题梳理 Spark 内存管理和 Shuffle 过程中与内存使用相关的知识;…
Read More一、需求 有赞大数据技术应用的早期,我们使用 Sqoop 作为数据同步工具,满足了 MySQL 与 Hive 之间数据同步的日常开发需求。 随着公司业务发展,数据同步的场景越来越多,主要是 MySQL、Hive 与文本文件之间的数据同步,Sqoop 已经不能完全满足我们的需求。在2017年初,我们已经无法忍受 Sqoop 给我们带来的折磨,准备改造我们的数据同步工具。当时有这么些很最痛的需求:…
Read Moreoverview 有赞的自研版 NSQ 在高可用性以及负载均衡方面进行了改造,自研版的 nsqd 中引入了数据分区以及副本,副本保存在不同的 nsqd 上,达到容灾目的。此外,自研版 NSQ 在原有 Protocol Spec 基础上进行了拓展,支持基于分区的消息生产、消费,以及基于消息分区的有序消费,以及消息追踪功能。 为了充分支持自研版 NSQ 新功能,…
Read More在使用 Spark 进行计算时,我们经常会碰到作业 (Job) Out Of Memory(OOM) 的情况,而且很大一部分情况是发生在 Shuffle 阶段。那么在 Spark Shuffle 中具体是哪些地方会使用比较多的内存而有可能导致 OOM 呢? 为此,本文将围绕以上问题梳理 Spark 内存管理和 Shuffle 过程中与内存使用相关的知识;…
Read More物理结构对系统是至关重要的,但它们很少是杠杆点,因为改变物理结构通常不太容易而且见效慢。恰当的杠杆点,需要从一开始就被设计好。一旦实体的结构建立起来了,要想找到杠杆点,就需要理解系统的限制和瓶颈,在尽可能发挥它们的最大效率的同时,避免出现较大的波动或扩张,超出其承受能力。——德内拉·梅多斯《系统之美》 笔者认为,敏捷转型是一个系统性的改进工程,具有时间和空间两个维度的复杂性,故要用动态的眼光来观察。作为参与组织全局优化的改进工作者,视野不能局限于研发过程,更要避免深陷于诸如“在某个小技术团队内推行三三五五”之类流于形式的过程中。 推动敏捷转型和做其他改进工作一样,目的是帮助组织成功,…
Read More一、前言 Flume 是一个分布式的高可靠,可扩展的数据采集服务。 Flume 在有赞的大数据业务中一直扮演着一个稳定可靠的日志数据“搬运工”的角色。本文主要讲一下有赞大数据部门在 Flume 的应用实践,同时也穿插着我们对 Flume 的一些理解。 二、Delivery 保证 认识 Flume 对事件投递的可靠性保证是非常重要的,它往往是我们是否使用 Flume 来解决问题的决定因素之一。 消息投递的可靠保证有三种:…
Read More