利用 Materialize 和 MinIO AIStor 构建高性能内部数据管道
Materialize 是一个专为实时数据集成和转换而设计的软件平台。它允许您仅使用 SQL 创建业务任何方面的最新视图。Materialize 构建在 Timely Dataflow(一种分布式数据并行计算引擎)之上,专注于在新数据到达时对查询进行高吞吐量、增量更新。对于性能至关重要的这些工作负载,在本地运行是一种经济高效且性能高的选择。
Materialize 的主要存储是对象存储。虽然市场上有其他对象存储供应商,但 Materialize 和 MinIO AIStor 的组合远远超过了其他对象存储解决方案所能达到的标准性能。AIStor 使网络完全饱和,限制其性能的唯一因素是您的网络容量和硬件。如果在处理数据时优先考虑性能,那么将 AIStor 和 Materialize 相结合可能是理想的解决方案。本教程将帮助您在本地开始使用 AIStor 和 Materialize。
为什么要构建本地
在本地部署数据基础设施具有多项优势,主要是在性能和控制至关重要的情况下,例如对敏感数据进行高性能实时分析的情况。通过将对象存储放置在数据源、控制面板和应用程序附近,您可以提高性能。更少的延迟意味着更快的查询响应。但是,延迟只是性能的一部分;另一个是吞吐量。您可以通过在 MinIO AIStor 上构建数据平台来实现高吞吐量。这种架构使 Materialize 能够利用市场上最快的对象存储,部署到 AWS 时甚至比 Amazon 的 S3 更快。如果性能很重要,这种组合可能是您的基础设施的关键。在本地运行 Materialize 和 AIStor 的另一个好处是,它可以更好地控制您的数据,这对于具有严格安全性和合规性要求的组织至关重要。通过在自己的基础设施中维护数据,您可以实施定制的安全措施并确保符合行业特定的法规。本地部署还可以通过消除经常性的云费用来节省成本,例如与对象存储上的 GET 和 PUT 相关的出口和 PUT 费用。MinIO AIStore 在商用硬件上运行,在提供高性能的同时进一步降低成本。
数据是 AI 的基础
AI 的好坏取决于它从中学习的数据。高质量、结构良好且可访问的数据是每个成功的 AI 计划的支柱。如果没有干净、管理良好的数据,即使是最先进的模型也难以提供有意义的见解。新数据对于 AI 驱动的工作负载至关重要。Materialize 可以帮助确保实时更新数据湖,并在需要时提供数据。
性能不仅仅是空幻
真正的性能不仅仅是关于总体速度,而是关于大规模一致、高效地提供这种性能。MinIO AIStor 支持扩展到数百 PB 的单个命名空间部署,并提供超过 3 TiB/s 的读取和写入吞吐量。这是一个关键的差异化因素。虽然一些竞争对手可以使单个 GPU 服务器饱和,但这样做通常需要更多的硬件、成本和复杂性,尤其是在管理多个集群或命名空间时。使用 AIStor,您可以获得每个 GPU 服务器的最大吞吐量(在 400GbE 上高达 53 GiB/s),同时保持存储架构简单且易于管理。这意味着 IT 团队需要维护的挂载点更少,开发人员需要担心的存储桶更少。结果如何?更快地获得见解,降低总拥有成本,并大规模提高性价比。
本地 Materialize 和 MinIO AIStor 部署教程
先决条件
1 . kind:安装 Kind。
2 . Docker:安装 Docker。
3 . Helm 3.2.0+:如果未安装,请按照 Helm 文档进行作。
4 . kubectl:安装 kubectl。
Docker 资源要求
对于此本地部署,请确保 Docker 具有:
- 3 个 CPU
- 10GB 内存
安装步骤
1 . 启动 Docker: 确保 Docker 正在运行。
2 . 打开终端 : 创建一个工作目录并导航到它:
mkdir my-local-mz
cd my-local-mz
3 . 创建 kind 集群 :
kind create cluster
4 . 标记 Kind 节点 :
MYNODE=$(kubectl get nodes --no-headers | awk '{print $1}')
应用标签:
kubectl label node $MYNODE materialize.cloud/disk=true
kubectl label node $MYNODE workload=materialize-instance
验证标签:
kubectl get nodes --show-labels
5 . 下载示例配置文件 :
设置 Materialize 版本:
mz_version=v0.130.4
下载文件:
curl -o sample-values.yaml https://raw.githubusercontent.com/MaterializeInc/materialize/refs/tags/$mz_version/misc/helm-charts/operator/values.yaml
curl -o sample-postgres.yaml https://raw.githubusercontent.com/MaterializeInc/materialize/refs/tags/$mz_version/misc/helm-charts/testing/postgres.yaml
curl -o sample-minio.yaml https://raw.githubusercontent.com/MaterializeInc/materialize/refs/tags/$mz_version/misc/helm-charts/testing/minio.yaml
curl -o sample-materialize.yaml https://raw.githubusercontent.com/MaterializeInc/materialize/refs/tags/$mz_version/misc/helm-charts/testing/materialize.yaml
文件说明:
- sample-values.yaml:配置 Materialize 运算符。
- sample-postgres.yaml:将 PostgreSQL 配置为元数据数据库。
- sample-minio.yaml:配置 MinIO。
- sample-materialize.yaml:配置 Materialize 实例。
6 . 安装 Materialize Helm chart:
添加 Helm 存储库:
helm repo add materialize https://materializeinc.github.io/materialize
更新存储库:
helm repo update materialize
安装 Materialize Operator:
helm install my-materialize-operator materialize/materialize-operator \
--namespace=materialize --create-namespace \
--version v25.1.2 \
--set observability.podMetrics.enabled=true \
-f sample-values.yaml
Verify installation:
kubectl get all -n materialize
等待所有组件都处于 Running 状态。
7 . 安装 PostgreSQL 和 MinIO AIStor:
安装 PostgreSQL:
kubectl apply -f sample-postgres.yaml
安装 AIStor:
kubectl apply -f sample-minio.yaml
验证安装:
kubectl get all -n materialize
等待所有组件都处于 Running 状态。
8 . 安装 Metrics Server:
添加指标服务器存储库:
helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/
更新存储库:
helm repo update metrics-server
安装 metrics 服务器:
helm install metrics-server metrics-server/metrics-server \
--namespace kube-system \
--set args="{--kubelet-insecure-tls,--kubelet-preferred-address-types=InternalIP\,Hostname\,ExternalIP}"
验证安装:
kubectl get pods -n kube-system -l app.kubernetes.io/instance=metrics-server
等待 metrics-server pod 处于 Running 状态。
9 . 安装 Materialize:
使用 sample-materialize.yaml 文件创建 materialize-environment 命名空间并安装 Materialize:
kubectl apply -f sample-materialize.yaml
验证安装:
kubectl get all -n materialize-environment
等待所有组件都处于 Running 状态。
10 . 访问 Materialize 控制台 :
找到控制台服务名称:
MZ_SVC_CONSOLE=$(kubectl -n materialize-environment get svc \
-o custom-columns="NAME:.metadata.name" --no-headers | grep console)
echo $MZ_SVC_CONSOLE
端口转发控制台服务:
(
while true; do
kubectl port-forward svc/$MZ_SVC_CONSOLE 8080:8080 -n materialize-environment 2>&1 | tee /dev/stderr |
grep -q "portforward.go" && echo "Restarting port forwarding due to an error." || break;
done;
) &
打开浏览器并导航到 http://localhost:8080。

您现在可以运行快速入门,在 MinIO 之上开始使用 Materialize。
准备好投入生产了吗?
当您准备好在本地构建 Materialize 时, 请在此处联系他们的解决方案架构师。MinIO AIStor 拥有一整套企业级软件,包括 Observability。该工具旨在通过提供对系统性能和运行状况的全面洞察来应对管理大规模数据基础设施的挑战。S3 over RDMA(远程直接内存访问*)允许数据绕过 CPU 以支持 GPU,从而显著加快计算密集型、指标密集型工作负载的数据传输速度。当您准备好使用通过此堆栈积累的数据时,可以利用一些东西。无论您是在速度、安全性还是可扩展性方面进行优化,这种组合都为真正的生产就绪型部署奠定了基础。