使用 MinIO 和 Pachyderm 大规模容器化数据分析
运行在 Kubernetes、Docker Swarm、DC/OS 等编排平台上的容器为应用程序部署提供了强大而通用的方式。容器允许您部署隔离的应用程序实例,您可以启动多个此类实例以扩展您的负载服务能力。由于编排工具提供了 声明式部署,您甚至不必担心单个服务器的容量和调度。
然而,云原生策略似乎仍然难以实现数据分析。这主要是因为数据分析涉及与大量数据紧密耦合的大规模处理。单个容器不可能挂载所有数据,如果有多个容器处理数据,则难以跟踪正在处理的数据。
如何将云原生原则应用于像大数据这样的计算和数据密集型领域?
Pachyderm 是一个开源框架,它通过容器实现分布式数据版本控制和数据管道。我们与 Pachyderm 团队密切合作,很高兴地宣布 MinIO 现在已集成作为 Pachyderm 的后端数据存储。在这篇文章中,我们将分享如何设置 Pachyderm 以创建由 MinIO 云存储支持的容器化数据分析。但在那之前,让我先解释一下为什么这是一个好主意!
为什么选择 Pachyderm 和 MinIO?
MinIO 足够通用,可以作为应用程序堆栈和数据分析平台的后端。这样,您可以将您的应用程序插入到 MinIO 中以存储非结构化数据,同时还可以并行对一些 MinIO 存储桶运行分析。

MinIO 是云原生的,与 S3 兼容,健壮,可扩展,可以在任何地方部署 - 在本地或在云端。
Pachyderm 支持 版本控制数据 和 容器化处理。虽然数据可能存在于 MinIO 中,但 Pachyderm 会自动将数据片段分配给不同的容器进行并行处理,帮助您充分利用容器技术进行数据分析。
用 Pachyderm 设置 MinIO
首先,您需要启动并运行 MinIO。您可以将 MinIO 安装在云服务器上或本地。查看详细信息 这里。MinIO 准备就绪后,创建一个存储桶(用作 Pachyderm 的数据源),并记下 accessKey、secretKey、bucketName 和 endPoint。我们在部署 Pachyderm 时需要这些信息。
下一步是部署 Pachyderm。请注意,Pachyderm 需要 Kubernetes 和命令行实用程序 pachctl
作为先决条件。
Kubernetes 用于通过容器编排您的数据处理。您可以通过 Minikube 在本地部署 Kubernetes,或者在 AWS/GCP 等云提供商上 部署。pachctl
允许与在 Kubernetes 上运行的 Pachyderm 应用程序进行交互。您可以通过以下方式安装 pachctl
# For macOS:
$ brew tap pachyderm/tap && brew install pachctl
# For Linux (64 bit):
$ curl -o /tmp/pachctl.deb -L https://pachyderm.io/pachctl.deb && sudo dpkg -i /tmp/pachctl.deb
最后,您可以部署 Pachyderm。假设您正在其中一个常见的云提供商上进行部署,您正在运行 Kubernetes,并且您已在相应的云提供商上创建了一个持久磁盘(用于存储各种元数据),请执行以下命令以部署由 MinIO 支持的 Pachyderm
$ pachctl deploy custom \
--persistent-disk <cloud_provider> \
--object-store s3 ${STORAGE_NAME} ${STORAGE_SIZE} \
<bucket_name> <acces_key> <secret_key> <endpoint> \
--static-etcd-volume=${STORAGE_NAME}
请注意,cloud_provider
可以是 google
、azure
或 aws
。您甚至可以在本地部署 Pachyderm。有关本地部署的信息,请参阅 此文档。
几分钟后,Pachyderm 就会启动并运行!然后将端口转发到正在运行的 Pachyderm 集群,以便 pachctl
可以与 Pachyderm 部署通信。
$ pachctl port-forward &
通过以下方式测试通信是否正常工作
$ pachctl version
COMPONENT VERSION
pachctl 1.4.0
pachd 1.4.0
您也可以将其他对象存储与 Pachyderm 配置在一起。有关更多信息,请参阅 此文档。
接下来做什么?
现在您已经准备好了设置,让我们看看您如何使用 Pachyderm 和 MinIO 创建数据分析管道。
将数据添加到 Pachyderm: 每当您将数据添加到 Pachyderm 时,它都会将其备份到 MinIO 存储桶(在 Pachyderm 部署期间提供的存储桶)。但这不仅仅是简单的备份,Pachyderm 使用类似 Git 的系统对数据进行版本控制,从而实现数据版本控制。这样,任何数据操作都会通过提交进行封装。您的团队成员只需参考提交即可复制您的设置。他们甚至可以在需要时恢复到旧状态。
Pachyderm 提供了几种将数据添加到 Pachyderm 存储库的方法。在这里了解更多信息 这里。
创建分析管道: Pachyderm 还允许您创建 DAG 管道,它可以将您的海量数据分割到并行的容器中。每个容器都可以自动访问 /pfs/<repo_name>
的数据。在容器中运行的数据分析代码可以简单地访问 /pfs/<repo_name>
中的数据,并将输出写入 /pfs/out
。同样,Pachyderm 会确保每个容器输出的数据被隔离并最终到达正确的位置。这使得数据分析可扩展且易于管理。
在这里了解更多关于使用 Pachyderm 创建数据分析的信息 这里。
总结
在这篇文章中,我们学习了 MinIO 和 Pachyderm 集成如何帮助您设置可扩展且可靠的数据分析管道。我们看到 Pachyderm 负责将您的数据在数据处理容器之间进行分片,而 MinIO 则作为已处理和未处理数据的云原生、可靠、可扩展的后端。
由于 MinIO 和 Pachyderm 都是云原生应用程序,并且可以在 Kubernetes 等编排工具上运行,因此不需要太多运维工作。
在您使用 MinIO 的过程中,请帮助我们了解您的用例以及我们如何更好地为您服务!填写 我们 MinIO 部署的最佳实践表格(不到一分钟),并有机会在 MinIO 网站上展示您的 MinIO 私有云设计,并将其展示给 MinIO 社区。
您可以访问 Pachyderm 团队的网站:http://slack.pachyderm.io