使用Docker for HPC和Sun Grid Engine

时间:2015-07-21 02:28:24

标签: docker sungridengine

我想知道是否可以使用Docker创建虚拟集群,以便我可以运行使用SGE集群管理为HPC集群设计的脚本。这些是非常大/复杂的工作流程,所以它不仅仅是我可以重写的东西,比如TORQUE / PBS。从理论上讲,我应该能够让Docker认为有多个节点,就像我的内部HPC集群一样。如果有人能救我痛苦告诉我无法做到,我将非常感激。

警告:我不是群集管理员。我更像是最终用户。我在Mac OSX 10.9.5上运行

Client version: 1.7.0
Client API version: 1.19 Go version (client): go1.4.2 Git commit
(client): 0baf609 OS/Arch (client): darwin/amd64 Server version: 1.7.0
 Server API version: 1.19 Go version (server): go1.4.2 Git commit
 (server): 0baf609 OS/Arch (server): linux/amd64 bash-3.2$ boot2docker
 version Boot2Docker-cli version: v1.7.0 Git commit: 7d89508

我一直在使用图片的衍生物(Dockerfilehere)。我的步骤非常简单,请按照website上的说明进行操作:

  1. 创建图片
  2. docker-machine create -d virtualbox local
    
    1. 将其设为活动图像
    2. eval "$(docker-machine env local)"
      
      1. 获取群组图片
      2. docker run --rm swarm create
        
        1. 创建swarm master
        2. docker-machine create \
              -d virtualbox \
              --swarm \
              --swarm-master \
              --swarm-discovery token://$TOKEN \
              swarm-master
          
          1. 使用令牌创建群集节点
          2. docker-machine create \
            -d virtualbox \
            --swarm \
            --swarm-discovery token://$TOKEN \
            swarm-agent-00
            
            1. 添加另一个节点
            2.  docker-machine create \
              -d virtualbox \
              --swarm \
              --swarm-discovery token://$TOKEN \
              swarm-agent-01
              

              现在这里是疯狂的部分。当我尝试使用此命令来源图像时:eval "$(docker-machine env --swarm swarm-master)"我得到了这个愚蠢的事情Cannot connect to the Docker daemon. Is 'docker -d' running on this host?。然后我尝试eval $(docker-machine env swarm-master)并且它有效,但我不能100%确定它是正确的做法:

              NAME             ACTIVE   DRIVER       STATE     URL                         SWARM 
              local                     virtualbox   Running   tcp://192.168.99.105:2376   
              swarm-agent-00            virtualbox   Running   tcp://192.168.99.107:2376   swarm-master
              swarm-agent-01            virtualbox   Running   tcp://192.168.99.108:2376   swarm-master
              swarm-master     *        virtualbox   Running   tcp://192.168.99.106:2376   swarm-master (master)
              
              1. 此时,我使用这个yaml文件构建我的多容器应用程序:
              2. bior:
                 image: stevenhart/bior_annotate
                 command: login -f sgeadmin
                 volumes:
                  - .:/Data
                 links: 
                  - sge
                
                sge:
                 build: .
                 ports:
                  - "6444"
                  - "6445"
                  - "6446"
                

                使用docker-compose up

                1. 然后最终打开新图片
                2.   

                  docker run -it --rm dockersge_sge login -f sgeadmin

                  但这是问题

                  当我运行qhost时,我得到以下内容:

                      HOSTNAME                ARCH         NCPU NSOC NCOR NTHR  LOAD  MEMTOT  MEMUSE  SWAPTO  SWAPUS
                  ----------------------------------------------------------------------------------------------
                  global                  -               -    -    -    -     -       -       -       -       -
                  6bf6f6fda409            lx-amd64        1    1    1    1  0.01  996.2M   96.2M    1.1G     0.0
                  

                  它不应该认为有多个CPU,即我的每个群集节点吗?

1 个答案:

答案 0 :(得分:3)

我假设您在docker中运行qhost。

swarm的东西是,它没有将所有主机组合成一台大型机器(我曾经这么认为)。

相反,例如,你有5台核心机器,然后swarm将选择一台尽可能少的码头工人的机器并在该机器上运行docker。

因此,swarm是将终结者传播到集群中的控制器,而不是将主机组合成一个。

希望它有所帮助!如果您还有其他问题,请询问:)

<强>更新

我不确定它是否适合你,但如果你不能用swarm得到它,我会推荐kubernetes。我在我的Raspberry Pis上使用它。它比swarm更酷,更成熟,有自动修复等功能。

我不知道,但肯定有一种方法可以将docker与hadoop集成......