如何使用 Go 从 MapR 集群中读取文件?

我有一个运行在 Kubernetes 集群中的 Go 应用程序,它需要从大型 MapR 集群中读取文件。两个集群是分开的,Kubernetes 集群不允许我们使用 CSI 驱动。我所能做的就是在 Kubernetes pod 内的 Docker 容器中运行用户空间应用程序,然后我maprticket可以连接到 MapR 集群。

我可以使用com.mapr.hadoop maprfs jar编写一个 Java 应用程序,该应用程序能够使用maprticket.


qq_笑_17
浏览 83回答 1
1回答

元芳怎么了

这是一个很好的问题,因为它突出了某些环境施加限制的方式,这些限制违反了外部软件可能持有的假设。仅供参考,MapR 已被 HPE 收购,因此 MapR 集群现在是 HPE Ezmeral Data Fabric 集群。我仍在训练自己这么说。无论如何,语言 X 中的通用程序与 Ezmeral Data Fabric(以前称为 MapR FS 的文件系统)通信的公认方法是挂载文件系统并使用文件 API(如 open/read/write 等)与之通信. 这适用于 Go、Python、C、Julia 或其他任何东西。在 Kubernetes 内部,执行此挂载的常规方法是使用 CSI 驱动程序,该驱动程序有某种操作员在后台工作。那个操作员并不是特别神奇......它只是做需要做的事情。对于 Data Fabric,操作员使用 NFS 或 FUSE 挂载 Data Fabric,然后将 mounts[1] 的一部分绑定到 Pod 的感知中。但是这个问题很酷,因为它排除了所有这些。如果您无法安装操作员,那么其他这些东西只是一纸空文。有三种替代方法可能有效。在 CSI 插件方法标准化之前,NFS 挂载作为原生功能包含在 Kubernetes 中。仍然可以在非常普通的 Kubernetes 集群上使用它,并且可以访问数据集群。可以将容器集成到您的 pod 中,以非特权方式执行必要的 FUSE 挂载。这会有点痛苦,因为您必须将 FUSE 驱动程序与数据结构安装分开并让它工作。这会让您看到 pod 内的数据结构。即使那样,也不能保证 Kubernetes 或操作系统会允许它工作。有一个未发布的 Go 文件系统客户端直接使用低级数据结构 API。我们还没有单独发布。有关这方面的更多信息,人们应该直接联系我(我的联系信息无处不在......发送电子邮件至 ted.dunning hpe.com 或 gmail.com 有效)数据结构允许您通过 S3 访问数据。随着 Ezmeral Data Fabric 7.0 版本的发布,此功能得到了重大改进以提供强大的性能,特别是因为您可以基本上无限制地扩展网关的数量(我听说每个无状态连接到网关的速度为 3-5GB/s,但是YMMV)。这将需要最少的麻烦,并且应该提供足够的性能。您甚至可以像访问 S3 对象一样访问文件。[1] https://unix.stackexchange.com/questions/198590/what-is-a-bind-mount#:~:text=A%20bind%20mount%20is%20an,the%20same%20as%20the% 20原创。
打开App,查看更多内容
随时随地看视频慕课网APP