2013-06-05 2 views
1

Предположительно у меня есть большие независимые наборы данных в отдельных файлах excel.hasoop map reduce vs clojure pmap function

С точки зрения эффективности выполнения, было бы лучше использовать функцию clojure Pmap для обработки данных или сокращения карты hadoop?

Каждый файл Excel содержит примерно 34000 строк по крайней мере, и у меня их довольно много.

К сожалению для начинающих вопрос, как я относительно новым для обоих, и проводят исследования на них

Как некоторые из вас, ребята объяснили,

Возможно, еще один вопрос будет сравнивать Clojure PMAP против экземпляра запуска нескольких экземпляров одних и тех же копий программного обеспечения, каковы различия между ними?

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

+1

См: [Нужна ли мне SQL или Hadoop? Блок-схема] (http: //www.aaroncordova.com/2012/01/do-i-need-sql-or-hadoop-flowchart.html) - s/SQL/pmap/ – noahlz

ответ

2

Я бы сказал, использование Hadoop, но не напрямую, а через Cascalog от Clojure. Ценовое предложение здесь - это все, что Hadoop дает вам плюс отличный декларативный язык запросов (что вполне может сделать использование Cascalog стоящим, даже если задача относительно невелика, настройка с Hadoop в локальном режиме абсолютно без проблем).

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

Чтобы дать вам вкус того, что он выглядит, вот отрывок из первого урока (найти все «следует» отношения, где повторитель старше человека, которого они следуют):

(?<- (stdout) [?person1 ?person2] 
    (age ?person1 ?age1) 
    (follows ?person1 ?person2) 
    (age ?person2 ?age2) 
    (< ?age2 ?age1)) 

Нет проблем запустив это в кластере, см., например, News Feed in 38 lines of code using Cascalog в блоге Натана Марза.

1

Много языки имеют возможности уменьшения карты, включая Clojure.

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

+0

Есть ли ситуация, когда clojure outwits hasoop? Предположительно, работая на небольших ресурсах, скажем, может быть, несколько компьютеров вместо кластеров машин? – aceminer

+0

"перехитрит"? Похоже, ты теперь виноват в магическом мышлении. – duffymo

2

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

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

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

+0

@ arnon.me Привет, как насчет функциональности clojure pmap по сравнению с запуском нескольких копий одного и того же файла? – aceminer

+0

Если у вас много файлов, которые относительно одного размера, вы можете получить достаточный параллелизм, просто обработав столько файлов, сколько у вас есть, даже если каждый файл обрабатывается одним ядром. Если файлы имеют большую дисперсию по размеру или у вас только несколько файлов, может стоить свести к минимуму обработку отдельных файлов, и если обработка будет действительно интенсивной в ЦП, может быть даже стоить заплатить цену за обработку файла в распределенной (например, byoop) - все зависит от :) –