2014-10-17 71 views
4

我需要某种在CoreOS集群上运行的分布式文件系统。CoreOS和HDFS - 在Linux Containers/Docker中运行分布式文件系统

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

我可以看到2个选项;

  1. 展开CoreOS - 安装HDFS直接到CoreOS - 并不理想,因为它打破CoreOS的集装箱化的整体概念和将意味着安装了大量附加成分
  2. 不知怎的,在CoreOS泊坞窗容器中运行HDFS和设置亲和力

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

  • 如何可靠地将物理磁盘暴露给运行HDFS的Docker容器?
  • 您如何衡量容器的亲和力?
  • 这是如何工作的名称节点等?

干杯。

+0

我不认为Docker是适合运行守护程序的地方。 HDFS由分布式系统中的NameNode守护程序和DataNode守护程序构建,选项2似乎不合适。 – 2014-10-17 05:10:41

+0

这是一个很好的观点。理论上你可以一起运行它们。但实际上这个计划是将每个容器作为单独的容器来运行,并且当它们作为集群在本地运行或vOpenSwitch并将它们链接在一起时,通过'docker0'接口进行通信。 – NightWolf 2014-10-17 06:27:26

回答

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:https://coreos.com/releases/#471.1.0中增加的最新Ceph FS支持。然后,您可以使用特权容器的相同方法访问主机磁盘以构建Ceph FS集群。然后,您可能会安装一个“仅数据”容器,该容器安装了Ceph工具以在Ceph FS集群上安装一个目录,并将其公开为其他容器使用的卷。

虽然这些都只是想法,我没有亲自使用HDFS或Ceph(尽管我正在关注Ceph并希望尽快尝试类似这样的概念验证)。