阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

Netflix 开源新作:大数据发现服务框架 Metacat

  • 2018-06-15
  • 本文字数:2608 字

    阅读完需:约 9 分钟

很多大公司都拥有大量的数据源,它们的数据格式不尽相同,而且体量巨大。在 Netflix,我们的数据仓库由很多大型的数据集组成,这些数据存储在 Amazon S3、Druid、Elasticsearch、Redshift、Snowflake 和 MySql 中。我们的平台支持 Spark、Presto、Pig 和 Hive,我们用它们来消费、处理和生成数据集。因为数据源的多样性,为了确保我们的数据平台能够横跨这些数据集成为一个“单一”的数据仓库,我们开发了 Metacat。Metacat 是一种元数据服务,方便我们发现、处理和管理数据。

目标

Netflix 大数据平台的核心架构涉及三项关键服务:执行服务(Genie)、元数据服务和事件服务。这些想法并非 Netflix 所独有,在构建一个能够满足现在及未来规模的数据基础设施时,就需要这样的架构。

多年前,当我们开始构建这个平台时,我们使用 Pig 作为 ETL 语言,Hive 作为专用查询语言。由于 Pig 本身并不具备元数据系统,因此对于我们来说,构建一个可以在两者之间进行互操作的方案似乎是理想之选。

因此 Metacat 诞生了,这个系统充当了所有数据存储的元数据访问层,也是各种计算引擎可以用来访问不同数据集的集中式服务。Metacat 的三个主要目标是:

  • 元数据系统的联合视图

  • 用于数据集元数据的统一 API

  • 数据集的任意业务和用户元数据存储

其他拥有大量分布式数据集的公司也面临着类似挑战。Apache Atlas、Twitter 的数据抽象层和 Linkedin 的 WhereHows(Linkedin 的数据发现服务)等等,都是为了解决类似问题而构建的,只是他们都有各自的架构选择。

Metacat

Metacat 是一种联合服务,提供统一的 REST/Thrift 接口来访问各种数据存储的元数据。元数据存储仍然是模式元数据的事实来源,所以 Metacat 没有保存这部分元数据。Metacat 只保存业务相关和用户定义的元数据。它还将所有关于数据集的信息发布到 Elasticsearch,以便进行全文搜索和发现。

Metacat 的功能可以分为以下几类:

  • 数据抽象和互操作性

  • 业务和用户定义的元数据存储

  • 数据发现

  • 数据变更审计和通知

  • Hive Metastore 优化

数据抽象和互操作性

Netflix 使用多种查询引擎(如 Pig、Spark、Presto 和 Hive)来处理和使用数据。通过引入通用的抽象层,不同的引擎可以交互访问这些数据集。例如:从 Hive 读取数据的 Pig 脚本能够从 Hive 列类型的表中读取数据,并转成 Pig 类型。在将数据从一个数据存储移动到另一个数据存储时,Metacat 通过在目标数据存储中创建具有目标类型的表来简化这一过程。Metacat 提供了一组预定义的数据类型,可将这些类型映射到各个数据存储中的数据类型。例如,我们的数据移动工具使用上述功能将数据从 Hive 移动到 Redshift 或 Snowflake。

Metacat 的 Thrift 服务支持 Hive 的 Thrift 接口,便于与 Spark 和 Presto 集成。我们因此能够通过一个系统汇集所有的元数据变更,并发布有关这些变更的通知,实现基于数据驱动的 ETL。当新数据到达时,Metacat 可以通知相关作业开始工作。

业务和用户定义的元数据

Metacat 也会保存数据集的业务和用户定义元数据。我们目前使用业务元数据来存储连接信息(例如 RDS 数据源)、配置信息、度量指标(Hive/S3 分区和表)以及数据表的 TTL(生存时间)等。顾名思义,用户定义的元数据是一种自由格式的元数据,可由用户根据自己的用途进行定义。

业务元数据也可以大致分为逻辑元数据和物理元数据。有关逻辑结构(如表)的业务元数据被视为逻辑元数据。我们使用元数据进行数据分类和标准化我们的 ETL 处理流程。数据表的所有者可在业务元数据中提供数据表的审计信息。他们还可以为列提供默认值和验证规则,在写入数据时会用到这些。

存储在表中或分区中的实际数据的元数据被视为物理元数据。我们的 ETL 处理在完成作业时会保存数据的度量标准,在稍后用于验证。相同的度量可用来分析数据的成本和空间。因为两个表可以指向相同的位置(如 Hive),所以要能够区分逻辑元数据与物理元数据。两个表可以具有相同的物理元数据,但应该具有不同的逻辑元数据。

数据发现

作为数据的消费者,我们应该能够轻松发现和浏览各种数据集。Metacat 将模式元数据和业务及用户定义的元数据发布到 Elasticsearch,以便进行全文搜索。我们的 Big Data Portal SQL 编辑器因此能够实现 SQL 语句的自动建议和自动完成功能。将数据集组织为目录有助于消费者浏览信息,根据不同的主题使用标签对数据进行分类。我们还使用标签来识别表格,进行数据生命周期管理。

数据变更通知和审计

作为数据存储的中央网关,Metacat 将捕获所有元数据变更和数据更新。我们还围绕数据表和分区变更开发了通知推送系统。目前,我们正在使用此机制将事件发布到我们自己的数据管道(Keystone),以更好地了解数据的使用情况和趋势。我们也将事件发布到 Amazon SNS。我们正在将我们的数据平台架构发展为基于事件驱动的架构。将事件发布到 SNS 可以让我们数据平台中的其他系统对这些元数据或数据变更做出“反应”。例如,在删除数据表时,我们的 S3 数据仓库管理员服务可以订阅这些事件,并适当地清理 S3 上的数据。

