Hadoop или Hadoop Streaming для MapReduce на AWS

Я собираюсь начать проект mapreduce, который будет работать на AWS, и мне предоставляется выбор: использовать Java или C++.

Я понимаю, что написание проекта на Java предоставило бы мне больше функциональных возможностей, однако C++ также мог бы реализовать это с помощью потоковой передачи Hadoop.

Имейте в виду, у меня мало опыта в обоих языках. Аналогичный проект был сделан на C++, и код доступен мне.

Итак, мой вопрос: доступна ли эта дополнительная функциональность через AWS или она актуальна только в том случае, если у вас больше контроля над облаком? Есть ли что-то еще, что я должен иметь в виду, чтобы принять решение, например, наличие плагинов для Hadoop, которые лучше работают с тем или иным языком?

заранее спасибо


person aeolist    schedule 28.12.2009    source источник


Ответы (3)


У вас есть несколько вариантов запуска Hadoop на AWS. Самый простой способ — запустить задания MapReduce через службу Elastic MapReduce: http://aws.amazon.com/elasticmapreduce. Вы также можете запустить кластер Hadoop в EC2, как описано на странице http://archive.cloudera.com/docs/ec2.html.

Если вы подозреваете, что вам нужно будет написать свои собственные форматы ввода/вывода, разделители и объединители, я бы рекомендовал использовать Java с последней системой. Если ваша работа относительно проста и вы не планируете использовать свой кластер Hadoop для каких-либо других целей, я бы рекомендовал выбрать наиболее удобный для вас язык и использовать EMR.

В любом случае, удачи!

Раскрытие информации: я являюсь основателем Cloudera.

С уважением, Джефф

person Jeff Hammerbacher    schedule 06.01.2010
comment
спасибо за ваш ответ, я прочитал некоторые презентации Cloudera, они были действительно полезны - person aeolist; 06.01.2010

Я решил, что гибкость Java важнее, чем устранение возможных недостатков, связанных с переводом моего текущего кода с C++ на Java.

Спасибо за все ваши ответы.

person aeolist    schedule 06.01.2010

Это зависит от ваших потребностей. Каков ваш ввод/вывод? Это простые текстовые файлы? Записи с новыми разделителями строк? Вам нужен специальный комбайн? разделитель?

Я имею в виду, что если вам нужны только основы хаупа, потоковая передача подойдет. Но если вам нужно немного больше сложности (от фреймворка hadoop, а не от вашей собственной бизнес-логики), jar-файл hadoop будет более гибким.

Саги

person sagie    schedule 31.12.2009
comment
ну, мой ввод будет одной большой текстовой последовательностью, я полагаю, в районе 1-100 ГБ. Мне нужно разрезать последовательность на куски. Не могу сказать вам, нужен ли мне какой-то специальный объединитель или разделитель, так как я еще не программировал хауп самостоятельно - все еще на этапе чтения руководств. Будет ли вся эта дополнительная гибкость доступна через AWS, или, может быть, они отключили что-то из соображений безопасности и т. д.? - person aeolist; 31.12.2009
comment
Я тоже только начинаю пользоваться AWS. Насколько я могу судить, если вы используете M/R для обработки текстовых файлов с хорошо известным форматом записей, на самом деле не имеет значения, используете ли вы Hadoop Jar или Streaming. Выберите тот, который вам удобнее (Java или C++). Если вам нужно создать свои собственные настраиваемые форматы ввода/вывода, если вам нужно начать использовать HBase и т. д., выберите java. У вас не будет такой гибкости в потоковой передаче. Кстати, а как насчет каналов Hadoop? - person sagie; 04.01.2010