在Databricks构建大规模、多云、SaaS软件的经验教训

下载幻灯片

云已经成为企业购买软件的最具吸引力的方式之一,但它要求以与传统软件非常不同的方式构建产品。我将根据我在Databricks的经验来解释其中的一些挑战,Databricks是一家在AWS和Azure上提供数据分析平台服务的初创公司。bob体育客户端下载Databricks每天管理数百万个虚拟机,使用Apache Spark、TensorFlow、Python和其他软件为数千个客户运行数据工程和机器学习工作负载。

点击这里观看更多Spark + AI课程

免费试用Databricks

视频记录

-我激发和峰会和人工智能与会者。我很高兴你能参加我的虚拟演讲。今天,我将和大家谈谈我们从构建Databricks(大型多云数据平台)中学到的一些经验教训。bob体育客户端下载首先介绍一下,我是Jeff Pang,我是Databricks平台工程团队的首席工程师。bob体育客户端下载Databricks帮助数据团队解决一些世界上最棘手的问题。Databricks平台团队的使命是提bob体育客户端下载供一个世界级的多云平台,使我们能够快速扩展和快速迭代,从而不断改进我们的数据团队的产品。如果你感兴趣,你可以在www.neidfyre.com/careers上找到更多关于我们平台团队的信息。bob体育客户端下载

您可能知道,Databricks是由Apache Spark的最初创建者在几年前创建的。我们提供数据和人工智能平台,目前为各行业的5000bob体育客户端下载多家客户提供服务。我们仍然是初创公司,但我们已经发展到超过1000名员工,超过200名工程师,现在年收入超过2亿美元,而且我们还在增长。

我们的产品

我们的数据平台为数bob体育客户端下载据科学家、数据工程师和业务用户提供统bob体育亚洲版一的分析和人工智能。它包括一个数据科学工作空间,集成了笔记本电脑、emo flow和tensorflow等工具。它还有一个统一的数据服务,建立在同类最好的Apache Spark和data Lake部署之上。它是建立在企业云服务之上的。这是简单、可扩展和安全的,因为我们为客户管理所有操作。

这次演讲的内容是,首先我将带你们进入我们的统一分析平台,并向你们展示我们是如何构建多云数据平台的。bob体育亚洲版bob体育客户端下载然后我将描述我们在构建过程中遇到的三个挑战和教训。首先,随着时间的推移,我们如何发展和发展我们的数据平台。bob体育客户端下载其次,如何在多个云中成功运作,最后我们如何利用AI中的数据来加速数据平台本身。bob体育客户端下载

但是首先让我们看看Databricks数据平台的体系结构。bob体育客户端下载

简单的数据工程体系结构

因此,在一个简单的数据工程架构中,您可能使用单个spark集群来处理来自数据湖的数据,例如,数据湖可以存储在S3或HDFS中。您可以通过数据处理管道的青铜、白银和黄金阶段来优化数据以供使用。最后,你会在这些数据上有分析和报告应用程序,为你的用户提供实际价值。

现代数据工程架构DELTA LAKE

现在,大多数现代数据平台实际上涉及许多不同的bob体育客户端下载数据管道,而不仅仅是一个。除了您的数据湖之外,它们还将涉及流数据,它可能涉及调度更复杂的工作流,其中一个工作的输出由另一个工作的输入来处理。你可能使用像Delta这样的现代数据格式,你的应用程序可能涉及流分析、笔记本电脑、机器学习、人工智能等等。要做所有这些事情,你可能需要许多不同的spark集群来实现规模,而要管理spark集群,你可能需要一些集群管理系统,比如mesos或Kubernetes。这是主要组织正在使用或试图构建的体系结构类型,以便从数据中获得越来越多的价值。

再乘以成千上万的客户……

Databricks数据平台为我们成千上bob体育客户端下载万的客户提供了这些服务。我们管理一个控制平面,处理分析、协作、人工智能工作流、集群管理、报告、业务洞察、安全等,这样我们的客户就不必自己管理这些。我们在客户的首选网络中管理许多spark集群,以处理来自所有现有流和数据湖的数据。

许多地区…

此外,我们的数据平台部署在全球许多地区,因为bob体育客户端下载我们的客户部署在世界各地,数据平台接近数据是至关重要的。

