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

时间: 2024-09-21 22:48:57

Netflix数据管道的变化历程的相关文章

Yelp的数据管道开源了

在过去的几个月里,Yelp一直在不断地向大家分享着他们的数据管道的情况(文章列表见页尾).这是一套基于Python的工具,可以实时地将数据流向需要它们的服务,并随之加以必要的数据处理.这一系列的文章讲述了如何从MySQL中将消息复制出来.如何跟踪模式的变化及演进.并最终分享了如何把数据接入到Redshift和Salesforce等不同类型的目标存储. 幸好Yelp非常慷慨,他们不只是分享了自己的设计思路和经验,更是赶在圣诞节之前向大家献上了一份大礼,把主要模块开源出来了! 在读过了所有这些关于我

《Scala机器学习》一一第2章 数据管道和建模

**第2章数据管道和建模**上一章介绍了一些研究数据的基本工具.本章将深入介绍一些更复杂的主题,其中包括建立统计模型.最优控制以及科学驱动(science-driven)的工具等问题.不过事先声明,本书只会涉及最优控制的若干主题,因为本书是介绍基于Scala的机器学习(ML),而不是数据驱动的企业管理理论,企业管理理论本身就足以写成一本书.本章不会介绍基于Scala的具体实现,而是在一个高层次上探讨构建数据驱动型企业的问题.后面的章节将详细讨论如何实现这些细节.本章也特别强调不确定性的处理.不确

linux-Linux下怎样实现VPN数据管道?

问题描述 Linux下怎样实现VPN数据管道? 手上有A.B两台服务器,A服务器一直空着,B服务器部署有VPN服务(应该都知道在哪) 最近直连B服务器网络不是很好然后我就想通过A服务器连接到B服务器最后访问网络以保证其稳定性而不会出现200-2000这种不稳定的坑爹延迟,即本地连接A服务器然后由A服务器将数据传给B服务器然后由B服务器访问网络 问了下周围的朋友,他们说用iptunnel+iprule或者VPN+路由(C/S)的方法即可实现,但无奈,这些我都不会所以我就想问问我该怎么实现? 补充:

如何实现100%的动态数据管道(三)

动态|数据 下面看看,如何根据中间层的数据,构建管道语法: 1.首先建立一个数据窗口对象:d_vdtcolumns SQL语法是:  SELECT vdt_columns.utid,            vdt_columns.uid,            vdt_columns.upkey,            vdt_columns.udmid,            vdt_columns.udmname,            vdt_columns.unulls,        

剖析SEO中网站数据统计指标的演变历程

  众所周知网站数据分析是SEO中一个重要的环节,然而随着web技术的发展,网站统计数据指标也发生了翻天覆地的变化,经历了一个从Hit到PV,再到UV的过程.或许有的站长朋友不了解这个发展过程,祁多多就一起和大家分享下. 一.网站统计数据由Hit到PV的演变 Hit中文意思是"点击",表示页面请求的数量,对网站一次访问请求被记为一次"hit",这些请求可以是html文件,也可以是图片等等.打个比方:一个网页里面有5个图片,有一个访客查看了该网页一次,那么hits=1

大数据管道成城市重要基础设施

文章讲的是大数据管道成城市重要基础设施,8月19日,国务院常务会议通过<关于促进大数据发展的行动纲要>,其中明确指出推动政府大数据开放.共享和安全的重要性. 每年,大数据以成数倍于往年的数量增加,互联网企业在其中扮演着重要的角色;大数据的储存也面临前所未有的挑战,而连接硬件设备开发和计算应用的云计算企业更是被提到云层的高度;最后落到大数据在社会.经济.文化.生活等领域的应用.<行动纲要>涉及三个关键词"共享"."开放"."安全&qu

【先锋】思明软件大数据技术平台打造历程和Impala实战分享

在采访思明数据刘诚忠的过程中,他表示当下大数据领域企业级市场靠技术垄断获取高额利润的玩法已经过时了,技术的成本会不断降低,这是大势所趋,这个市场的巨头会出现在技术很好,但服务更好的公司里.而站在用户的角度,用户们首先关心的是如何让数据发挥价值,然后才是这套解决方案依赖何种技术,是否能快速应用,是否能适应后面可能的扩展,相对技术来说第一点是更难的. 事实上今天的企业客户,特别在大数据技术领域,更需要的是长期的合作伙伴.他们不只需要购买技术密集的产品,还需要和大数据的技术专家一起研究如何让数据发挥出

【Spark Summit East 2017】 使用Kafka Connect和Spark Streaming构建实时数据管道

本讲义出自Ewen Cheslack Postava在Spark Summit East 2017上的演讲,主要介绍了面对使用Spark Streaming构建大规模实时数据管道的挑战,Kafka项目最近推出了新的工具-- Kafka Connect,该工具将帮助简化从Kafka导入和导出数据,Ewen Cheslack Postava分享了如何使用Kafka Connect和Spark Streaming构建实时数据管道.

Yelp开源数据管道项目最新组件——数据管道客户端库

2016年底,Yelp开源了他们基于Python和Apache Kafka的数据管道客户端库.该库提供了一个发布和消费数据管道主题的接口.之前的讨论涉及Yelp的数据管道组件以及分布式服务数据集成所面临的挑战,也就是N+1问题和梅特卡夫定律. 客户端库只是最新发布的一个Yelp数据管道组件.对于创建Yelp数据管道的动机和原因,据Yelp报道,切换到新的数据管道每年为他们节省了1000万美元.Yelp工程副总裁Jason Fennel表示: 我们的动力产生于我们考察自己的数据仓库时.我们将所有的