Использование Docker для HPC с Sun Grid Engine

Мне интересно, возможно ли создать виртуальный кластер с Docker, чтобы я мог запускать сценарии, которые были разработаны для кластеров HPC, используя управление кластером SGE. Это довольно большие / сложные рабочие процессы, поэтому я могу переписать их не просто, скажем, для TORQUE/PBS. Теоретически я должен быть в состоянии обмануть Докера, думая, что есть много узлов, точно так же как мой внутренний кластер 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

Я использовал производную от изображения (Dockerfile здесь). Мои шаги довольно просты и следуют инструкциям на сайте:

  1. Создать изображение
docker-machine create -d virtualbox local
  1. Сделайте это активным изображением
eval "$(docker-machine env local)"
  1. Получить рой изображение
docker run --rm swarm create
  1. Создать мастера роя
docker-machine create \
    -d virtualbox \
    --swarm \
    --swarm-master \
    --swarm-discovery token://$TOKEN \
    swarm-master
  1. Используйте токен для создания узлов роя
docker-machine create \
-d virtualbox \
--swarm \
--swarm-discovery token://$TOKEN \
swarm-agent-00
  1. Добавить другой узел
 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:
bior:
 image: stevenhart/bior_annotate
 command: login -f sgeadmin
 volumes:
  - .:/Data
 links: 
  - sge

sge:
 build: .
 ports:
  - "6444"
  - "6445"
  - "6446"

с помощью docker-compose up

  1. И, наконец, открыть новый образ

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

Разве он не должен думать, что есть несколько процессоров, то есть каждый из моих узлов роя?

1 ответ

Решение

Я предполагаю, что вы запускаете qhost в вашем докере.

Дело в рое в том, что он не объединяет все хосты в одну большую машину (раньше я так думал).

Вместо этого у вас есть, например, 5 одноядерных машин, затем Swarm выберет машину с как можно меньшим количеством докеров и запустит докер на этой машине.

Итак, рой - это контроллер, который распределяет докеры в кластере, а не объединяет хосты в один.

Надеюсь, поможет! Если у вас есть дополнительные вопросы, пожалуйста, задавайте:)

ОБНОВИТЬ

Я не уверен, подходит ли вам это, но если вы не получите его с роем, я бы порекомендовал kubernetes. Я использую это на моем Малиновом Писе. Он очень крутой и более зрелый, чем рой, с такими вещами, как автоисцеление и так далее.

Я не знаю, но наверняка есть способ интегрировать докер с Hadoop тоже...

Другие вопросы по тегам