CoreOS和HDFS – 在Linux Containers / Docker中运行分布式文件系统

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

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

我可以看到2个选项;

  1. 展开CoreOS – 将HDFS直接安装到CoreOS上 – 并不理想,因为它打破了CoreOS集装箱的整个概念,并且意味着要安装许多附加组件
  2. 以某种方式在CoreOS的Docker容器中运行HDFS并设置亲和力

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

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

干杯。

我会尽力提供两种可能性。 我还没有尝试过这些,所以他们主要是build议。 但是可以让你走上正确的道路。

首先,如果您想要执行HDFS并且需要主机上的设备访问权限,则可以在有权访问所需主机设备(磁盘直接)的特权容器中运行HDFS守护进程。 有关--privileged--device标志的信息,请参阅https://docs.docker.com/reference/run/#runtime-privilege-linux-capabilities-and-lxc-configuration

理论上,您可以将设备传递给正在处理磁盘访问的容器。 那么你可以使用像 – --link相互交谈。 NameNode将使用卷(使用-v传递)在主机上存储元数据。 但是,鉴于我对NameNode所做的一些小小的阅读,看起来似乎还没有一个好的解决scheme,但是对于高可用性来说,这是一个单一的失败点。

如果您正在寻找一个集群文件系统而不是HDFS,第二个方法是检查最近在CoreOS 471.1.0中添加到内核中的Ceph FS支持: https ://coreos.com/releases /#471.1.0 。 然后,您可以使用相同的特权容器方法来访问主机磁盘来构buildCeph FS集群。 然后,你可能会有一个“只有数据”的容器,安装了Ceph工具来在Ceph FS集群上安装一个目录,并将其作为一个卷供其他容器使用。

虽然这两个都只是想法,我还没有亲自使用HDFS或Ceph(虽然我正在密切关注Ceph,并希望尽快尝试这样的概念certificate)。

Interesting Posts