Подтвердить что ты не робот

Является ли Hadoop правильным для моего моделирования?

написали стохастическое моделирование в Java, которое загружает данные из нескольких CSV файлов на диске (всего около 100 МБ) и записывает результаты в другой выходной файл (не так много данных, просто булево и несколько чисел). Существует также файл параметров, и для разных параметров ожидается, что распределение результатов моделирования будет изменяться. Чтобы определить правильные/наилучшие входные параметры, мне нужно запустить несколько симуляций, через несколько конфигураций входных параметров и посмотреть распределение выходов в каждой группе. Каждое симуляция занимает 0,1-10 минут в зависимости от параметров и случайности.

Я читал о Hadoop и задавался вопросом, может ли он помочь мне запустить множество симуляций; В ближайшем будущем у меня может быть доступ к примерно 8 сетевым настольным компьютерам. Если я правильно понимаю, функция карты может запустить мою симуляцию и выплюнуть результат, а редуктор может быть идентичным.

Вещь, о которой я беспокоюсь, - это HDFS, которая, похоже, предназначена для огромных файлов, а не для небольших CSV файлов (ни один из которых не будет достаточно большим, чтобы даже составить минимальный рекомендуемый размер блока 64 МБ). Кроме того, для каждого моделирования потребуется только идентичная копия каждого из файлов CSV.

Является ли Hadoop неправильным инструментом для меня?

4b9b3361

Ответ 1

Я вижу здесь несколько ответов, которые в основном говорят: "Нет, вы не должны использовать Hadoop для моделирования, потому что он не был создан для моделирования". Я считаю, что это довольно недальновидная точка зрения и будет сродни тому, кто говорит в 1985 году: "Вы не можете использовать ПК для обработки текстов, ПК для электронных таблиц!"

Hadoop - фантастическая основа для построения механизма моделирования. Я использую его для этой цели в течение нескольких месяцев и имел большой успех с небольшими проблемами с данными/большими вычислениями. Вот 5 главных причин, по которым я перешел на Hadoop для моделирования (используя R как мой язык для моделирования, кстати):

  • Доступ: Я могу арендовать кластеры Hadoop через Amazon Elastic Map Reduce, и мне не нужно вкладывать время и энергию в администрирование кластера. Это означало, что я мог бы начать делать симуляции на распределенной основе без необходимости получать административное одобрение в моей организации!
  • Администрирование: Hadoop обрабатывает проблемы управления заданиями, например, node сбой, невидимо. Мне не нужно кодировать эти условия. Если node не удается, Hadoop гарантирует, что симы, запланированные для этого node, будут запущены на другом node.
  • Модернизированный:. Будучи довольно общей картой, уменьшайте движок с помощью большой распределенной файловой системы, если у вас возникнут проблемы с большими данными, если вы используете Hadoop, вам не нужно мигрировать в новое решение. Таким образом, Hadoop дает вам платформу для моделирования, которая также будет масштабироваться до большой платформы данных (почти) бесплатно!
  • Поддержка. Будучи открытым исходным кодом и используется многими компаниями, количество ресурсов, как в режиме онлайн, так и вне, для Hadoop многочисленны. Многие из этих ресурсов написаны с предположением о "больших данных", но они по-прежнему полезны для того, чтобы научиться мыслить на карте.
  • Переносимость:. Я построил анализ поверх проприетарных движков, используя проприетарные инструменты, которые занимались значительным обучением для работы. Когда я позже сменил работу и оказался в фирме без того же запатентованного стека, мне пришлось изучить новый набор инструментов и новый стек моделирования. Больше никогда. Я торгую в SAS для R и нашей старой сеткой для Hadoop. Оба являются с открытым исходным кодом, и я знаю, что я могу приземлиться на любую работу в будущем и сразу же иметь инструменты под рукой, чтобы начать пинать задницу.

Если вам интересно узнать больше о моем опыте с помощью Hadoop с R, здесь видео с презентацией, которую я дал в Чикагской группе пользователей Hadoop в мае 2010 года:

Ответ 2

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

Мне нравится Gearman (http://gearman.org/) для такого рода вещей.

Ответ 3

Пока вы можете получить с помощью MapReduce с Hadoop, похоже, что то, что вы делаете, может быть лучше подходит для планировщика сетки/заданий, такого как Condor или Sun Grid Engine. Hadoop больше подходит для выполнения чего-то, когда вы берете один (очень большой) вход, разбиваете его на куски для рабочих машин для обработки, а затем уменьшаете его для получения результата.

Ответ 4

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

Ответ 5

Проще говоря, хотя Hadoop может решить вашу проблему здесь, это не правильный инструмент для вашей цели.