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

Nig*_*olf 4 hadoop hdfs distributed-filesystem docker coreos

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

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

我可以看到两个选项;

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

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

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

干杯.

And*_*inn 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,并希望尽快尝试这样的事情作为概念证明).