我将尝试提供两种可能性。我没有尝试过这两种方法,所以它们主要是建议。但可以让你走上正确的道路。
首先,如果您想做 HDFS 并且它需要主机上的设备访问权限,则可以在有权访问所需主机设备(直接磁盘)的特权容器中运行 HDFS 守护进程。有关和标志的信息,请参阅https://docs.docker.com/reference/run/#runtime-privilege-linux-capabilities-and-lxc-configuration 。--privileged
--device
理论上,您可以将设备传递给处理磁盘访问的容器。然后你可以使用类似的东西--link
互相交谈。NameNode 将使用卷(使用 传递)将元数据存储在主机上-v
。但是,鉴于我对 NameNode 所做的阅读很少,似乎无论如何都不会有一个好的解决方案来实现高可用性,而且这是一个单点故障。
如果您正在寻找集群文件系统而不是 HDFS,则要探索的第二个选项是查看最近添加到 CoreOS 471.1.0 内核中的 Ceph FS 支持:https ://coreos.com/releases /#471.1.0。然后,您也许可以使用特权容器的相同方法来访问主机磁盘以构建 Ceph FS 集群。然后,您可能有一个“仅数据”容器,它安装了 Ceph 工具以在 Ceph FS 集群上挂载目录,并将其公开为卷供其他容器使用。
尽管这两个都只是想法,而且我个人没有使用过 HDFS 或 Ceph(尽管我一直在关注 Ceph,并想尽快尝试类似的东西作为概念证明)。