论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
虚拟化.超融合.云计算
›
公有云
›
在 Google Cloud 上大规模部署 dbt 项目
在 Google Cloud 上大规模部署 dbt 项目
一给
论坛元老
|
2024-8-22 17:57:41
|
显示全部楼层
|
阅读模式
楼主
主题
1842
|
帖子
1842
|
积分
5526
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
使用 Artifact Registry、Cloud Composer、GitHub Actions 和 dbt-airflow 容器化并运行 dbt 项目
接待来到雲闪世界。,大规模管理数据模型是使用dbt(数据构建工具)的数据团队面临的常见挑战。最初,团队通常从易于管理和部署的简朴模型开始。然而,随着
数据量的增长
和
业务
需求的
发展
,这些模型的
复杂性
也随之增长
。
这种发展通常会导致一个
庞大的
存储库
,其中所有依赖关系都交错在一起,这使得不同的团队
难以有效
协作
。为相识决这个问题,数据团队大概会发现将他们的数据模型分布在多个 dbt 项目中是有益的。这种方法不仅可以促进
更好的构造和模块化
,还可以增强整个数据基础设施的可扩展性和可维护性。
处置处罚多个 dbt 项目带来的一个庞大复杂性是它们的执行和部署方式。管理库依赖关系成为一个关键问题,尤其是当不同的项目需要不同版本的 dbt 时。固然 dbt Cloud 为调度和执行多存储库 dbt 项目提供了强大的解决方案,但它需要大量投资,并非每个构造都能负担得起或认为公道。一种常见的更换方案是使用Cloud Composer(Google Cloud 的托管Apache Airflow服务)运行 dbt 项目。
Cloud Composer 提供了一个托管情况,其中包含大量预界说依赖项。但是,根据我的经验,这种设置带来了庞大挑战。安装任何 Python 库而不遇到
未解决的依赖项
通常都很困难。在使用时,我发现
由于版本依赖项辩说,
dbt-core在 Cloud Composer 情况中安装特定版本的 dbt 几乎是不大概的。这次经历凸显了在 Cloud Composer 上直接运行任何 dbt 版本的难度。
容器化
提供了
一种
有效的
解决方案。您无需在 Cloud Composer 情况中安装库,而是可以
使用 Docker 镜像容器化 dbt 项目并
通过 Cloud Composer 在 Kubernetes 上运行它们。这种方法可让您的 Cloud Composer 情况保持
干净,同时允许您在
Docker镜像中包含任何所需的库。它还提供了
在各种 dbt 版本上运行不同 dbt 项目标
灵活性,解决了依赖辩说并确保无缝执行和部署。
在解决了管理多个 dbt 项目标复杂性之后,我们如今开始
在 Google Cloud 上大规模部署这些项目
的技能实现。下图概述了容器化 dbt 项目、将 Docker 镜像存储在Artifact Registry中以及使用GitHub Actions主动部署的过程。此外,它还说明了如何使用开源 Python 包在 Cloud Composer 上执行这些项目dbt-airflow,该包将 dbt 项目呈现为 Airflow DAG。以下部门将引导您完成每个步骤,提供有效扩展 dbt 工作流程的全面方法。
Google Cloud 上 dbt 项目部署流程概述 — 来源:作者
使用 GitHub Actions 在 Artifact Registry 上部署容器化的 dbt 项目
在本节中,我们将使用 GitHub Actions 界说 CI/CD 管道,以主动将 dbt 项目作为 Docker 映像部署到 Google Artifact Registry。此管道将简化流程,确保您的 dbt 项目被容器化并一致地部署在 Docker 存储库上,然后 Cloud Composer 就可以拾取它们。
首先,让我们从高层概述开始,相识 dbt 项目在存储库中的布局。这将帮助您遵循 CI/CD 管道的界说,因为我们将在某些子目次中工作以完成工作。请留意,Python 依赖项是通过Poetry管理的,因此存在pyproject.toml和poetry.lock文件。如果您已往曾使用过 dbt,那么下面分享的其余布局应该很容易理解。
.
├── README.md
├── dbt_project.yml
├── macros
├── models
├── packages.yml
├── poetry.lock
├── profiles
├── pyproject.toml
├── seeds
├── snapshots
└── tests
复制代码
项目布局确定后,我们如今可以开始界说 CI/CD 管道。为了确保每个人都能跟上,我们将介绍 GitHub Action 工作流程中的每个步骤并解释每个步骤的目标。此详细分解将帮助您相识如何为自己的项目实行和自界说管道。让我们开始吧!
步骤 1:为 GitHub Action 工作流创建触发器
我们的 GitHub Action 工作流程的上部界说了将激活管道的触发器。
name: dbt project deployment
on:
push:
branches:
- main
paths:
- 'projects/my_dbt_project/**'
- '.github/workflows/my_dbt_project_deployment.yml'
复制代码
main本质上,每当目次发生更改或 GitHub Action 工作流文件发生修改时,都会通过推送事件触发管道到分支projects/my_dbt_project/**。此设置可确保部署过程仅在进行相干更改时运行,从而保持工作流高效且最新。
第 2 步:界说一些情况变量
GitHub Action 工作流程的下一部门设置情况变量,这些变量将在后续步骤中使用:
env:
ARTIFACT_REPOSITORY: europe-west2-docker.pkg.dev/my-gcp-project-name/my-af-repo
COMPOSER_DAG_BUCKET: composer-env-c1234567-bucket
DOCKER_IMAGE_NAME: my-dbt-project
GCP_WORKLOAD_IDENTITY_PROVIDER: projects/11111111111/locations/global/workloadIdentityPools/github-actions/providers/github-actions-provider
GOOGLE_SERVICE_ACCOUNT: my-service-account@my-gcp-project-name.iam.gserviceaccount.com
PYTHON_VERSION: '3.8.12'
复制代码
这些情况变量存储部署过程所需的关键信息,例如 Artifact Registry 存储库、Cloud Composer DAG 存储桶、Docker 镜像名称、服务帐户详细信息和工作负载身份团结。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
一给
论坛元老
这个人很懒什么都没写!
楼主热帖
手把手教你如何使用kali破解wifi密码( ...
3.2操作系统(基本分页存储管理的基本 ...
C++面试八股文:std::array如何实现编 ...
嵌入式 Linux 内核驱动开发【The first ...
零基础入门 Java 后端开发,有哪些值得 ...
你真的了解二叉树吗?(上篇) ...
Wireshark学习笔记(一)常用功能案例 ...
Kubernetes(K8S) Deployment 升级和回 ...
上古神兵,先天至宝,Win11平台安装和配 ...
当“超融合”邂逅“奥 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
数据仓库与分析
Oracle
快速回复
返回顶部
返回列表