Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Вычислительный кластер на базе Убуту.  (Прочитано 9152 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн evg89

  • Автор темы
  • Активист
  • *
  • Сообщений: 468
  • СПО'шник
    • Просмотр профиля
Имеем локальная сеть порядка 10 компьютеров под управлением ОС Ubuntu. Требуется организовать вычислительный кластер.
Подскажите, пожалуйста, какие решения существуют для этого, кто что пробовал, может существуют готовые сборки?
Задумка такая: один из компов будет сервером, остальные клиенты, запускаем на сервере задачу с объемными вычислениями - он раскидывает ее на клиентов, т.е. использует их ресурсы. Засекаем время поиска решений, анализируем и т.п.
ЗЫ. Извиняюсь если выразился не ясно - задача не моя, попросили помочь, но никогда не задавался таким вопросом.
РАБОТА: win server 2008 r2, ubuntu server 12.04, freebsd 8.3 - сервера; edubuntu 10.04, win 7 pro - обслуживаемые ПК.
ДОМ: ubuntu 12.04 - ПК; windows 7 starter - нетбук;  android 2.2 - коммуникатор.

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Вычислительный кластер на базе Убуту.
« Ответ #1 : 22 Декабря 2011, 13:40:21 »
я вот тут как то читал, но руки так и не дошли попробоват http://cluster.linux-ekb.info/
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Вычислительный кластер на базе Убуту.
« Ответ #2 : 22 Декабря 2011, 14:44:12 »
sge, он же Sun Grid Engine. Есть в репах. Работает. Вот небольшое руководство http://helms-deep.cable.nu/~rwh/blog/?p=159
« Последнее редактирование: 22 Декабря 2011, 14:45:53 от Karl500 »

Оффлайн evg89

  • Автор темы
  • Активист
  • *
  • Сообщений: 468
  • СПО'шник
    • Просмотр профиля
Re: Вычислительный кластер на базе Убуту.
« Ответ #3 : 23 Декабря 2011, 08:17:09 »
я вот тут как то читал, но руки так и не дошли попробоват http://cluster.linux-ekb.info/
пробовали, что то там с ключами не выходит.
sge, он же Sun Grid Engine. Есть в репах. Работает. Вот небольшое руководство http://helms-deep.cable.nu/~rwh/blog/?p=159
будем пробовать, спасибо. Вы разворачивали этот кластер?
РАБОТА: win server 2008 r2, ubuntu server 12.04, freebsd 8.3 - сервера; edubuntu 10.04, win 7 pro - обслуживаемые ПК.
ДОМ: ubuntu 12.04 - ПК; windows 7 starter - нетбук;  android 2.2 - коммуникатор.

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Вычислительный кластер на базе Убуту.
« Ответ #4 : 23 Декабря 2011, 09:48:43 »
Да, там все несложно (как ни странно). Если что - спрашивайте. У нас он развернут на 6 счетных серверах с более чем 100 ядрами. Есть возможность запускать как пакетные задачи, так и интерактивные (в том числе и с использованием X-терминала).

Организация в sge предполагается такая: есть мастер-хост (управляющий), есть счетные хосты (на которых идет счет), есть запускающие хосты (с которых задачи запускаются). Эти множества могут пересекаться.

Оффлайн evg89

  • Автор темы
  • Активист
  • *
  • Сообщений: 468
  • СПО'шник
    • Просмотр профиля
Re: Вычислительный кластер на базе Убуту.
« Ответ #5 : 23 Декабря 2011, 11:32:42 »
Возникли такие вопросы:
1. На нем можно запустить задачу си++ из консоли?
2. У вас есть какая-нибудь система для тестирования производительности кластера?

Заранее спасибо!
РАБОТА: win server 2008 r2, ubuntu server 12.04, freebsd 8.3 - сервера; edubuntu 10.04, win 7 pro - обслуживаемые ПК.
ДОМ: ubuntu 12.04 - ПК; windows 7 starter - нетбук;  android 2.2 - коммуникатор.

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Вычислительный кластер на базе Убуту.
« Ответ #6 : 23 Декабря 2011, 12:15:32 »
1. Запуск задач происходит так:

а) интерактивная задача (которой необходим терминал (X или нет - неважно)

на запускающем хосте даете в терминале команду qlogin (у Вас должен быть настроен вход на все счетные сервера по ssh без пароля по ключу; в случае Х-терминала туннелирование ssh должно быть настроено по умолчанию; крайне желательно настроить еще и "сохранение" хеша хоста в /dev/null и отсутствие его проверки - если нужно, дам конкретные строки настроек). После чего Вы попадаете на один из счетных хостов и там запускаете свою задачу, как обычно)

