Netflix 展示大数据分析基础架构

  • Andrew Morgan
  • 大愚若智

2017 年 3 月 26 日

话题:大数据AI

Netflix 资深软件工程师 Tom Gianos 和 Netflix 大数据计算工程经理 Dan Weeks 在 2016 年度 QCon 旧金山活动中介绍了 Netflix 的大数据策略和分析基础架构,此外还概括介绍了他们的数据规模、S3 数据仓库,以及他们的大数据大数据联合编排系统(Federated orchestration system)Genie

为了介绍具体的需求,Weeks 解释称,“规模”是 Netflix 在大数据领域面临的最大挑战。该公司在全球范围内有超过 8600 万会员,每天通过流播的方式播放总时长超过 1.25 亿小时的内容。这样的规模导致他们的数据仓库容量已经超过 60PB。

尽管很多人可能觉得视频流播数据是Netflix数据分析工作的主要数据源,但 Weeks 解释说,他们分析的主要是其他类型的数据,例如公司内部各种微服务和营销活动产生的事件,尤其是 Weeks 专门提到:

Netflix 是一家彻头彻尾的数据驱动型公司。我们喜欢根据真凭实据作出不同的决策。对于整个平台的某些变更,如果无法切实证明有助于改善用户体验,我们宁愿不进行这样的变更。

Weeks 列举了一个此类数据类型的用例:A/B 测试。数据科学家可以分析用户的交互,进而决定向用户永久推送哪些类型的功能。

Weeks 还概括介绍了 Netflix 的数据流程架构。他们共使用了两个数据流,一个用于事件数据,一个用于维度数据。事件数据通过他们的 Kafka 数据管道传递,维度数据则使用开源工具Aegisthus从他们的Cassandra群集拉取。最终,所有类型的数据汇总至 S3。

虽然传统数据仓库可以使用HDFS,但 Weeks 提到使用 S3 可以获得其他一些优势。例如 99.99% 可用性、版本控制,以及将计算负载从存储系统中剥离的能力。最后一点非常关键,尽管数据未能本地保存会导致延迟增高,但通过这样的剥离可以很轻松地在无须移动数据的前提下对计算群集进行缩放或执行升级任务。

在数据仓库方面,为了获得所需数据,Weeks 介绍说他们使用了一种名为Metacat的元数据系统。具体来说,该系统提供了有关确定如何处理数据所需的信息,此外还可以从中了解数据具体是什么,保存在哪里。由于这是一种联合(Federated)系统,因此可在 Hive、RDS、S3 等存储的基础之上运行的技术。

Weeks 还介绍说,数据本身存储为Parquet文件格式。这是一种列式存储格式,借此可获得更高压缩率。Parquet 文件还可以存储额外的元数据,例如有关列最大 / 最小长度及其体积的信息。这样诸如计数或跳过之类的操作就可以非常快速地执行完毕。

有关 Parquet 调优地详细信息已由 Netflix 资深软件工程师 Ryan Blue 公开发布至这里

在 Weeks 从底层介绍他们的大数据环境后,Gianos 从较高层面进行了介绍。他介绍的内容主要围绕 Genie,这是一种联合编排引擎,可用于管理诸如 Hadoop、Pig、Hive 等不同类型的大数据作业。

为了介绍他们针对 Genie 的具体需求,Gianos 用一个简单的用例作为例子:少量用户同时访问同一个群集。虽然这种情况非常易于管理,但随着组织规模的增大,可能会面临不同的情况,导致对客户端资源和群集资源的需求激增,进而导致部署变得愈加复杂。这就导致了导致数据科学家经常遇到的问题,例如作业速度变慢,数据处理库过时等,这也使得系统管理员难以轻松地对这些问题作出响应。

按照 Gianos 的介绍,Genie 可以帮助系统管理员执行群集的启动和管理、库文件的安装等任务,这一切都不会影响到最终用户。从用户的角度来看,用户可以通过这样的抽象直接访问群集,而无须考虑如何连接到群集,也不需要了解群集上到底运行了什么。

在群集的更新方面,Gianos 介绍说,只要成功通过测试,只需要添加对应的标签即可顺利迁移至新群集。Genie 可以对所有工作进行编排,并让原本的作业继续在老群集上运行,同时新提交的作业可以在新群集上运行。这样即可实现不停机更新。

Genios 还介绍说,Genie 的标签机制可以应用于负载均衡,为此只需跨越群集对标签进行复制即可拆分负载。从客户端的角度来看,这一过程是完全透明的。

另外 Genios 也介绍了 Genie 的二进制更新机制。新的二进制文件可以移动到一个集中的下载位置,随后在下一次调用时自动替换老的文件。

Genios 从数据科学家的角度演示了 Genie 的完整工作流。基本上,他们只需要将作业提交至 Genie,其中可包含群集标签等元数据,以及自己希望使用的大数据处理引擎。随后 Genie 可以查找最适合运行该作业的群集。Genie 的界面会通过用户反馈告诉用户作业的运行进度。

详细信息请在线查看完整演示文稿

阅读英文原文Netflix Demonstrates Big Data Analytics Infrastructure

大数据AI