利用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之类的云提供商上部署Kubernetes 。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/。在容器中运行的数据分析代码可以轻松访问处的数据并在处/pfs/写入输出/pfs/out。Pachyderm再次注意每个容器输出的数据是隔离的,并在适当的地方结束。这使得数据分析可扩展且易于管理。
在此处阅读有关使用Pachyderm创建数据分析的更多信息。
概要
在本文中,我们了解了MinIO和Pachyderm的集成如何帮助您建立可扩展且可靠的数据分析管道。我们看到,Pachyderm负责跨数据处理容器存储数据,而MinIO则充当已处理和未处理数据的云原生,可靠,可扩展后端。
由于MinIO和Pachyderm都是云本地应用程序,并且可以在Kubernetes之类的编排工具上运行,因此无需太多操作。