- 23
- 0
- 约7.56千字
- 约 18页
- 2018-11-11 发布于江苏
- 举报
Netflix如何拓展Jupyter notebook使用场景,以及为支持新使用场景进行的基础设施建设
Netflix如何拓展Jupyter notebook使用场景,以及为支持新使用场景进行的基础设施建设
Jupyter notebook在数据科学家当中快速流行开来,成为编写快速原型和进行探索性分析的事实标准。在Netflix,我们进一步开疆拓土,重新设想了notebook的形态、适用人群、用途,并且投入很多资源以实现我们的愿景。
本文将分享我们的动机,我们为什么觉得Jupyter notebook这么有竞争力。本文也将介绍我们的notebook基础设施的组成部分,同时探索我们在Netflix的一些创新的使用notebook的方式。
如果你比较匆忙,我们建议你直接从使用案例一节开始阅读。
动机
数据赋能Netflix。数据渗入我们的想法,为我们的决策提供信息,并挑战我们的假设。数据为在前所未有的尺度上的试验和创新提供燃料。数据帮助我们发现美妙的内容并向全世界一亿三千万会员提供个性化的体验。
实现这一切可不是小事一桩;它需要全面的工程支持和基础设施支撑。每天有超过一万亿事件写入摄取信息流的过程,经过处理后,再写入100PB的数据仓库云。同时每天运行150000项数据任务,范围无所不包,从报告分析到机器学习,到推荐算法。为了支撑如此巨大的尺度上的使用案例,我们创建了一个业界领先的灵活、强大、复杂(必要的复杂性)的数据平台。我们同时创建了补充工具及服务的丰富生态系统,比如Genie(联合任务执行服务)和Metacat(联合元存储)。这些工具简化了复杂度,使其可以支持全公司范围广泛的使用需求。
Netflix的数据角色
译者注:上图罗列了Netflix的数据角色,包括商业分析师、数据分析师、量化分析师、算法工程师、分析工程师、数据工程师、数据科学家、机器学习科学家、研究科学家。
多样性的数据使用者很令人兴奋,但它不是没有代价的:数据平台——以及配套的工具、服务生态系统——必须支持更多使用案例、语言、访问模式,等等。为了更好地理解这一问题,考虑3种常见角色:分析工程师、数据科学家、数据工程师。
不同角色(分析工程师、数据科学家、数据工程师)可能选择不同的工具和语言
一般来说,每种角色依赖不同的工具和语言组合。例如,一个数据工程师可能在IntelliJ中使用Scala创建一个包含数万亿音视频流事件的新的聚合数据集。一个分析工程师可能使用SQL和Tableau基于这一聚合创建关于全球音视频流质量的报告。这份报告可能导致一个数据科学家在RStudio下用R编写一个新的音视频流压缩模型。表面上看,这些都是分散的、不存在互补性的工作流程。但是,如果我们深挖一些,我们会发现每个工作流程中都有一些相通的任务:
数据探索—— 发生在项目早期;可能包括查看样本数据,运行查询请求以进行统计分析和探索性分析,以及可视化数据。
数据准备—— 迭代任务;可能包括清理、标准化、转换、逆归一化、聚合数据;通常是整个项目最花时间的任务。
数据校验—— 重复任务;可能包括查看样本数据,运行查询请求以进行统计分析、聚合分析,以及可视化数据;通常作为数据探索、数据准备、开发、部署前、部署后等阶段的一部分。
产品化—— 发生在项目后期;可能包括部署代码至生产环境,装填数据集,训练模型,校验数据,规划工作流程。
为了帮助拓展使用者范围,我们想要让这些任务尽可能地省力。为了帮助拓展我们的平台,我们想要最小化需要支持的工具数量。但是怎么才能做到呢?没有一个工具可以完成所有这些任务;不仅如此,单个任务经常需要多种工具。然而,当我们再加上一层抽象的时候,在这些工具和语言之上涌现出了一种共同模式:运行代码,探索数据,呈现结果。
碰巧有一个开源项目正是为此设计的:Jupyter Notebook
Jupyter Notebook
nteract下的Jupyter notebook,其中使用了Vega和Altair可视化
始于2014年的Jupyter项目的目标是创建一组一致的工具,用于科研、可重现工作流程、计算叙述、数据分析。这些工具迁移到业界的效果很不错,今天Jupyter notebook已经成为数据科学家工具箱的必备之物。Jupyter曾被授予2017年度ACM软件系统奖,该奖授予对技术概念和商业接受度方面产生了持久影响的软件系统,历史上Java、Unix、Web曾获此奖。
在我们看来,Jupyter notebook极具竞争力,它提供了这些核心功能:
语言无关的内省和执行代码的消息传递协议
描述代码、代码输出、markdown笔记的可编辑文件格式
基于web的用户界面,以供编写、运行代码,以及可视化输出
Jupyter使用核作为计算引擎,Jupyter协议提供了与核
原创力文档

文档评论(0)