在多云上。

由于我们的客户在多个云中拥有他们的数据,我们将这些部署复制到多个云中,并与每个云(如AWS和Microsoft Azure)的最佳功能集成。Databricks数据平台库是一个全球bob体育客户端下载规模的多云平台,为全球数千家客户管理数据平台。

每天管理数百万个虚拟机

因此,Databricks数据平台每天在spark集群上管理数百万个虚拟机。bob体育客户端下载从这张每天管理的虚拟机的图表中可以看到,我们预计我们的数据平台的规模将继续快速增长。bob体育客户端下载

那是数据库的控制平面

这就是Databricks的控制平面数据规划,简言之,就是我们数据平台的控制平面。bob体育客户端下载这就是我们今天演讲的主题。我们的控制平面每天有数十万个用户,数十万个spark集群,数百万个虚拟机,每天处理eb级的数据。我们的数据平台支持bob体育客户端下载所有人,从刚刚在我们的免费社区版中首次尝试spark的大学生,到拥有数千用户和许多复杂工作负载的财富500强公司。在接下来的演讲中,我将讨论我们从构建这个大规模多云数据平台中学到的一些重要经验。bob体育客户端下载

我要讨论的第一个挑战是,随着时间的推移,我们如何将软件发展成为服务数据平台。bob体育客户端下载

Databricks控制平面的演进

作为一家初创公司,我们一开始显然没有一个全球规模的多云数据平台。bob体育客户端下载事实上,我们从很小的东西开始。我们面临的挑战是,如何在几年的时间里,将一个数据平台从一个客户发展到数千个bob体育客户端下载客户。

由于我们为客户管理数据平台,我们希望不断扩展我们的bob体育客户端下载客户可以用它做的事情的能力。我们了解到,数据平台本身并不是最重要的,而是构建和bob体育客户端下载发展数据平台的工厂,它比数据平台本身更重要。因为随着时间的推移,这允许我们在数据平台上快速提供更多价值并支持更多用例。bob体育客户端下载这一切对我们的用户来说都是透明的。

那么,成功建立一个伟大的数据平台工厂的关键是什么呢?bob体育客户端下载首先,我们需要迅速向市场交付价值。例如,我们提供了一个数据平台的版本,其中包括一些分析工具,如笔记本电脑。bob体育客户端下载但很快就不得不提供包含更多功能的版本2,如作业调度和管理。在我们的数据平台上快速迭代的挑战在于,我们的用户在使用和依赖它的同时,我们也在试图改变它。bob体育客户端下载所以我们需要确保在不断改变数据平台的同时不会破坏东西。bob体育客户端下载成功建立这个虚拟循环的关键是我们现代的持续集成基础设施、快速的开发工具和大量的测试。例如,在Databricks,我们在开发平台上大量使用Scala、Bazel和React JS。bob体育客户端下载例如,与默认工具相比,我们花了大量时间优化Scala构建,使其速度提高了500倍。我们每天运行数以千万计的测试,以确保我们的更改不会破坏系统。 Our developers also create hundreds of Databricks in a box full control plane environments to the every day so that they can develop test and demo new features. This allows us to keep adding new features or data platform very rapidly.

扩大整个目标市场

其次,我们需要通过在许多环境中复制我们的控制平面来迅速扩大整个可寻址市场。挑战在于每个环境都略有不同。不同的云、不同的区域和不同的数据治理区域需要不同的配置。因此,如果我们想要支持所有这些不同的环境,并快速迭代以使用最新功能更新它们,这很快就会变得非常复杂。对我们来说,成功快速扩展的关键是高度关注声明性基础设施,我们仅依赖于描述不同控制平面的模板,并使用现代的持续部署基础设施来部署它们。

在Databricks,我们使用一种名为jsonnet、Terraform和Spinnaker的模板语言来形成我们的部署管道。例如,这允许我们表达超过1000万行配置,而代码行更少。它允许我们每个月在全球范围内发布几次数据平台的新功能。bob体育客户端下载

着陆并扩展工作负载

