Постановка заданий в очередь / управление рабочей нагрузкой

#r #job-scheduling #queuing #workload

#r #планирование заданий #постановка в очередь #рабочая нагрузка

Вопрос:

Я потратил некоторое время на поиск в Google пакета для организации очередей / балансировки нагрузки для R.

Чего я пытаюсь достичь:

  • выполнение нескольких независимых друг от друга функций R с удаленных интерфейсов
  • использование двухъядерных серверов в качестве серверной части R

Зная, что:

  • каждая функция обычно обрабатывается за 10-30 секунд
  • в среднем каждые 5 минут (но это может происходить одновременно) набор из 8-15 функций, подлежащих выполнению, отправляется на серверную часть (в очереди на обработку: первый вход — первый выход). В среднем 5 минут, одновременно может быть отправлено несколько наборов
  • экземпляр 2×2 R уже был бы запущен с загруженными необходимыми пакетами, они всегда одни и те же, поэтому нет необходимости постоянно их перезагружать
  • вводимый объем передаваемых данных очень мал: не более 50 КБ

Здесь нет темы распараллеливания кода (snow, snowfall foreach, condor и другие традиционные кластерные решения)

Знаете ли вы хороший пакет / инструмент, разработанный для R, который мог бы помочь?

Большое спасибо!

Комментарии:

1. Я не знаю ни о чем существующем. В качестве отправной точки я бы посмотрел на что-то вроде Redis пакета doRedis. Resque — популярный менеджер очередей ruby, построенный на Redis ( github.com/defunkt/resque ).

2. Привет, Ноа, спасибо за твой ответ. Насколько я понял, redis — это база данных, доступ к которой может иметь другой клиент, кроме R, но в чем преимущество по сравнению с MySQL с непараллельными вычислениями?

Ответ №1:

Это звучит как разумный контекст для использования RApache , который может создавать экземпляры нескольких экземпляров R и необходимых пакетов.