б) пакетная задача

на запускающем хосте готовится скрипт запуска (например, myjob.sh) примерно такого содержания:
#!/bin/bash
### Request Bourne shell as shell for job
#$ -S /bin/bash
### Use current directory as working directory
#$ -cwd
### Send email to user when:
### b - job begins
### a - job aborts
### s - job suspends
### e - job ends
#$ -m base
### Name the job:
#$ -N test
### Вместо трех следующих строк поместите далее строки, необходимые для запуска задачи
echo “Running environment:”
env
echo “=============================”
###end of script
Здесь:
строки, начинающиеся с ### - это комментарий
строка #$ -S /bin/bash задает используемый шелл
строка #$ -cwd задает текущую директорию
строка #$ -m base задает события, о которых пользователь получит письма
строка #$ -N test задает имя задания (смените на подходящее для Вашего задания)
(в качестве теста можно использовать вышеприведенный образец без изменений).

И запускаете свою задачу командой

qsub myjob.sh
В ответ Вы получите id (номер) задачи.
После запуска задачи Вы можете выйти с хоста.
По окончании задания в текущей директории должны появиться файлы <имя_задания>.eXXX (ошибки) и <имя_задания>.oXXX (вывод), где XXX - id задачи.

2. Не очень понял, что Вы имеете в виду. sge дает возможность равномерно загружать имеющиеся ресурсы. Если у Вас есть задачи, которые могут в принципе быть распараллелены и выполняться на разных машинах одновременно, взаимодействуя при этом, то Вам нужно будет поставить еще и MPI - например, http://www.open-mpi.org/faq/?category=building#build-rte-sge (то, что такие задачи должны быть соответствующим образом подготовлены говорить не буду: если Вы этого не знаете, то MPI Вам и не нужен).

Пользователь решил продолжить мысль 23 Декабря 2011, 12:18:02:
Вот еще неплохая ссылка по OpenMPI и SGE: https://ac.seas.harvard.edu/display/USERDOCS/How+To+Run+Parallel+MPI+Jobs+Using+SGE
« Последнее редактирование: 23 Декабря 2011, 12:18:02 от Karl500 »

Оффлайн ChaosWarrior

  • Активист
  • *
  • Сообщений: 461
  • d(-_-)b
    • Просмотр профиля
Re: Вычислительный кластер на базе Убуту.
« Ответ #7 : 23 Декабря 2011, 13:00:35 »
Задумка такая: один из компов будет сервером, остальные клиенты, запускаем на сервере задачу с объемными вычислениями - он раскидывает ее

Рискну предположить, вам это не удастся.

Вы представляете себе, что программа выполняется на уберкомпьютере, притом нечто автоматически дробит её на части и скармливает каждому из девяти, потом также волшебно собирает в кучу. Типа того, что сейчас назвается облачными вычислениями.Вот уж хренушки. Под то, что вам тут предложили, программу нужно будет радикально переписать. Кластер всего лишь позволит не запускать каждую задачу и переносить в одно место результаты на девяти машинах руками.

Чтобы поднять на кластере Ubuntu, которая будет работать, так, как вы хотите - с размыванием вычислительных ресурсов по сети из десяти машин, нужен патч ядра (о да, компиляйте ядро, красноглазики, ваше любимое занятие) и ещё много всего того, о чём я понятия не имею.
Но уж точно пакетами из репозитория не обойдёшься.
Открытый код и его подержка — это лучшая реклама Windows.

Оффлайн evg89

  • Автор темы
  • Активист
  • *
  • Сообщений: 468
  • СПО'шник
    • Просмотр профиля