最后,我们希望在客户采用Databricks的数据平台后,扩展他们可以在Databricks上运行的工作负载。bob体育客户端下载这意味着我们需要扩大数据平台的运行规模,并同时扩大随着时间的推移向数据平台添加新功能的速度。bob体育客户端下载随着我们越来越多的工程师为数据平台开发功能,我们需要确保他们不会重复工作,不会构建其他人已经构建过的所有东西。bob体育客户端下载在已经采用我们数据平台的客户中成功快速扩展的第一个关键是拥有一个服务框架,该框架为所有数据平台功能完成了大部分繁重的工作。bob体育客户端下载比如容器管理和副本管理、api、rpc、速率限制、度量、日志记录、秘密管理等等。这些是Databricks需要的所有特性和所有团队,以便构建从笔记本到SQL到ML流程的特性。这些都是我们数据平台的一部分,但它们并不是其功能的核心。bob体育客户端下载第二个成功的关键是将单块服务分解为微服务。例如,当我们第一次开始我们的集群管理器服务时,它管理着我们所有的spark集群,它只是一台机器,为我们的客户管理着几百个DMS。但是为了支持我们今天管理的数百万个山药,我们需要把它分解成不同的核心功能,这样它才能扩展。 A well rounded service framework was the key to doing this rapidly so that we could spin up new services with different functionalities very quickly.

Databricks数据平台工厂bob体育客户端下载

总之,Databricks数据平台工厂使我们能够非常快速地迭代我们的bob体育客户端下载数据平台,快速地在许多地区和许多云上复制,并扩展它可以支持的工作负载的规模和广度。拥有一个坚实的平台工厂的好处之一是,我们经常用它来改进工厂本身。bob体育客户端下载从这张图中你可以看到,我们使用了大量的云原生开源技术,从用于rpc和api的Envoy和GraphQL到用于容器管理的Kuberbob下载地址netes,以及用于部署的Terraform和Spinnaker。但实际上,当Databricks刚开始时,我们并没有开始使用所有这些技术,许多开源项目甚至还不存在,但通过对我们的开发过程采取工厂方法,我们不断地更新我们的工厂,并随着时间的推移扩展最好的工具。bob下载地址本质上是利用我们的工厂来改进和完善自己,除了我们的数据平台。bob体育客户端下载

接下来,让我们谈谈如何在多个云上使用Databricks。

Databricks在多个云上运行,包括AWS和Azure。我们为什么要这样做?因为数据平台需要知道数据在哪里。bob体育客户端下载将数据平台放在与数据相同的数据中心bob体育客户端下载中会影响性能延迟和数据数据传输成本。它使我们能够集成每个云的最佳特性,并使我们能够坚持客户从我们期望的云中要求的数据治理策略。支持多个云的最大挑战是在不牺牲特性开发速度或数据平台本身的情况下做到这一点。bob体育客户端下载正如我刚才提到的,快速迭代和扩展数据平台的关键。bob体育客户端下载我们不想牺牲这一点。我们发现,与云无关的平台层是保持开发人员速度的关键,但这一层还需要与每个云的标bob体育客户端下载准集成,并管理它们的怪癖。下一张幻灯片我会讨论我的意思。

挑战:在多个云上开发速度

开发人员在多个云上的体验非常不同。因此,在每个云上构建相同的东西是非常困难的。例如,许多云服务没有直接的等价物。例如,在AWS中,AWS有一个很棒的可伸缩键值文档存储,称为DynamoDB。但是Azure中并没有这样的接口。云api之间也没有任何相似之处,甚至每个云上的身份验证和访问控制也非常不同。每个云的操作工具也非常不同,您甚至不能使用相同格式的日志。这使得在不做大量额外工作的情况下支持多个云非常具有挑战性。

方法:云不可知的开发平台bob体育客户端下载

为了克服这个问题,我们构建了一个与云无关的开发者平台来支持我们的数据平台。bob体育客户端下载在这些蓝线之间,我们的服务组成了我们的数据平台,比如SQL,笔记本,作业调度,emo流,集群管理等等。bob体育客户端下载确保这些服务可以在多个云中无缝运行。我们开发了一个服务框架API,它在我们支持的不同云中是通用的。这个API构建在几个最低公分母的云服务之上,这些服务在每个云上都非常相似。比如虚拟机、网络、数据库和负载平衡器。当Databricks工程师在数据平台服务上工作时,例如emo flow,他们会使用我们bob体育客户端下载的服务框架API来管理API, rbc用户,权限,计费,测试和部署,例如,他们会写一次代码,他们希望你担心每个云的差异,他们只会工作。

