Hadoop 科雷奥斯公司;HDFS-在Linux容器/Docker中运行分布式文件系统

Hadoop 科雷奥斯公司;HDFS-在Linux容器/Docker中运行分布式文件系统,hadoop,hdfs,docker,coreos,distributed-filesystem,Hadoop,Hdfs,Docker,Coreos,Distributed Filesystem,我需要在CoreOS集群上运行某种分布式文件系统 因此,我希望在CoreOS节点上运行HDFS。这可能吗 我可以看到两种选择 扩展CoreOS-将HDFS直接安装到CoreOS上-这并不理想,因为它打破了CoreOS集装箱化的整个概念,意味着要安装大量附加组件 以某种方式在CoreOS上的Docker容器中运行HDFS,并设置密切关系 选项2似乎是最好的方法,但是,有一些潜在的阻碍因素 如何将物理磁盘可靠地公开给运行HDFS的Docker容器 如何缩放容器亲缘关系 名称节点等是如何工作的 干

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

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

我可以看到两种选择

  • 扩展CoreOS-将HDFS直接安装到CoreOS上-这并不理想,因为它打破了CoreOS集装箱化的整个概念,意味着要安装大量附加组件
  • 以某种方式在CoreOS上的Docker容器中运行HDFS,并设置密切关系
  • 选项2似乎是最好的方法,但是,有一些潜在的阻碍因素

    • 如何将物理磁盘可靠地公开给运行HDFS的Docker容器
    • 如何缩放容器亲缘关系
    • 名称节点等是如何工作的

    干杯。

    我将尝试提供两种可能性。这两个我都没试过,所以大部分都是建议。但是可以让你走上正确的道路

    第一种方法是,如果要执行HDFS并且需要在主机上进行设备访问,那么可以在有权访问所需主机设备(直接访问磁盘)的特权容器中运行HDFS守护程序。有关
    --privileged
    --device
    标志的信息,请参阅

    理论上,您可以将设备传递给处理磁盘访问的容器。然后,您可以使用类似于
    --link
    的东西相互交谈。NameNode将使用卷(通过
    -v
    传递)在主机上存储元数据。尽管如此,考虑到我对NameNode所做的一点阅读,似乎还没有一个好的高可用性解决方案,这是一个单点故障

    如果您正在寻找集群文件系统,而不是HDFS,那么第二个需要探索的选项是查看最近添加到CoreOS 471.1.0内核中的Ceph FS支持:。然后,您可能可以使用特权容器的相同方法访问主机磁盘以构建Ceph FS群集。然后,您可能有一个“仅数据”容器,其中安装了Ceph tools以装载Ceph FS群集上的目录,并将其作为卷公开给其他容器使用


    虽然这两个都只是想法,我个人还没有使用HDFS或Ceph(尽管我一直关注Ceph,并希望尽快尝试类似的概念验证)。

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