Netflix数据管道的变化历程

简介:

去年12月我们的Keystone数据管道正式投入使用,本文我们就来讲讲这些年Netflix数据管道的变化历程。


数据是Netflix的中心,很多的商业决策和产品设计都是依据数据分析而做出的决定。在Netflix,数据管道的目的是对数据进行收集归纳和处理,几乎我们所有的应用都会用到数据管道。下面我们先来看看有关Netflix数据管道的一些统计数据:

  • 每天约5000亿个事件,1.3PB的数据

  • 高峰时段约每秒800万个事件,24GB数据

我们用另外的Atlas系统来管理运营相关的数据所以它并没有出现在上面的列表中。

由于需求的变化和技术的进步,过去几年我们的数据管道发生了很大的改变。下面我们就来介绍一下。


V1.0 Chukwa数据管道

最初数据管道唯一的目的就是把事件信息上传到Hadoop/Hive。如下图中所示,整个架构是比较简单的。Chukwa收集事件信息并将sequencefile写入亚马逊S3,之后大数据平台部门会进一步处理并写入Hive。从事件发生到以Parquet格式写入Hive整个过程不超过十分钟,对于每小时甚至每天才运行一次的batch job来说已经足够了。



V1.5 能够进行实时处理的Chukwa数据管道

随着Kafka和Elasticsearch等技术的发展,公司内部对于实时分析的需求愈加强烈,我们必须保证处理所需时间在一分钟之内。


除了将数据写入S3,Chukwa还可以将数据发送到Kafka,新的实时分支(虚线框住的部分)处理的事件大约占到总事件的30%。处于实时处理分支中心位置的是事件路由模块,它负责将数据从Kafka传递到Elasticsearch和下一级Kafka(进行数据的筛选)。终端用户可以自由选择趁手的工具进行分析,比如Mantis、Spark或其他定制工具。


Elasticsearch在Netflix的应用过去两年经历了爆炸式的发展,现在共有约150个集群和约3500个节点,总数据量约1.3PB,而这其中大部分数据都是通过我们的数据管道采集处理的。


数据路由的部分是由我所在的小组管理的,下面是一些我们碰到过的问题:

  • Kafka high level consumer会丧失消息分区的所有权并停止读取一些分区,唯一的解决办法是重启。

  • 有时部署代码之后high level consumer在rebalance时会出错。

  • 我们有几十个集群用于事件路由,运营上的开销正持续增长,所以对于路由job的管理还要想个更好的办法。


V2.0 Keystone数据管道

我们决心对V1.5的数据管道进行调整是基于下面三个方面的考量。

  • 简化架构。

  • 提升系统可靠性(Chukwa不支持冗余)。

  • Kafka社区较活跃后劲足。


架构中一共有三部分主要的模块:

  • 数据收集-有两种方式。 

    1. 直接写入Kafka。

    2. 通过HTTP代理写入Kafka。

  • 数据缓存-使用Kafka来实现持久化消息队列。

  • 数据路由-与V1.5中作用相同。

Keystone数据管道已经在生产环境中平稳运行了几个月,不过我们还在进行质量、扩展性、可用性和自动化方面的提升。


原文发布时间为:2016-03-15

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

相关文章
|
Python
matplotlib绘制箱形图之基本配置——万能模板案例(一)
matplotlib绘制箱形图之基本配置——万能模板案例
1445 0
matplotlib绘制箱形图之基本配置——万能模板案例(一)
|
Java jvm-sandbox 容器
【alibaba/jvm-sandbox#05】沙箱事件详解
alibaba/jvm-sandbox设计了完善且复杂的沙箱事件,用于实现事件探测和流程控制机制。但不建议对于同一个类、同一个方法多次增强
820 0
|
API Python
playwright学习心得
playwright自动化框架学习心得
37082 23
|
传感器 缓存 Ubuntu
ESP32-C3入门教程 基础篇(四、I2C总线 — 与SHT21温湿度传感器通讯)
测试第四课,了解ESP32-C3的 I2C 总线使用,与SHT21 温湿度传感器通讯 这一课把基础介绍放在前面,先看基本流程,再去修改代码
1141 0
ESP32-C3入门教程 基础篇(四、I2C总线 — 与SHT21温湿度传感器通讯)
|
存储 机器学习/深度学习 缓存
双11专栏 | EdgeRec:电商信息流的端上推荐系统
本文将介绍在我们电商首页部署的端上推荐系统EdgeRec,以及在端上推荐系统中的算法实践。
双11专栏 | EdgeRec:电商信息流的端上推荐系统
|
XML 前端开发 数据处理
Android——MVC、MVP、MVVM框架实现登录示例
MVC 描述 缺点 优点 MVP 效果图 描述 缺点 优点 代码解析 视图效果图 建立实体类 建立实体类接口 实现实体类接口 设置P层 建立交互接口 数据绑定 MVVM 效果图 描述 代码解析 导入dataBinding 实体类 建立viewmodel xml绑定数据 视图与数据绑定
548 0
Android——MVC、MVP、MVVM框架实现登录示例
|
存储 监控 Kubernetes
深入浅出eBPF: 回答7个核心问题
写在前面过去一年,ARMS基于eBPF技术打造了Kubernetes监控,提供多语言无侵入的应用性能,系统性能,网络性能观测能力,验证了eBPF技术的有效性。eBPF技术和生态发展很好,未来前景广大,作为该技术的实践者,本文目标是通过回答7个核心问题介绍eBPF技术本身,为大家解开eBPF的面纱,其他相关文章如下:《基于eBPF的Kubernetes一站式监控系统》《深度解密|基于eBPF的Kub
深入浅出eBPF: 回答7个核心问题
|
缓存 网络协议 Java
Freeline - Android平台上的秒级编译方案
Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队在Android平台上的量身定做的一个基于动态替换的编译方案,稳定性方面:完善的基线对齐,进程级别异常隔离机制。性能方面:内部采用了类似Facebook的开源工具buck的多工程多任务并发思想, 并对代码及资源编译流程做了深入的性能优化。
92535 0
|
监控 Android开发 开发者
【Android 高性能音频】AAudio 音频流 缓冲区 简介 ( AAudio 音频流内部缓冲区 | 缓冲区帧容量 | 缓冲区帧大小 | 音频数据读写缓冲区 )
【Android 高性能音频】AAudio 音频流 缓冲区 简介 ( AAudio 音频流内部缓冲区 | 缓冲区帧容量 | 缓冲区帧大小 | 音频数据读写缓冲区 )
615 0
【Android 高性能音频】AAudio 音频流 缓冲区 简介 ( AAudio 音频流内部缓冲区 | 缓冲区帧容量 | 缓冲区帧大小 | 音频数据读写缓冲区 )
|
缓存 负载均衡 NoSQL
面试题:如何设计一个高并发的系统?
面试题:如何设计一个高并发的系统?
701 0
面试题:如何设计一个高并发的系统?