#python #cassandra #cluster-computing #distributed-computing
#python #cassandra #кластерные вычисления #распределенные вычисления
Вопрос:
Предположим, что кто-то настроил кластер cassandra. У вас есть база данных объемом 10 [ТБ], которая равномерно распределена между 10 узлами, все работает гладко и т.д.
Предположим, что в вашем распоряжении есть 100 компьютеров, каждый из которых пытается прочитать (разные) данные из кластера cassandra. кроме того, у вас есть много заданий, которые постоянно нужно запускать, каждое задание в разное время (и, очевидно, каждое задание нужно запускать на разных машинах).
Как вы управляете всеми этими задачами / jobs? как вы распределяете задачи между машинами? как вы отслеживаете задания / машины в процессе?
Существуют ли какие-либо инструменты с открытым исходным кодом (предпочтительно с Python
клиентом), которые помогают выполнять это в среде Linux?
Ответ №1:
Что вам нужно, так это платформа Grid / HPC для управления вашей распределенной инфраструктурой и выполнения заданий.
В unix / Linux есть две системы, которые могут быть вам полезны. Портативные пакетные системы (PBS) или Condor
Как вы управляете всеми этими задачами / jobs?
И у Condor, и у PBS есть главная потребность действовать как приемник каждого задания / задачи, для каждого задания / задачи вы можете связать уровень приоритета и дискриминаторы. Администратор кластера устанавливает правила на основе этих дискриминаторов для планирования заданий.
как вы распределяете задачи между машинами?
Condor или PBS сделают это за вас, вам нужно только отправить задание на главный узел и указать приоритет, входные и выходные данные и т.д.
Вы можете периодически проверять, когда задание завершено, подписаться на уведомление с помощью различных механизмов или сделать что-то вроде job.wait()
блокировки до его завершения.
как вы отслеживаете задания / машины в процессе?
И PBS, и Condor имеют top
одинаковые команды для перечисления заданий, которые находятся в очереди ожидания, или запущены, или отменены. У них также есть утилиты для остановки или отмены задания, если процесс допускает моментальные снимки.
Для большого кластера мой совет — попробовать Condor. Он существовал целую вечность для решения проблем, точно таких же, как у вас. Здесь есть несколько примеров для Condor Python
Другими более свежими решениями, которые следует рассмотреть, являются:
- Celery распределенная очередь задач для Python.
- DiscoProject платформа распределенных вычислений, основанная на парадигме MapReduce.
Комментарии:
1. идеальный ответ — именно то, что я искал.
condor
Действительно ли это правильный путь? насколько сложно установить его / поддерживать на нескольких компьютерах с Ubuntu? (Я знаю, что после установки отправка задания становится простой). как мы справляемся с тем фактом, что (скажем) мы отправляем задание, задание выполняется, а затем машина, на которой оно выполняется, умирает? (в таком случае мы захотим повторно отправить задание на другую машину) кроме того, можно ли сравнить, например, ‘celery’? кстати, я не ограничиваюсь только решениями на основеpython
, поэтому, если у вас есть другие идеи, был бы рад, если бы вы перечислили их. Спасибо.2. О celery я не могу много сказать, я использую его только для тестирования игрушек, он классный и очень ориентирован на Python. О Condor … Я использовал его 4 года назад, и я помню, что он мог обрабатывать ситуацию сбоя узла, а задания переназначались см. ( cs.wisc.edu/condor/manual/v7.2 /… ) . Condor не сложен в установке и использовании, но требует навыков администрирования среднего уровня в unix / linux.
3. Спасибо. только один быстрый вопрос, учитывая ваш опыт:
condor
требуется ли SSH без пароля между узлами? или это не имеет значения?4. Я уверен, что вы можете настроить его с ним или без него.