CoreOS和HDFS - 在Linux容器/Docker中运行分布式文件系统

4
我需要在CoreOS集群上运行某种分布式文件系统。因此,我想在CoreOS节点上运行HDFS。这可行吗?
我看到有两个选项:
1. 扩展CoreOS - 直接将HDFS安装到CoreOS上 - 这不是理想的选择,因为它会破坏CoreOS容器化的整个概念,并且需要安装许多额外的组件。
2. 在CoreOS上以Docker容器的形式运行HDFS并设置亲和性。
选项2似乎是最好的方法,但是还有一些潜在的阻碍:
- 如何可靠地将物理磁盘暴露给运行HDFS的Docker容器? - 如何扩展容器亲和性? - 这如何与名称节点等配合工作?
谢谢。

我认为 Docker 并不适合运行守护进程。HDFS 是在分布式系统中使用 NameNode 守护进程和 DataNode 守护进程构建的,选项2似乎不太合适。 - Fumu 7
这是一个很好的观点。理论上,您可以将它们一起运行。但实际上,计划是将每个作为单独的容器运行,并在本地集群或vOpenSwitch中通过docker0接口进行通信并将它们链接在一起。 - NightWolf
1个回答

6
我将提供两种可能性。我没有尝试过其中任何一种,所以它们主要是建议,但可以帮助你找到正确的方向。
如果您想使用HDFS并且它需要访问主机上的设备,则第一种方法是在具有所需主机设备访问权限的特权容器中运行HDFS守护程序。有关--privileged--device标志的信息,请参见https://docs.docker.com/reference/run/#runtime-privilege-linux-capabilities-and-lxc-configuration
理论上,您可以将设备传递给处理磁盘访问的容器。然后,您可以使用--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,并希望尝试类似的概念验证)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接