4

我需要某种在 CoreOS 集群上运行的分布式文件系统。

因此,我想在 CoreOS 节点上运行 HDFS。这可能吗?

我可以看到 2 个选项;

  1. 扩展 CoreOS - 将 HDFS 直接安装到 CoreOS 上 - 不理想,因为它打破了 CoreOS 容器化的整个概念,并且意味着安装许多额外的组件
  2. 以某种方式在 CoreOS 上的 Docker 容器中运行 HDFS 并设置关联

选项 2 似乎是最好的方法,但是,有一些潜在的阻碍;

  • 如何可靠地将物理磁盘暴露给运行 HDFS 的 Docker 容器?
  • 您如何扩展容器关联性?
  • 名称节点等如何工作?

干杯。

4

1 回答 1

6

我将尝试提供两种可能性。我没有尝试过这两种方法,所以它们主要是建议。但可以让你走上正确的道路。

首先,如果您想做 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,并想尽快尝试类似的东西作为概念证明)。

于 2014-10-17T16:27:39.857 回答