Mesos убивает mpiexec без возможности запустить какую-либо полезную работу

коллеги! Я писал собственный фреймворк для Apache Mesos 0.22.1 на чистом Python (используя их API), потому что у нас очень специфические требования, которые не обрабатываются другими фреймворками (такими как Marathon, например).

Мы собираемся запустить несколько заданий MPI из Mesos (все они тоже написаны на Python (с использованием mpi4py))

Но меня остановили в самом начале, потому что кажется, что мастер Mesos убивает mpiexec сразу после его запуска. mpiexec только пишет "убийство всех заданий..." и потом умирает.

Вот мы собираемся запустить несколько заданий MPI из Mesos (все они тоже написаны на Python (с использованием mpi4py))

Взгляните на код моего фреймворка (он довольно простой и имеет гораздо больше общего с этим: https://github.com/apache/mesos/tree/master/mpi ):

  if cpus < CPUS or mem < MEM:
    print "Declining offer due to too few resources"
    driver.declineOffer(offer.id)
  else:
    tid = self.mpdsLaunched
    self.mpdsLaunched += 1

    print "Accepting offer on %s to start mpd %d" % (offer.hostname, tid)

    task = mesos_pb2.TaskInfo()
    task.task_id.value = str(tid)
    task.slave_id.value = offer.slave_id.value
    task.name = "task %d " % tid

    cpus = task.resources.add()
    cpus.name = "cpus"
    cpus.type = mesos_pb2.Value.SCALAR
    cpus.scalar.value = CPUS

    mem = task.resources.add()
    mem.name = "mem"
    mem.type = mesos_pb2.Value.SCALAR
    mem.scalar.value = MEM

    uri = task.command.uris.add()
    uri.value= parser_config.get_option("PATH_TO_DEPLOY_SCRIPT")

    task.command.value = "mpiexec -n 3 test_mpi.py -u" 
    tasks.append(task)
    print "Replying to offer: launching mpd %d on host %s" % (tid, offer.hostname)
    driver.launchTasks(offer.id, tasks)

Видите ли, я пытаюсь запустить mpiexec напрямую из Mesos, и это не дает никакого результата. Кстати, чтобы бороться с проблемой, я пробовал:

    1. To launch some bash script from Mesos, which will then start mpiexec ( no result )
    2. To start 
       nohup mpiexec -n 3 test_mpi.py -u &
    3. To put some delays after mpiexec run:
       mpiexec -n 3 test_mpi.py -u && sleep 30 && echo "Yeah!"

Но во всех этих случаях результат одинаков: mpiexec убивает mesos master с безумным упорством.

Может у кого была похожая проблема? Благодарю вас!


person Vast Academician    schedule 20.08.2015    source источник


Ответы (1)


Ух ты! :-) Ребят, никто не поверит, но когда я поменял mpiexec на mpirun, все работает отлично! т.е. теперь моя строка такая:

mpiexec -n 3 test_mpi.py -u &

Мне интересно - в чем же разница, в конце концов?

person Vast Academician    schedule 20.08.2015