挑战:不是所有东西都可以与云无关

现在我们了解到,并非所有东西都可以与云无关。无论我们多么努力地去抽象细节。首先,客户实际上希望集成每个云的一些优点。我们希望支持每个云的标准。其次,即使是最低标准的云服务(如BMS)也有实现上的怪癖,一旦开始在其上构建,这些怪癖就会暴露出来。因此它们并不完全相同。

关键集成的方法抽象层

为了处理与每个云的标准的集成,我们的服务框架还充当了我们必须集成的每个云的差异的抽象层。例如,每个云进行身份验证授权、密钥管理、计费和存储的方式都非常不同。然而,大多数数据平台特性需要bob体育客户端下载与所有这些特性深度集成。因此,为了协调每个云中的差异,我们的服务框架API尽可能地抽象了这些差异,这样一个服务和一个put数据平台功能(如emo流)只需要了解我们的服务框架的身份验证和密钥管理概念,而不是每个云。bob体育客户端下载例如,它不需要知道Azure密钥库的KMS。你只是知道我们自己的概念,带你自己的密钥加密。

例如,考虑存储。存储是一个非常特殊的例子,因为S3和Azure data Lake都是在云中存储大型数据对象的最常见和最经济的方法。典型的存储层通常构成我们大多数客户使用的数据湖的基础。然而,S3最终是一致的,而Azure数据湖是强一致的。所以它们有非常不同的语义。也就是说,在将文件写入S3后,下一次读取同一文件时不能保证看到相同的数据,而这是Azure数据湖。显然,让每个应用程序处理这种语义差异将是一个相当令人头痛的问题,因此我们使用S3提交服务抽象了这种差异,通过协调数据平台工厂服务的数据访问层,基本上使与S3的交互像Azure数据湖一样强烈一致。bob体育客户端下载

方法;协调“等价的”云服务怪癖

处理云标准的抽象层是必要的,但这还不足以使我们的服务平台与云无关。bob体育客户端下载实际上,即使是所谓的通用云服务也有一些怪癖,这是一个相当大的噩梦。如果你只是想把在一个云中工作的东西搬到另一个云中去。例如,考虑使用packer等工具的虚拟机,在每个云中创建完全相同的映像非常容易。所以你实际上可以启动完全相同的二进制文件,运行完全相同的代码,完全相同的操作系统等等。但是,当使用BMS作为弹性计算时,这些虚拟机的创建时间和删除时间对用户体验非常重要。例如,当你试图旋转或拆除火花簇时。如果你不小心在api中采用云限制,你创建和删除虚拟机的速度可能会快于云返回给你的配额。你可能会陷入死锁状态,即使你认为你有更多的配额,你也不能创建更多的虚拟机。这是我们遇到的经验的一个例子,我们基本上必须围绕它工作,以确保我们可以成功地在两个云中创建vm和弹性spark集群。

类似地,我们发现不同的云处理普通TCP连接的方式非常不同。有很多看不见的中间框会超时并在没有警告的情况下关闭连接。数据发送者网络硬件可靠性存在微小差异,如果您没有意识到这些差异,可能会导致相当灾难性的应用程序故障。例如,我们发现在2019年,Linux内核中有一个重大的TCP错误。基本上这造成了一些TCP连接永远挂起。但我们确实只在其中一个云中遇到了这个错误,因为可靠性差异非常小。

最后,即使你可以运行MySQL和其他数据库以及所有云。这不完全一样。我们认为我们发现的东西是微不足道的,比如大小写敏感性的差异或底层操作系统的不敏感性。例如,不管你的文件是否区分大小写,如果你不小心的话,命名与否都可能进入数据库并咬你一口。

所以要做一个真正的云不可知论平台层。bob体育客户端下载我们不断地发现这些怪癖,并对我们的日常开发人员隐藏它们,这样他们就不必担心了。

今天我要讲的最后一课是,使用数据和人工智能来加速数据平台本身是多么重要。bob体育客户端下载

