写点什么

从 Chukwa 到 Keystone :Netflix 的数据流水线演进

  • 2016-02-18
  • 本文字数:1504 字

    阅读完需:约 5 分钟

2015 年 12 月,Netflix 新的数据流水线 Keystone 上线。本文将介绍近年来 Netflix 数据流水线的演进。这是介绍新的 Keystone 数据流水线系列文章的第一篇。

Netflix 是一家数据驱动的公司,很多业务和产品决策均基于数据分析作出。数据流水线的作用是在云上收集、聚合、处理和移动数据。Netflix 的几乎每一款应用都会用到该数据流水线。

先来看 Netflix 数据流水线的一些数据:

  • 每天 5000 亿事件, 1.3PB 数据
  • 峰值时间每秒处理 800 万事件,24GB 数据

有数百种事件会通过该流水线,如:

  • 视频观看活动
  • UI 活动
  • 错误日志
  • 性能事件
  • 问题定位和诊断事件

这里需要注意的是,运维相关指标不通过该流水线处理,而是有一个独立的系统—— Atlas ,和 Netflix 的其他很多技术一样,该系统也开源了。

在过去这些年,因为需求的变化和技术的发展,Netflix 的数据流水线有几次大的变化。

V1.0 Chukwa 流水线

原始的数据流水线,唯一目的就是聚合事件,并将其上传到 Hadoop/Hive 进行批处理。从下图中也可以看出,架构相当简单。 Chukwa 收集数据,并以 Hadoop 顺序文件格式将它们写入到 S3 中。大数据平台团队进一步处理 S3 文件,然后以 Parquet 格式写入到 Hive 中。从一端到另一端的延迟高达 10 分钟。不过对于通常以天或小时的频率扫描数据的批处理作业而言,也足够了。

V1.5 带有实时分支的 Chukwa 流水线

随着 Kafka Elasticsearch 的出现,Netflix 对实时分析的需求也不断增长。这里的“实时”指的是延迟小于 1 分钟。

除了将事件上传到 S3/EMR,Chukwa 还能将流量发到 Kafka(实时分支的前端)。在 V1.5 中,大约有 30% 的事件会进入实时流水线。实时分支的核心是 Router。它负责将数据从 Kafka 路由到不同的地方,如 Elasticsearch 或次级 Kafka。

过去两年,Elasticsearch 在 Netflix 的应用增长迅速。现在有 150 个集群,总计 3500 个实例,上面有 1.3PB 数据。绝大部分数据都是通过该数据流水线进来的。

在 Chukwa 将流量发到 Kafka 时,既可以是完整的流,也可以是过滤之后的。有时还需要进一步过滤从 Chukwa 写到 Kafka 的流,这就是引入 Router 的目的所在——可以消耗一个 Kafka 主题,并生成一个不同的 Kafka 主题。

在数据到了 Kafka 之后,用户可以使用 Mantis Spark 或定制的应用来做实时的流处理。“自由与责任”(Freedom and Responsibility)是 Netflix 文化的基因。用户自己选择合适的工具来处理手头的任务。

因为研发团队擅长处理数据的大规模迁移,所以将 Router 设计成了一个托管服务。在运维路由服务的过程中,他们也得到几点教训:

  • Kafka 高层消费者可能会丢失分区(partition)所有权,在稳定运行一段时间后,不再处理某些分区。需要重启消费者进程才能恢复。
  • 当推出新代码时,有时高层的消费者会在重新平衡过程中陷入错误状态。
  • 将路由作业分组,放到一系列集群上,不过管理这些作业和集群的成本持续增长。所以需要更好的平台来管理路由作业。

V2.0 Keystone 流水线 (Kafka fronted)

除了上面提到的与路由相关的问题,还有其他几点考虑促使我们重新架构我们的数据流水线:

  • 简化架构
  • Kafka 实现复制,可以提高系统的可靠性,而 Chukwa 不支持复制。
  • Kafka 有一个非常活跃、生机勃勃的社区。