Hive Metastore 优化

由 RDS 支持的 Hive Metastore 在高负载下表现不佳。我们已经注意到,在使用元数据存储 API 写入和读取分区方面存在很多问题。为此,我们不再使用这些 API。我们对 Hive 连接器(在读写分区时,该连接器直接与 RDS 通信)进行了改进。之前,添加数千个分区的 Hive Metastore 调用通常会超时,在重新实现后,这不再是个问题。

下一步

我们在构建 Metacat 方面已经走了很长的一段路,但还没有完成我们的使命。以下是我们仍需要努力增强的一些特性。

  • 模式和元数据的版本控制,用于提供数据表的历史记录。例如,跟踪特定列的元数据变更,或查看表的大小随时间变化的趋势。能够查看过去某个时刻元数据的信息对于审计、调试以及重新处理和回滚来说都非常有用。

  • 为数据 lineage 服务提供数据表的上下文信息。例如,在 Metacat 中汇总数据表访问频率等元数据,并发布到数据 lineage 服务中,用于对数据表的关键性程度进行排序。

  • 增加对 Elasticsearch 和 Kafka 等数据存储的支持。

  • 可插拔的元数据验证。由于业务和用户定义的元数据是自由形式的,为了保持元数据的完整性,我们需要对其进行验证。Metacat 应该有一个可插拔的架构,可在存储元数据之前执行验证策略。

Metacat GitHub 地址: https://github.com/Netflix/metacat

查看原文链接 https://medium.com/netflix-techblog/metacat-making-big-data-discoverable-and-meaningful-at-netflix-56fb36a53520

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2018-06-15 08:537283
用户头像
蔡芳芳 InfoQ主编

发布了 781 篇内容, 共 494.9 次阅读, 收获喜欢 2748 次。

关注

评论

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

2023年以太坊测试网水龙头整理(包含Goerli和Sepolia)

加密先生

eth 测试币

让开发者成为创新主体 | 阿里云云原生4月动态

阿里巴巴云原生

阿里云 云原生 月报

购买小间距led显示屏需要注意什么?

Dylan

图像 像素灰度 LED显示屏

聆心智能联合洪恩打造“AI问答”|国内首批儿童启蒙成长领域类ChatGPT式应用

硬科技星球

中馥科技集团成为五粮液社交零售战略合作伙伴,强强联手布局白酒赛道

电子信息发烧客

如何使用Fiddler抓取APP接口和微信授权网页源代码

北桥苏

fiddler 网络抓包 抓包分析 抓包工具

PHP简单实现异步多文件上传并使用Postman测试提交图片

北桥苏

php OSS thinkphp

打破技术封锁,瓴羊Quick BI、Smartbi等国产BI工具崛起

夜雨微澜

大数据

瓴羊Quick BI数据可视化打造看板,助力极氪汽车决策

夏日星河

3 步集成 Terraform + 极狐GitLab CI ,实现基础设施自动化管理

极狐GitLab

ci DevOps 基础设施 Terraform 极狐GitLab

ChatGPT 再遭禁用 | 人工智能时代下数据安全如何保障

BinTools图尔兹

人工智能 数据库 ChatGPT CloudQuery

基于Sovit2D智慧养鸡组态大屏管理系统

2D3D前端可视化开发

物联网 组态软件 智慧农业 web组态 智慧养鸡

如何向大模型ChatGPT提出问题以获得优质回答:基于AIGC和深度学习的实践指南

蓝海大脑GPU

Goerli ETH(GETH)测试币永久免费领,这篇教程助你撸毛

加密先生

eth Goerli 测试币

从“能用”到“好用”:它的出现,解决你80%的转型困境【内含免费试用附教程】

加入高科技仿生人

低代码 数字化业务转型 数字转型

如何用Xcode安装ipa

雪奈椰子

轻松网站下载:SiteSucker mac汉化激活版

真大的脸盆

Mac Mac 软件 网站下载 下载网站工具 网站下载工具

IOS技术分享| 快对讲2.0会议场景实现

anyRTC开发者

ios 音视频 视频会议 移动开发 快对讲

ios打包ipa的四种实用方法(.app转.ipa)

雪奈椰子

聊点技术 | 自适应AI,让Bonree ONE更智能

博睿数据

可观测性 智能运维 博睿数据 Bonree ONE ONE有引力

MobTech MobPush|TCP通道和共享链路通道

MobTech袤博科技

【技术干货】PCB焊盘设计之问题详解

华秋PCB

工具 PCB PCB设计 焊盘 可焊性

开源且强大——Linux永远的神

这我可不懂

ios Linux 低代码

谷歌全线反击!PaLM 2部分性能已经超越GPT-4

引迈信息

低代码 Google ChatGPT JNPF PaLM 2

MySQL表分区的选择与实践小结

北桥苏

MySQL 表分区

PHP公众号开发给用户发微信消息提醒功能

北桥苏

微信公众号 模板 公众号接入

感受国产BI工具的理论,瓴羊Quick BI、Smartbi对比

对不起该用户已成仙‖

流控验证太麻烦?不敢上生产?MSE 有办法!

阿里巴巴云原生

阿里云 微服务 云原生 Spring Cloud Apache Dubbo

开源字节数字化乡村系统

源字节1号

开源 软件开发 小程序开发

如何使用apache的ab压力测试小工具传参数

北桥苏

AB apche A/B 测试

DApp泰山众筹系统开发合约搭建

薇電13242772558

智能合约 dapp

Netflix开源新作:大数据发现服务框架Metacat_大数据_蔡芳芳_InfoQ精选文章