nception:用数据和人工智能改进数据平台bob体育客户端下载

如果没有数据和人工智能,建立和运营一个数据平台实际上是非常困难的。bob体育客户端下载实际上,你需要大量的数据和人工智能来构建一个数据平台。bob体育客户端下载因此,Databricks实际上是其最大的客户之一。我们大量使用数据库。数据平台需要来bob体育客户端下载自许多方面的数据,这些数据用于跟踪使用情况,维护安全性,并使用数据观察数据平台的用户并为他们批准数据。它需要数据来维持运行。我们发现,拥有像Databricks这样简单而强大的数据平台对于构建数据平台本身至关重要,因此数据和AIbob体育客户端下载加速了数据平台的发展。

我们使用Databricks做很多事情,这包括关键的平台功能,如使用情况和账单报告,我们希望向他们提供有关客户使bob体育客户端下载用情况的实际报告。还有我们的审计日志,我们需要为我们的客户开发安全日志,这样他们就可以知道他们的用户在做什么。我们使用Databricks进行分析和未来使用,以查看趋势和增长模型,查看流失率和其他预测。这些都是一些相同的功能,我们的客户也在使用Databricks。显然,我们也是一个数据客户,因为我们使用大量数据来分析我们自己的产品。最后,数据平台本身就是托管服务,托管服bob体育客户端下载务需要实时数据才能有效运行。这是针对关键任务的devops和监视可观察性,以便我们可以收集和分析从kpi到api和其他日志(如Spark调试日志)的所有内容,这对于帮助我们的客户调试他们的工作负载以及在平台出现问题时调试问题都是必要的。bob体育客户端下载

外分布式数据管道

因此,为了做到这一点,我们以Databricks数据平台为基础构建了几个全球分布的数据管道。bob体育客户端下载像我们的服务部署一样,我们使用声明式模板来部署数据管道,这样我们就可以快速迭代和复制它们。我们有一个称为堆栈CLI的模板工具,您可以在我们的文档中找到它,您可以使用它在Databricks或Databricks中部署这些数据管道。我们的每个全球分布式Databricks部署流基本上是从ETL数据流到我们的数据处理引擎,它是建立在Databricks和Delta之上的。但它也与其他大数据工具紧密集成,如Prometheus的弹性搜索和用于分布式跟踪的Jaeger。这使我们能够实时和历史地查看、分析和建模Databricks数据平台的使用和帮助。bob体育客户端下载现在,我们的数据管道每天处理数百tb的日志,并实时分析数百万个时间序列。这个数据管道对于Databricksn这个数据平台的持续发展是非常重要的,Databricksn实际上是建立在这个平台上的,因此databricsn实际上加速了自己的发bob体育客户端下载展。

因此,总的来说,Databricks体系结构在多个云中管理着全球数百万个BMS。在构建这个庞大的数据平台的过程中,我们学到了一些重要的东西。bob体育客户端下载首先,构建和发展数据平台的工厂比数据平台本身更重要。bob体育客户端下载未来的数据平台不会bob体育客户端下载像今天这样。而工厂将构建未来的数据平台。bob体育客户端下载

其次,与每个云标准和特性集成的云不可知平台是构建多bob体育客户端下载云数据平台的关键。由于大数据的性能扩展集成需求,这比最初看起来更难做到。

最后,数据和人工智能可以加速数据平台、功能产品分析和开发运营。bob体育客户端下载如果不实际分析大量数据,就无法真正构建一个大规模的数据平台。bob体育客户端下载

我的演讲到此结束,谢谢大家的聆听。哦,PS如果你对今天的演讲感到兴奋,Databricks工程正在招聘,我希望你们中的一些人能加入我们。

点击这里观看更多Spark + AI课程

免费试用Databricks
«回来
关于Jeff Pang

Jeff Pang是Databricks平台团队的首席工程师。bob体育客户端下载他领导了Databricks统一分析平台的几个部分的开发,包括Databricks笔记本、Databricks社区版和Azurbob体育亚洲版e Databricks。bob体育客户端下载在加入Databricks之前,他曾在AT&T实验室研究部门从事大规模数据分析工作。他在卡内基梅隆大学获得博士学位,在加州大学伯克利分校获得学士学位。