有 3 个主要组件:

  • 数据获取——有两种方式:使用 Java 库,直接写入 Kafka;或者
    发送给 HTTP 代理,然后由代理写入 Kafka。
  • 数据缓冲——Kafka 作为复制的持久消息队列。
  • 数据路由——路由服务负责将数据从前端的 Kafka 移到 S3 、 Elasticsearch 和次级 Kafka。

过去几个月,Keystone 已经应用于生产中。目前开发团队仍然在改进 Keystone,着重于 QoS、伸缩性、可用性、可运维性和自服务等方面。

查看英文原文: Evolution of the Netflix Data Pipeline

2016-02-18 18:002303
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 136.9 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

ShardingSphere-Proxy 5.0 分库分表(一)

神农写代码

打印总是遇到问题?一文教你如何在优麒麟上使用 CUPS 管理打印机

优麒麟

Linux 终端 优麒麟 打印机管理

即学即会 Serverless 系列:初识 Serverless 架构

Serverless Devs

云计算 阿里云 Serverless 架构

深度揭秘阿里云 Serverless Kubernetes

Serverless Devs

产品手册怎么做?用什么软件?

小炮

科技筑基、高效实战:中科柏诚信云链正当时

联营汇聚

web前端培训React合成事件原理解析

@零度

React web前端开发

TSP 平台场景中的 MQTT 主题设计|车联网平台搭建从入门到精通 03

EMQ映云科技

开源 物联网 IoT mqtt emq

安全大讲堂 | 孙朝晖:全量数据是一切网络安全分析的起点

腾讯安全云鼎实验室

数据分析 网络安全 数据安全 安全大讲堂

企业知识管理的措施

小炮

知识管理

《Mybatis 手撸专栏》第1章:开篇介绍,我要带你撸 Mybatis 啦!

小傅哥

小傅哥 mybatis 手写Mybatis

电路模型和电路定律 (Ⅱ)

謓泽

3月月更

31岁的Python,蝉联年度编程语言排行榜冠军

JackTian

Python 编程 程序员 编程语言 后端

ModStartCMS模块化建站系统 v3.5.0 多图字段支持,系统优化升级

ModStart开源

小程序多端引流新思路:App公域流量挖掘

Speedoooo

APP开发 智慧终端 引流获客工具 引流获客系统

大数据培训flink8 个高频面试实战题分享

@零度

大数据 flink

从持续交付到业务创新(上):互联网时代研发效能的核心

阿里云云效

云计算 阿里云 云原生 研发效能 持续交付

阿里巴巴开源大规模稀疏模型训练/预测引擎DeepRec

阿里云大数据AI技术

机器学习 深度学习 搜索引擎 分布式训练 推荐引擎

金三银四的 Vue 面试准备

CRMEB

中国企业的测试之道被美国学习了?

博文视点Broadview

阿里通过度量把发版过程的不确定变成确定-构建闲鱼版本持续交付管道及度量

阿里云云效

云计算 阿里云 DevOps 云原生 度量

如何实现24小时客户服务

小炮

客户服务

6张图为你分析Kafka Producer 消息缓存模型

华为云开发者联盟

kafka 消息 Kafka Producer 消息缓存模型 消息缓存

字节跳动流式数据集成基于Flink Checkpoint两阶段提交的实践和优化背景

字节跳动数据平台

大数据 flink 字节跳动 数据集成

资金管理系统解决方案

低代码小观

资产管理 企业管理系统 资金安全 CRM系统 客户关系管理系统

如何使用Java AWT 创建一个简易计算器

华为云开发者联盟

Java 计算器 GUI AWT 图形

API接口知识小结

源字节1号

程序员 有趣的技术知识

动态卡片:富媒体内容井喷式增长下,新一代移动端动态研发的模式

蚂蚁集团移动开发平台 mPaaS

ios android 前端 mPaaS 卡片技术

从持续交付到业务创新(下):有效的业务创新

阿里云云效

云计算 阿里云 云原生 研发效能

隐私安全的必答题,网易云信如何解?

网易云信

隐私安全

信创云管理平台,头部券商解决异构云资源管理的关键

BoCloud博云

信创 云管平台

从 Chukwa 到 Keystone :Netflix 的数据流水线演进_语言 & 开发_臧秀涛_InfoQ精选文章