为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
qq_笑_17 2022-10-31 15:49:42
我有一个运行在 Kubernetes 集群中的 Go 应用程序,它需要从大型 MapR 集群中读取文件。两个集群是分开的,Kubernetes 集群不允许我们使用 CSI 驱动。我所能做的就是在 Kubernetes pod 内的 Docker 容器中运行用户空间应用程序,然后我maprticket可以连接到 MapR 集群。我可以使用com.mapr.hadoop maprfs jar编写一个 Java 应用程序,该应用程序能够使用maprticket.
查看完整描述

1 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

这是一个很好的问题,因为它突出了某些环境施加限制的方式,这些限制违反了外部软件可能持有的假设。

仅供参考,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 的感知中。

但是这个问题很酷,因为它排除了所有这些。如果您无法安装操作员,那么其他这些东西只是一纸空文。

有三种替代方法可能有效。

  1. 在 CSI 插件方法标准化之前,NFS 挂载作为原生功能包含在 Kubernetes 中。仍然可以在非常普通的 Kubernetes 集群上使用它,并且可以访问数据集群。

  2. 可以将容器集成到您的 pod 中,以非特权方式执行必要的 FUSE 挂载。这会有点痛苦,因为您必须将 FUSE 驱动程序与数据结构安装分开并让它工作。这会让您看到 pod 内的数据结构。即使那样,也不能保证 Kubernetes 或操作系统会允许它工作。

  3. 有一个未发布的 Go 文件系统客户端直接使用低级数据结构 API。我们还没有单独发布。有关这方面的更多信息,人们应该直接联系我(我的联系信息无处不在......发送电子邮件至 ted.dunning hpe.com 或 gmail.com 有效)

  4. 数据结构允许您通过 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原创


查看完整回答
反对 回复 2022-10-31
  • 1 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信