在本篇博文中,我们将带您了解 Uber 自主研发的大数据可观测性、归因和治理平台 DataCentral。本篇博文概述了 DataCentral 的主要功能。在了解 DataCentral 的用途和原因之前,让我们先快速了解一下 Uber 的数据生态系统及其挑战。
Uber 大数据格局简介图 1:Uber 的大数据格局。
Uber 的数据基础设施由各种各样的计算引擎、调度 / 执行解决方案和存储解决方案组成。Apache Spark ™、Presto® 、 Apache Hive ™、Neutrino、Apache Flink®等计算引擎允许 Uber 每天运行 PB 级操作。此外,还有 Piper(Uber 的 Apache Airflow ™分支)、Query Builder(用于执行计算 SQL 的用户平台)、Query Runner(用于执行工作负载的代理层)和 Cadence(工作流编排引擎,由 Uber 开源)等调度和执行引擎,用于调度和执行计算工作负载。最后,很大一部分存储由 HDFS、Google Cloud Storage (GCS)、AWS S3、Apache Pinot™、ElasticSearch® 等支持。每个引擎都支持数千个执行,由多个所有者 (uOwn) 和子团队拥有。
挑战在如此复杂和多样化的 PB 级大数据环境中,每天运行大约一百万个应用程序/查询,必须为利益相关者提供正确的性能和资源消耗洞察的整体视图。
利益相关者角色Uber 大数据生态系统的利益相关者包括以下几部分:
作业所有者:最终用户访问 DataCentral 以查找其作业的元数据,例如持续时间、成本、资源消耗、查询文本和日志等。这使得 DataCentral 可以作为调试失败查询和应用程序的强大平台。
大数据团队: Spark、Presto、Hive 和 Neutrino 等大数据引擎团队利用 DataCentral 平台深入了解失败的作业数量、不良/滥用的作业、主要错误原因、被阻止的查询等。此外,DataCentral 还帮助他们调查 SLA 违规、事件和作业失败。
执行领导力: DataCentral 还通过提供组织级统计数据(如应用程序/查询级成本)来支持业务决策。它还提供可用于预测硬件需求和成本的信息。
以下是 Uber 大数据平台涉及的各个角色会问到的一些典型问题:
图 2:Uber 数据平台的用户角色。
进入数据中心在 Uber,我们开发了 DataCentral,这是一个综合平台,为用户提供有关大数据应用程序和查询的重要见解。DataCentral 通过提供有关工作流程和应用程序的详细信息、提高生产力和减少调试时间来增强数据平台用户的能力。DataCentral 为客户提供以下关键服务:
可观察性:对大数据作业的性能趋势、成本和降级信号的深入了解。Chargeback:大数据工具和引擎(如 Presto、Apache Yarn ™、HDFS、Apache Kafka ®等)的指标和资源使用情况。消耗减少计划:为 Uber 数据生态系统提供核心成本削减举措,例如减少 HDFS 增长、减少 Yarn 使用量等。图 3:DataCentral 和产品。
DataCentral 如何帮助实现可观察性?数据可观测性可实时洞察计算查询和应用程序。由于 Uber 的数据生态系统分布在不同的组件中,因此我们必须跟踪 Presto、Spark、Hive 和 Neutrino 等引擎中的指标。聚合并将这些指标与执行引擎绑定也是一个挑战。我们通过以下产品来实现这一点:
时间序列指标(又名 Clio):Uber 运行的每个查询都会被记录下来,并与执行的历史趋势相关联(我们称之为内部解决方案 Clio)。客户可以查看成本、持续时间、效率、数据读取/写入、随机播放等指标的历史趋势。了解历史趋势可让客户更快地检测和调试应用程序。此外,我们还提供“配置更改标记”,以便轻松关联配置更改和历史趋势的变化(参见图 4 中的指标趋势)。我们观察到的一个主要挑战是基础设施引入了故障。为了解决这个问题,我们在 Yarn、HDFS 和关联工具中构建了可观察性。
图4:Clio时间序列历史趋势。
Yarn 可观察性:饱和的 Yarn 资源可能导致作业失败和运行缓慢,这很难调试。我们提供解决方案来实时观察和关联应用程序运行时的 Yarn 利用率。此外,当作业受到 Yarn 影响时,我们会提供见解和建议。
图 5:应用程序级 Yarn Queue Insights。
文件系统可观察性: HDFS 缓慢和文件系统引起的延迟是导致难以检测的降级的另一个因素。我们对 Uber Hadoop 客户端进行了更改,以应用程序级粒度添加对 HDFS 调用计数和延迟的客户端监控。每个开发人员都可以查看其特定应用程序/查询的文件系统性能,这使得调试过程更加顺畅。我们还建立了关联系统来捕获各种基础设施和引擎指标,以找出问题的根本原因并提出修复建议——这是另一篇博客的内容。
图 6:向用户和引擎团队展示的 HDFS 指标。
图 7:DataCentral 上的文件系统洞察用户界面。
图 8:文件系统性能的历史见解。
非接触式任何数据平台用户的大部分时间都花在调试/排除失败的查询和应用程序故障上。为了帮助他们高效地排除故障,我们开发了“非接触式”系统,其目标如下:
提高错误的可发现性从正确的层面识别并揭示根本原因提供用户友好的解释和建议提供可操作的工作流程来解决错误该服务使引擎团队能够将基于正则表达式的规则添加到系统中。规则还支持添加其他元数据,如用户友好的解释、根本原因层、优先级等。一旦收集了应用程序的堆栈跟踪,非接触式服务就会将异常跟踪与规则进行匹配,并将最相关的消息返回给用户。
每当应用程序发生故障时,DataCentral 都会解析错误日志并对堆栈跟踪应用非接触式规则。然后,DataCentral 控制台上会显示用户友好的建议和错误消息,使最终用户能够调试和找出故障的根本原因。此外,建议选项卡会指示可采取的最佳措施来解决错误。
图 9A:用于配置规则的用户控制台。
图 9B:用于配置规则的用户控制台。
图 10:非接触式技术的实际应用。
DataCentral 如何帮助提高成本效率?Uber 的成本管理和削减由两个概念驱动:归因和成本效率。
退款Uber 不会对团队设定硬性限制和预算,而是在多个维度上提供成本和资源使用情况的高度透明度,以便利益相关者在做出决策时掌握正确的数据。资源使用情况和成本在 uOwn(Uber 的所有权平台)级别粒度上进行跟踪。此外,资源使用情况可以跨不同粒度进行剖析,例如:用户、管道、应用程序、时间表和队列级别。归因对于推动节约、识别反模式和推动关键的成本削减计划至关重要。
图 11:HDFS 消耗和使用情况洞察。
减少消耗
一旦资源可以分配给正确的团队和所有者,利益相关者就可以洞察以下指标:最昂贵的管道、持续失败的工作负载、不必要的计算等。作为成本效率的一部分,我们开展了项目(例如 HDFSRed、YarnRed、PrestoRed 等),这些项目可以做出自动化、数据驱动的决策来降低成本。HDFSRed 项目检查 Uber 数据表的访问模式,并为所有者创建 Jira 票证,以便在数据不经常访问时推动表删除和 TTL。Yarn 和 Presto 减少计划同样会检查反模式和不必要的计算,并提出可操作的 Jira 票证以减少/停止未使用的计算。
图 12:纱线减量 JIRA 票据示例。
DataCentral 的规模为了为所有 Uber 范围内的应用程序提供实时元数据,DataCentral 必须与 Uber 各种引擎的规模相匹配。Flink 作业与引擎级规模保持一致,将实时建模数据导入内部存储。通过每天 500K 个 Presto 查询、每天 400K 个 Spark 应用程序和每天 2M 个 Hive 查询,数据可观察性作业在读取引擎级指标的同时每分钟处理 2K 个查询和 30K RPS。此外,HDFS Insights 每天处理超过 100 亿次调用,峰值为 150K RPS(因为这会在应用程序级粒度上跟踪调用)。数据存储区具有 6 个月的保留期,以处理数据增长和规模。
建筑学为了最大限度地减少调试和缓解作业失败的时间,提供实时洞察和元数据至关重要。DataCentral 的架构由以下组件组成:
Presto、Hive、Spark 和 Neutrino 等引擎会实时向 Kafka 主题发送查询级元数据。DataCentral 拥有 Flink 作业,可不断监听这些 Kafka 主题并使用引擎发出的任何作业级元数据。Flink 作业实时预处理这些数据,并在作业级别粒度上合并多个来源的元数据。最后,数据存储在 MySQL 和 Docstore(Uber 的内部数据存储,提供强一致性和高水平扩展性)等内部存储中。DataCentral 微服务堆栈由多个 API 组成,可用于各种用例,例如 DataCentral UI、外部团队、Hive 表上的 TTL 设置等等。图 13:高级 DataCentral 架构。
元数据从引擎到 Observability 数据存储的传输过程不到 500 毫秒。DataCentral UI 提供见解和元数据,这些见解和元数据通过 MySQL 和 Docstore 数据存储提供。支持 UI 的 API 从不同的来源获取数据并将其合并到统一的响应中,最终提供面向客户的视图。
进一步运行批处理工作负载以支持建模数据集,从而提供关键的成本归因数据。来自各种引擎的数据与 HiveMetastore、uOwn 和其他元数据源相结合,以提供丰富的见解,这些见解通过 DataCentral UI 提供给下游团队并用于降低成本的计划。
DataCentral 和 Uber 的云迁移随着 Uber 转向云端,我们的首要任务仍然是为云生态系统提供成本透明度和降低成本。此外,DataCentral 还为引擎团队提供关键指标,用于在将工作负载迁移到云端时进行性能测试、基准测试和识别性能下降。这使我们能够在将关键作业迁移到云端时做出正确的决策。例如,文件系统可观察性使 Spark 等引擎团队能够观察到云端延迟的增加,并制定正确的迁移解决方案。
结论DataCentral 一直是 Uber 工程师、数据分析师和平台团队的重要工具。它提供高级分析和对大数据应用程序和查询的详细洞察。DataCentral 的使用者包括作业所有者、引擎值班人员、平台团队和高管领导。该平台的自助服务特性使客户能够高效地调试作业、缓解事故和根本原因 SLA 违规。DataCentral 的另一个关键功能是对大数据计算和存储实体(如 HDFS、Yarn、Kafka、Presto 等)的消费洞察。DataCentral 是利益相关者获取平台、团队和组织级洞察的唯一真实来源。此外,我们计划开源 DataCentral 工具包,以实现更广泛的采用和社区协作。
Apache®、Apache Pinot™、Apache Flink®、Apache Kafka®、Apache Hive™、Apache Hadoop®、Apache Spark™、Apache Yarn™、Kafka®、Apache Airflow™、Flink®、Hive™、Hadoop®、Spark™、Pinot™、Airflow™ 和 Yarn™ 是 Apache 软件基金会在美国和/或其他国家/地区的注册商标或商标。使用这些商标并不表示 Apache 软件基金会对其表示认可。
Presto 是 LF Projects, LLC 的注册商标。使用这些商标并不代表 LF Projects, LLC 对其表示认可。
Amazon Web Services、AWS、S3、Powered by AWS 徽标是 Amazon.com, Inc. 或其附属公司的商标。标题图片:“纽约中央车站”由jensfrickephotography 拍摄,根据CC BY 2.0获得许可。
作者:
Arnav Balyan
Arnav Balyan is a Software Engineer on the Uber Data Observability Team. He has built tools and instrumentation for providing insights into big data jobs across engines like Hive, Presto, Spark. He has worked with Massachusetts Institute of Technology in the Machine Learning domain for 2 years. His research interests and papers are focused towards anomalies in Time Series data, Brain Computer Interfaces and Opportunistic Networks.
Atul Mantri
Atul Mantri is a Senior Software Engineer on Uber's Data Platform team. He is focused on building systems that enable big data observability across all batch and real-time applications at Uber and turbocharging the cost-efficiency initiatives in the platform. Before Uber, Atul worked at Rubrik and Netapp building high-performance distributed systems. He holds a Masters degree from NC State University.
Krishna Karri
Krishna Karri is an Engineering Manager on Uber's Data Platform Team. He leads the Data Central team, which specializes in crafting advanced big data observability and chargeback platforms that are integral to the consumption reduction and cost efficiency initiatives within Uber’s Data Platforms.
Amruth Sampath
Amruth Sampath is a Senior EM on Uber's Data Platform team. He leads the Data Analytics org comprising Hive, Spark, Flink, Pinot and DataCentral.
出处:https://www.uber.com/en-JP/blog/datacentral-ubers-observability-and-chargeback-platform/