我需要在coreos集群上运行某种分布式文件系统。因此,我想在coreos节点上运行hdfs。这可能吗?我可以看到2个选项;扩展coreos—直接在coreos上安装hdfs—这并不理想,因为它打破了coreos的整个集装箱化概念,意味着要安装许多附加组件在coreos上的docker容器中运行hdfs并设置关联方案2似乎是最好的办法,但也有一些潜在的阻碍因素;如何将物理磁盘可靠地公开给运行hdfs的docker容器?如何缩放容器关联?这是如何工作的名称节点等?干杯。
uemypmqf1#
我会尽量提供两种可能性。这两个我都没试过,所以大部分都是建议。但能让你走上正确的道路。首先,如果您想执行hdfs并且它需要在主机上访问设备,那么可以在有权访问所需主机设备(直接访问磁盘)的特权容器中运行hdfs守护程序。看到了吗https://docs.docker.com/reference/run/#runtime-特权linux功能和lxc配置,以获取 --privileged 以及 --device 旗帜。理论上,您可以将设备传递给处理磁盘访问的容器。然后你可以用 --link 互相交谈。namenode将使用卷(通过 -v ). 不过,考虑到我对namenode所做的一点了解,似乎还没有一个好的高可用性解决方案,这是一个单一的失败点。如果您正在寻找一个集群文件系统而不是hdfs,那么第二个要探索的选项是查看coreos471.1.0内核中最近添加的ceph fs支持:https://coreos.com/releases/#471.1.0. 然后,您就可以使用特权容器的相同方法访问主机磁盘来构建ceph fs集群。然后,您可能有一个“仅数据”容器,该容器安装了ceph工具以在ceph fs集群上挂载目录,并将其作为卷公开给其他容器使用。虽然这两个都只是想法,我还没有使用hdfs或ceph个人(虽然我一直在关注ceph,并希望尽快尝试这样的东西作为概念的证明)。
--privileged
--device
--link
-v
1条答案
按热度按时间uemypmqf1#
我会尽量提供两种可能性。这两个我都没试过,所以大部分都是建议。但能让你走上正确的道路。
首先,如果您想执行hdfs并且它需要在主机上访问设备,那么可以在有权访问所需主机设备(直接访问磁盘)的特权容器中运行hdfs守护程序。看到了吗https://docs.docker.com/reference/run/#runtime-特权linux功能和lxc配置,以获取
--privileged
以及--device
旗帜。理论上,您可以将设备传递给处理磁盘访问的容器。然后你可以用
--link
互相交谈。namenode将使用卷(通过-v
). 不过,考虑到我对namenode所做的一点了解,似乎还没有一个好的高可用性解决方案,这是一个单一的失败点。如果您正在寻找一个集群文件系统而不是hdfs,那么第二个要探索的选项是查看coreos471.1.0内核中最近添加的ceph fs支持:https://coreos.com/releases/#471.1.0. 然后,您就可以使用特权容器的相同方法访问主机磁盘来构建ceph fs集群。然后,您可能有一个“仅数据”容器,该容器安装了ceph工具以在ceph fs集群上挂载目录,并将其作为卷公开给其他容器使用。
虽然这两个都只是想法,我还没有使用hdfs或ceph个人(虽然我一直在关注ceph,并希望尽快尝试这样的东西作为概念的证明)。