egolearner / paper-note

7 stars 2 forks source link

Goods: Organizing Google's Datasets[4] #12

Open egolearner opened 4 years ago

egolearner commented 4 years ago

论文

google在16 SIGMOD的论文。
https://dl.acm.org/doi/10.1145/2882903.2903730

1 引言

通过允许工程师和数据科学家不受限制的消费和产生数据集,企业鼓励快速开发、实验最终籍由创新赢得先机。

两种形式:

GOODS采用的是后者,在后台以非侵入的方式收集数据集的元数据和使用信息,使得工程师可以方便的组织和查找数据集。
Goods不断地爬取不同的存储系统和生产系统日志,以发现存在的数据集和收集元数据信息(如owner、访问时间、内容特征、访问的流水线)。即使团队的数据集在不同的存储系统中,工程师也能够得到统一的视图和依赖关系。Goods能够监控数据集,并发出报警。 Goods提供的另一重要信息是数据集的血缘。Goods给数据集的消费者提供了搜索引擎,可以搜索整个公司的数据集,提供了面信息(facet)帮助减少搜索结果和找到最新和最重要的数据集。Goods为数据集提供了profile页面,展示schema和自动生成查询的代码,还包括了和当前数据集相似的数据集。 Goolds允许用户以众包的形式补充元数据信息:owner可以进行标注;数据集审计师可以可以打标敏感信息以提醒owner或者要求做安全审查。

2 挑战

2.1 数据集的个数和规模

Google工程师全部可读的就有260亿个数据集,全部数据集估计会翻倍。数据集的规模带来n^2问题,比如计算相似度的时候。

2.2 多样性

许多种存储格式和存储系统。

2.3 翻腾的新数据

数据集不断地被产生和删除。临时数据集对数据集的血缘提供了关键信息。

2.4 元数据发现的不确定性

因为以事后的方式处理数据集,带来不确定性,比如数据可能是不同的pb类型,以近似的方式来推断字段是否是主键。

2.5 计算数据集的重要性

数据集的重要性难以判定。唯一的明显连接是血缘信息,但并不代表重要性。

2.6 恢复数据集的语义

从原始数据中确定语义对于小规模的数据集是复杂问题,对于大数据集难上加难。

3 Goods catalog

Goods catalog对每个数据集包含一条数据,并将相关的数据集分组为cluster,可以用于优化元数据的计算,基于cluster下的数据集有相似的属性的假设。

3.1 元数据

image

Goods从存储系统中获取基本的元数据,如大小、owner、读者、访问权限等。此外,从日志中做了元数据推断。 image

如果聚类中的几个成员schema相同,我们将schema传播到整个聚类,goods采用的是按需计算的方式以区分传播得到的元数据和真实分析得到的元数据。

4 后端实现

4.1 catalog存储

使用bigtable存储,每行代表一个数据集或数据集聚类,其路径作为key。其中使用了bigtable的按行事务一致性。Goods将只有batch jobs使用的数据放到专门为batch调优(高度压缩、不驻内存)的列族中。 存储两类元数据:

最终设计允许除GC外的所有modules操作非事务更新,采用两阶段的方式:阶段1,使用声明式的断言标记要删除的行;阶段2,24小时后如果行依然满足删除条件则删除,否则去除标记。 所有其他modules满足下列限制:

5 前端:catalog服务

5.1 数据集profile页

数据集或聚类的路径作为输入,从catalog中存储的元数据产生HTML页面。为了防止展示的信息过多,对血缘信息做了压缩,如果压缩后仍然更多的话,则只展示最新的项。 数据集的profile页与更专门化的工具互相连接,如血缘元数据指向产生数据集的job的详情页,schmea元数据指向代码管理工具。反过来这些工具也会指向goods。 profile页还包含了不同语言的访问代码片段。 profile页的目的是提供一站式的商店,让用户可以探查数据集的信息,理解数据集使用的上下文信息。

5.2 数据集搜索

用户可以用简单的关键字查询数据集,关键字可以只命中索引的一部分,如查询path:x。用户可以指定部分路径。搜索之后采用启发式的方式对数据集排序。

除了关键词搜索,goods提供了元数据切面,如owner或者文件格式。

5.3 团队dashboard

dashboard一站式的展示团队产生的所有数据集的有趣元数据,如各种健康指标、其他dashboard、数据集所在的存储系统是否在线。dashboard提供了监控和报警机制。

6 经验教训

8 结论和展望

comment