如今,数据平台被期望处理和bob体育客户端下载分析大量的源,这些源包括批处理文件、流源、后端数据库、REST api等等。显然,需要对平台进行标准化,使其具有可伸缩性和灵活性,让数据工程师和数据科学家专注于业务问题bob体育客户端下载,而不是管理基础设施和后端服务。该平台的另一个关键方面是多租户,以隔离工作负载,并能bob体育客户端下载够跟踪每个租户的成本使用情况。
在这次演讲中,Richa Singhal和Esha Shah将介绍如何使用Databricks构建一个可扩展的数据平台,并在管理成本的同时有效地部署数据管道。bob体育客户端下载会议将涉及以下主题:
理查德·辛格尔:大家好,欢迎来到2021年数据+人工智能峰会。我是理查德·辛格尔。我和我的同事Esha在这里讨论如何使用Databricks管理和扩展数据管道。我们既是Atlassian的高级数据工程师,也是市场数据工程团队的一员。这就是我们的团队,我们的团队让营销和销售团队通过民主化数据来推动公司增长和战略业务优先级。
Esha Shah:我们会议的主要焦点是分享Databricks如何帮助我们扩大规模。我们从我们是谁开始,然后是几年前我们面临的挑战,然后我们将引导您了解我们如何使用Databricks。现在,对于那些不了解Atlassian的人,我们相信团队可以改变世界,我们的使命是释放每个团队的潜力。我们的产品,其中一些你在屏幕上看到的,帮助团队组织、讨论和完成他们的工作。所以在过去的五年里,我们看到了数据的快速增长,也看到了用户访问数据以获取见解的快速增长。值得庆幸的是,我们已经能够扩展并跟上业务不断增长的需求,今天我们以几pb的规模运行。我们想分享我们认为在我们的旅程中对我们最有帮助的东西。
这是五年前的架构,正如你在这里看到的,我们的架构关键组件对于大多数分析流程都是通用的。因此,除了实时事件外,我们还使用第三方连接器、api、事件流和批处理从大量内部和企业来源获取数据。然后对于关键源,我们在转换层实现变更数据捕获。我们的存储层包括一个数据湖和我们的分析数据模型,然后用于操作和分析。正如你在这里看到的,我们曾经严重依赖EMR集群和Spark来实现我们所有的ETL用例,我们所有的创建主要是使用Athena完成的。
现在,有了EM,我们有能力大规模地转换数据,但我们遇到了问题。首先,我们的开发周期太长,即使是基本的开发操作也非常困难。例如,每次我们迭代代码并对代码文件进行更改时,都必须将这些更改复制到集群中。访问和输入日志非常困难,而且我们无法清楚地看到历史作业运行情况。此外,由于我们负责启动和关闭集群,我们开始遇到空闲实例,这些实例继续存在并增加了成本,只是因为开发人员忘记关闭它们。现在,我们面临的另一个主要问题是跨团队依赖。分析很大程度上依赖于数据工程,我们给[听不清]团队的工程师。
当涉及到创建数据集时,我们最大的开销是支持分析师。我们的分析师不得不等待DE解除基本任务的封锁。此外,当涉及到深度过程或UAD过程中的可视化时,这是一个完全不同的任务,并且没有简单的方法来分享这些结果。我们依赖于平台团队来完成所有的集群管理活动、软件更bob体育客户端下载新、附加库和资源权限。此外,我们使用点节点的自动伸缩算法也很模糊,我们在管理工作负载时经常遇到问题。您可以说,除非您共享屏幕,否则协作是不存在的,当您关闭集群时,所有上下文都丢失了。
Richa Singhal:所以我们确实需要一个平台,不仅要满足我们不断增长的数据bob体育客户端下载的性能需求,还要提供自助服务,使业务用户和决策者能够有效地完成他们的工作。标准化,使数据处理在团队之间保持一致。自动化,提供方便的数据访问,并提高移动性,并使回报最大化。敏捷,尝试在快速变化的环境中做出反应。最后但并非最不重要的是跟踪和优化平台和运营成本的能力。bob体育客户端下载因此,Databricks似乎符合我们清单中的所有领域,并提供了更多,因此我们的平台团队决定投资Databricks平台。bob体育客户端下载这就是我们现在的数据架构。我们开始在四个主要支柱上大量使用Databricks平台bob体育客户端下载,这里用蓝色突出显示。用例包括流和批量注入,数据回填,数据处理的变更数据捕获。
我们已经开始为Delta Lake使用Databricks Delta,也为Databricks notebook进行分析和临时分析,使用ML Flow来操作数据科学平台。bob体育客户端下载让我们来看看我们的成功故事。因此,在过去的三年中,通过使用Databricks平台,我们看到了关键的改进。bob体育客户端下载因此,这些改进主要围绕快速开发、协作、扩展和自助服务。对于快速开发,使用现成的平台,由于更好的Desk实践,我们能够通过增加良好的可靠性bob体育客户端下载来减少整体开发时间。协作,通过简化和共同创作来减少重复工作和代码冗余。然后是扩展,随着数据的增长,我们能够在管理基础设施使用成本的同时支持数据扩展需求。还有自助服务,我们让团队自助和自力更生,同时消除简单任务与其他团队的交叉依赖。因此,所有这些关键改进都有助于降低整体平台成本。bob体育客户端下载
让我们讨论一下采用Databricks的过程,并深入研究以下领域。我们将讨论如何构建数据管道、编排、Delta Lake分析和数据科学用例。因此,构建数据管道是任何数据团队的核心部分,它可以是ETL批处理,也可以是运行数据科学模型等等。因此,这里的目标是跨不同团队标准化数据管道流程。在Atlassian,来自数据工程、分析和数据科学的团队使用两种不同的方式来维护他们的数据管道。一个是使用Databricks notebook,另一个是DB-Connect Library。那么为什么我们要采用两种不同的开发方法呢?因此Notebook风格的开发主要用于需要交互式访问数据的轻量级和临时开发。另一方面,DB-Connect在密集的管道开发过程中非常有用。我们将在接下来的几张幻灯片中讨论这两种开发方法,以及我们如何将其与Atlassian的Bitbucket结合起来,以获得无缝的DevOps体验。
让我们从使用Databricks Notebook进行开发开始。这里的流程显示了使用Databricks Notebook的典型开发周期,从左上角开始,在Atlassian,所有开发都从创建Jira票据开始,这对于项目计划和跟踪非常有用。接下来,开发人员开始通过创建一个工作之外的分支存储库来处理票据,因此Jira和Bitbucket之间的集成使开发人员的这个过程无缝对接,同时跟踪工作进度。要开始开发,开发人员将分支拉到本地,他们可以选择开始在本地分支上工作,也可以连接到Databricks工作空间以直接在notebook上工作。此外,测试非常简单,因为开发人员可以将笔记本电脑附加到Databricks交互式集群或临时作业集群,后者在底层使用AWS资源。因此,通过设置类似于生产环境的集群配置,这为开发人员提供了执行数据负载测试的灵活性。一旦开发工作完成,开发人员将从Databricks工作区导出一个笔记本到本地,并创建一个PR以合并到登台环境。
让我们讨论一下如何使用Databricks工作区设置多阶段环境。因此,当涉及到工作空间时,每个团队在Databricks工作空间上都有单独的文件夹,该文件夹分为多个环境,如dev stage和prod。这里的流程为单个存储库或上传库显示了一个多阶段环境。因此,对于本地或开发,开发人员在Databricks工作区中的teams dev文件夹中工作。当涉及到在stage和prod中部署时,CICD进程同步会转到各自的Databricks工作区文件夹中。对这些文件夹进行编码可以启动特定于环境的Databricks集群。虽然开发文件夹对从事回购工作的开发人员开放访问,但暂存和刺激文件夹的访问权限受到限制,并且代码只能通过Bitbucket CICD编写。让我们深入了解一个典型的Bitbucket CICD进程是怎样的。
使用Bitbucket,很容易建立一个CICD,它可以显示正在部署的内容。此外,它不仅维护版本,而且在我们每次将代码推到主分支时触发CICD。因此,这段代码显示了用于Databricks Notebook部署的CICD管道。它包括三个步骤。首先是检查配置文件,它会安装库链接检查,等等。第二是移动,去数据库。因此,这将源代码从Bitbucket同步到特定的Databricks工作区文件夹,在这种情况下,你可以看到它的prod。最后一个是更新Databricks作业元数据。因此,尽管这段代码显示了三个步骤(CICD),但可以作为部署的一部分执行多个其他操作活动。因此,为了在不同的团队之间标准化这些过程,我们维护了一个名为Databricks CICD的单一存储库。Atlassian的任何使用Databricks笔记本的团队,都可以建立一个标准化的CICD流程,可以使用Databricks CICD回购作为[听不清]。
在讨论使用DB-Connect库进行开发之前,让我们先迭代一下使用notebook进行开发。因此,尽管笔记本电脑非常适合临时开发,并具有多种优势,它简化了开发人员的基础设施,非常适合探索数据,易于协作和共享,但它们缺乏一些关键的软件开发特性,如构建和导入类和模块的挑战,低测试覆盖率,按照工程标准维护代码质量。
因此,一些构建工程密集型管道的团队倾向于使用DB-Connect库进行本地开发和测试。你可以说DB-Connect就像一个神奇的Spark本地实例,你的机器会认为它在使用本地安装的Spark,但实际上,它会使用远程的Databricks实例。这里的开发流程与前面幻灯片中讨论的基本相同,唯一的区别是笔记本电脑现在被您最喜欢的IDE所取代。因此,与笔记本风格的开发不同,开发人员可以直接在本地开始工作,而不需要从Databricks工作区导入或导出笔记本代码,这也简化了PR过程。这件事在这里也非常简单,因此开发人员可以通过DB-Connect库连接到Databricks远程集群,并开始测试代码。感觉就像是从本地运行,但仍然有能力利用云资源。
因此,让我们讨论使用AWS S3的多阶段环境。这就是使用DB-Connect Library的数据管道的多阶段环境的样子。因此,对于我们的本地开发,开发人员在他们的本地IDE上工作,并可以通过DB-Connect库连接到Databricks集群。开发人员还可以通过远程集群访问AWS资源,如S3,以进行登台和生产。因此,一旦你的PR进程…Peers被审查和批准,CICD进程将代码同步到相应的S3桶,这些代码文件可以通过Spark Submit Operator从Databricks作业集群调用。让我们来谈谈配器。因此编排是任何数据管道的关键组件,所以用外行的术语来说,您可以说它是您想要运行的所有任务的集合,以反映它们之间关系和依赖关系的方式组织。在Atlassian,我们有标准化的[听不清]气流作为数据编排工具。
我们的气流实例利用Kubernetes操作符进行资源优化和可伸缩性。Atlassian的数据团队通过围绕气流功能操作符创建包装来构建自己的气流操作符。此包装器包括与为作业任务提供附加功能的其他系统的集成。例如,在该流程中,气流Kubernetes操作器集成了不同的平台和工具。bob体育客户端下载首先让我们从Slack开始,它会将任务失败和成功通知发送到各自的团队渠道。左边的SignalFx,将任务失败信号路由到Atlassian的Opsgenie,这是一个事件管理工具,它反过来提醒值班人员。YODA,这是我们内部的数据质量工具和Databricks平台,支持Notebook任务和Spark Submit任务。bob体育客户端下载那么,我们如何跟踪资源使用和成本呢?为了监控成本并准确地将Databricks的使用归因于组织的业务单元和团队,我们标记了工作区和作业集群。
因此,在此流程中,通过交互式集群或由Databricks作业集群触发的所有Databricks作业都与标记相关联,这些标记可以指向特定的团队或业务单元环境资源所有者等等。因此,这些统计数据可以作为工作元数据的一部分,存储在我们的数据湖中,并用于不同团队的其他报告。它还使团队可以看到工作级别的资源使用和成本。因此,使用Databricks平台,我bob体育客户端下载们不仅实现了多租户以隔离工作负载,而且还减少了管理员和[听不清]团队的平台管理开销。因此在下一节中,我们将讨论如何大规模地管理数据。
Esha Shah:现在,有了DB-Connect、CICD repos和[听不清],我们开始看到大规模标准化的优势,有了可重用组件、更容易维护和持续改进,越来越多的用户贡献了变化。另一个对我们的规模至关重要的组件是我们的过渡Databricks Delta。现在,当涉及到操作时,Delta使我们的多pb数据湖成为一个数据仓库,它解锁了以前不可行的功能,并使操作维护更容易。让我们看看怎么做。
所以到目前为止,任何时候我们想要重现结果,我们知道我们的输入可能会改变,我们就会创建输入数据集的副本,创建[听不清]的数据集也是如此。使用Delta,我们默认得到这个,它维护数据的版本来跟踪所有的插入、更新和删除。它还允许您通过简单地添加关键字作为版本或时间戳来指向特定的版本。
这个时间旅行功能是从损坏的数据或意外覆盖中恢复的救星。现在,版本控制对于源摄取来说是一个非常有吸引力的特性,对吧?但是使用合并功能的简单CDC实现尤其如此。使用Delta的merge函数,我们的文件就像表一样,我们可以像在关系世界中那样编写更多的语句。因此,使用数据湖的大多数人都知道,在Parquet文件中更新记录是不可能的,昂贵的重建也不是一个可行的选择。因此,我们转向了追加模型,增量数据被追加到日期分区中。现在有了Delta,我们通过引入CD类型的二维来解锁强大的BI,自从我们从关系数据仓库转移到[听不清]之后,我们就忘记了这一点。现在,在此之后,我们还可以选择自动模式演进,如果在源上添加了一个新列值,那么它就会自动显示在Delta表中,这大大简化了源CDC的维护。
还有更多的维护工具,还有自动优化。对于流数据,自动压缩只是将文件大小合并为最佳大小,你根本不需要做任何事情。增量表通常具有内置优化,这将导致更好的查询性能。我们已经看到,在某些情况下,我们的查询性能几乎提高了70%,因此我们开始转向一个模型,其中数据管道中几乎所有的中间表都是Delta。它可以帮助我们在需要历史和当前图片来计算数值的旱地。总之,无论是源数据、中间表还是最终的维度模型,Delta在每一个阶段都有优势。
到目前为止,我们一直专注于数据工程方面的事情,对我们来说,Databricks的采用是随着口口相传而有机增长的。我们来谈谈Atlassian的其他团队是如何使用它的。现在,正如你在这里看到的,分析团队使用Databricks进行探索性分析,进行数据驱动的战略决策,对概念进行验证,当涉及到新的指标时,创建和管理他们自己的数据集或[听不清],甚至创建带有数据练习的模板,以帮助新团队成员加入。分析人士将它用于几乎所有的事情,Databricks之外的唯一组件是面向更广泛受众的可视化,这主要是通过Redash或Tableau完成的。对我们来说,迈向规模化的最大一步是自助服务,这也是我们最大的胜利之一。分析能够自我服务,而不需要数据工程成为瓶颈。
所以今天,当我们的任何分析团队成员需要带有派生数据的特别数据集时,为了简化一个更大的查询,或者构建一个仪表板,他们有Databricks notebook来创建他们自己的表。如果它们的分析或转换需要额外的库,那么只需使用Dbutil的安装库就可以完成工作。我们的平台团队也bob体育客户端下载创建了一个实用工具,可以让Atlassian的任何人上传文件,在我们的数据湖中创建表格。你可以上传csv然后从我们的数据湖开始创建。现在这个实用程序甚至在上传期间散列BII,进一步支持自助服务。[听不清]不再是创建数据集的瓶颈。分析师通常复制生产笔记本,他们进行业务逻辑更改,他们创建自己的测试数据,然后在Atlassian,他们甚至为我们创建Bitbucket拉请求,所有这些都不需要知道旋转集群和执行或提交作业的任何事情。
现在,我们的另一个重大胜利是合作。共享一个包含所有代码的笔记本链接要容易得多,而且它不仅仅是代码,你可以用文档单元格组织它,然后在单元格中可视化你的结果。这些笔记本是可重复使用的,您可以随时克隆它们并进行更多修改,或者只是进行修改,然后恢复到以前的版本。我们所有的调查和[听不清]现在都在笔记本上,也许只是添加一个笔记本链接到Jira门票。我们还将数据集、特定的手动UAT或质量检查存储为模板,以实现可重用性。不用说,当你可以实时协作时,团队合作就容易多了。
接下来是数据科学和我们最大的胜利。得益于开放和无缝的[听不清]流程功能,我们将Databricks用于所有可能性阶段。团队将其用于端到端循环,从探索开始,到训练、评分、实验、性能分析,甚至模型服务。我们最大的胜利是,没有基础设施开销。因此,我们的数据科学家不再共享集群,他们不会等待资源,也不会在数据科学生命周期的任何阶段管理基础设施。减少的开销有助于他们专注于其他增值活动。当涉及到从流、api或使用Delta的批处理加载中摄取数据时,它们是独立的。Delta还帮助他们打包并拖动输入,以便在以后使用相同或不同的模型或参数。现在,当涉及到生产代码时,几乎没有任何步骤可以从在笔记本上编写和测试本地代码,到将其推到云端,并且可以在同一笔记本上使用多种语言进行本地开发。
因此,一旦验证,调度可重复的代码或通过气流或服务模型是所需要的。这是最大的胜利之一,整个周期从几周缩短到几天。通过[听不清]跟踪,我们引入了标准化和治理,因为我们现在在同一个地方拥有了所有可能的ML活动的参数、代码版本、度量和工件的沿谱系和日志记录。有组织的跟踪使查看结果和选择最佳优化版本变得更容易。这也促进了可重用性和共享学习,因为现在多个团队可以查看先前的版本和相关的度量标准,然后决定重用现有的模型或构建新的模型。最后,由于ML Flow的障碍和集成使得实现机器学习模型变得更加容易,我们已经看到数据科学以外的团队自行服务并将其用于特定的用例。
我们的会议就这样结束了。总结一下,我们想总结一下我们的主要收获。好吧,我们是Databricks的粉丝,幻灯片上的数字说明了一切。我们的开发周期更短,更可靠,测试更简单。因此,整体交付时间大大缩短了。我们还降低了基础设施成本,[听不清]谈论使用相同数量节点的集群。仅仅从EMR过渡到Databricks而不做任何其他更改就可以节省成本,因为Databricks对于较小的EC-2实例来说要便宜得多。我们已经看到了快速的应用,Atlassian中几乎一半的人现在都在以这样或那样的方式使用Databricks,因为它太容易使用了,太直观了。
最后,越来越多的处理数据的团队现在是自力更生的。我们想说的是,如果分析学在10件事情上依赖于PE,那么现在他们可以自己完成这10件事情中的7件。数据工程和平台团队之间的依赖关系也是如此。bob体育客户端下载因此,我们真诚地希望你对这只股票有所收获,但非常感谢你的倾听。顺便说一句,我们正在招聘,访问Atlassian careers网站,加入我们吧。
同时,非常感谢所有帮助我们制作内容的Atlassian员工。最后,提醒一下,您的反馈对我们很重要。所以如果你有时间,请不要忘记对课程进行评分和复习。谢谢。