Re: Вычислительный кластер на базе Убуту.
« Ответ #8 : 23 Декабря 2011, 13:42:00 »
Karl500, а есть руководство на русском языке?
Сегодня пробовали, но видно у нас проблемы с английским языком  :-\
При
/etc/init.d/gridengine-exec start
получаем:
error: communication error for "serverK/execd/1" running on port 6445: "can't bind socket"
error: commlib error: can't bind socket (no additional information available)
не подскажите в чем может быть дело?
Заранее спасибо!
РАБОТА: win server 2008 r2, ubuntu server 12.04, freebsd 8.3 - сервера; edubuntu 10.04, win 7 pro - обслуживаемые ПК.
ДОМ: ubuntu 12.04 - ПК; windows 7 starter - нетбук;  android 2.2 - коммуникатор.

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Вычислительный кластер на базе Убуту.
« Ответ #9 : 23 Декабря 2011, 13:56:00 »
Это известная проблема, да. Сделайте так:
- в файле /etc/hosts не должно быть записи localhost.localdomain, т.е. файл должен иметь вид:
127.0.0.1 localhost
127.0.1.1 hostname.domain.tld hostname

- на всех хостах (мастере, счетных и запускающих) создайте файл /var/lib/gridengine/default/common/host_aliases (здесь default - имя, заданное при установке sge), в котором будут перечислены все хосты: (<короткое имя хоста>  <FQDN хоста>) :

hostname hostname.domain.tld
...

- после этого, начиная с мастер-хоста "убейте" процессы grid* (именно убейте - они не остановятся) и запустите заново


Пользователь решил продолжить мысль 23 Декабря 2011, 13:59:12:
нужен патч ядра
"Скрипач не нужен, дядя Вова" (с)
« Последнее редактирование: 23 Декабря 2011, 13:59:12 от Karl500 »

Оффлайн Skrip

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вычислительный кластер на базе Убуту.
« Ответ #10 : 24 Декабря 2011, 07:02:12 »
1. Запуск задач происходит так:

а) интерактивная задача (которой необходим терминал (X или нет - неважно)

на запускающем хосте даете в терминале команду qlogin (у Вас должен быть настроен вход на все счетные сервера по ssh без пароля по ключу; в случае Х-терминала туннелирование ssh должно быть настроено по умолчанию; крайне желательно настроить еще и "сохранение" хеша хоста в /dev/null и отсутствие его проверки - если нужно, дам конкретные строки настроек). После чего Вы попадаете на один из счетных хостов и там запускаете свою задачу, как обычно)

Если не сложно можно настройки.

И еще вопрос, домена у нас нет в этом может быть проблема? Мы просто оставляли domain

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Вычислительный кластер на базе Убуту.
« Ответ #11 : 24 Декабря 2011, 11:19:57 »
На запускающих хостах в файле /etc/ssh/ssh_config для каждого счетного сервера вставьте такой блок (в начале файла, до блока "по умолчанию"):
Host cnt01
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  ForwardX11 yes
  ForwardX11Trusted yes
Здесь cnt01 - имя счетного хоста
"UserKnownHostsFile /dev/null" задает место для хранения known_hosts (т.е. "не сохранять")
"StrictHostKeyChecking no" отменяет проверку хостов
"ForwardX11 yes" и "ForwardX11Trusted yes"  задает автотуннелирование X11.

Проверка хостов не нужна потому, что каждое соединение со счетным хостом происходит по новому порту, т.е. при этом файл known_hosts не имеет смысла, и просто будет расти по объему.

Домен - не думаю, чтобы это было проблемой.

Оффлайн Skrip

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вычислительный кластер на базе Убуту.
« Ответ #12 : 24 Декабря 2011, 11:58:53 »
Спасибо большое в понедельник будем пробовать снова может что получиться.  :-\

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Вычислительный кластер на базе Убуту.
« Ответ #13 : 24 Декабря 2011, 12:11:59 »
Если у Вас на хостах нормально (без ошибок) запускаются службы grid* , то все остальное достаточно просто.
Нужно только правильно настроить сам кластер (на мастер-хосте, например при помощи qmon).

Оффлайн Skrip

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вычислительный кластер на базе Убуту.
« Ответ #14 : 26 Декабря 2011, 13:26:59 »
 :) У нас это получилось ))))
Сейчасбудем пробовать запустить распаралеленную задачу, осталось воткнуть OpenMPI
Если чтонитьподскажете по этому поводу буду премного благодарен
« Последнее редактирование: 26 Декабря 2011, 13:34:33 от Skrip »

 

Страница сгенерирована за 0.05 секунд. Запросов: 25.