Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.08.09;
Скачать: [xml.tar.bz2];

Вниз

MapReduce на Delphi   Найти похожие ветки 

 
cyber-pilot   (2009-06-07 19:17) [0]

Есть такая технология MapReduce http://ru.wikipedia.org/wiki/MapReduce которая позволяет легко распараллеливать задачи. Есть ли библиотеки на Делфи, которые реализуют эту технологию? Интересно было бы посмотреть. В интернете не нашел.


 
Palladin ©   (2009-06-07 19:18) [1]

А можно вкратце описать эту технологию своими словами?


 
Andy BitOff ©   (2009-06-07 19:26) [2]

> Palladin ©   (07.06.09 19:18) [1]
> А можно вкратце описать эту технологию своими словами?

Цитата от туда:
MapReduce — это фреймворк для вычисления некоторых наборов распределенных задач с использованием большого количества компьютеров (называемых "нодами"), образующих кластер.
Работа MapReduce состоит из двух шагов: Map и Reduce.
На Map-шаге происходит предварительная обработка входных данных. Для этого один из компьютеров (называемый главной нодой — master node) получает входные данные задачи, разделяет их на части и передает другим компьютерам (рабочим нодам — worker node) для предварительной обработки. Название данный шаг получил от одноименной функции высшего порядка.
На Reduce-шаге происходит свертка предварительно обработанных данных. главная нода получает ответы от рабочих нод и на их основе формирует результат — решение задачи, которая изначально формулировалась.
Преимущество MapReduce заключается в том, что он позволяет распределенно производить операции предварительной обработки и свертки. Операции предварительной обработки работают независимо друг от друга и могут производиться параллельно (хотя на практике это ограничено источником входных данных и/или количеством используемых процессоров). Аналогично, множество рабочих нод могут осуществлять предварительную обработку — для этого необходимо только чтобы все результаты предварительной обработки с одним конкретным значением ключа обрабатывались одной рабочей нодой в один момент времени. Хотя этот процесс может быть менее эффективным по сравнению с более последовательными алгоритмами, MapReduce может быть применен к большим объемам данных, которые могут обрабатываться большим количестов серверов. Так, MapReduce может быть ипользован для сортировки петабайта даных, что займет всего лишь несколько часов. Параллелизм также дает некоторые возможности восстановления после частичных сбоев серверов: если в рабочей ноде, производящую операцию предварительной обработки или свертки, возникает сбой, то ее работа может быть передана другой рабочей ноде (при условии, что входные данные для проводимой операции доступны).
Фреймворк в большой степени основан на функциях map и reduce широко используемых в функциональном программировании, хотя фактически семантика фреймворка отличается от прототипа.

Пример
Канонический пример приложения, написанного с помощью MapReduce — это процесс, подсчитывающий количество вхождений слов в набор документов:

// Функция, используемая рабочими нодами на Map-шаге
// для обрабоки пар ключ-значение из входного потока
map(String name, String document):
   // Входные данные:
   //   ключ - название документа
   //   значение - содержимое документа
   // Результат:
   //   ключ - слово
   //   значение - всегда 1
   for each word w in document:
       EmitIntermediate(w, "1");

// Функция, используемая рабочими нодами на Reduce-шаге
// для обрабоки пар ключ-значение, полученных на Map-шаге
reduce(String word, Iterator partialCounts):
   // Входные данные:
   //   ключ - слово
   //   значения - всегда 1. Количество записей в partialCounts и есть
   //     требуемое значение
   // Результат:
   //   общее количество вхождений слова word во все
   //     обработанные на Map-шаге документы
   int result = 0;
   for each v in partialCounts:
       result += parseInt(v);
   Emit(AsString(result));


ЗЫ. У тебя же, вроде должен быть уже инет нормальный...


 
Palladin ©   (2009-06-07 19:33) [3]


> ЗЫ. У тебя же, вроде должен быть уже инет нормальный...

ну да... он должен быть... он должен был.. он был!.. вчера...
но дело не в этом...

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


 
cyber-pilot   (2009-06-07 19:50) [4]


> Palladin ©   (07.06.09 19:33) [3]
>
> помнится есть такая книжка, я ее очень уважаю и она у меня
> есть, дома, название точно не помню, но что то похожее на
>  "основы параллельного программирования"... но дело и не
> в этом... мне просто интересно желание аффтора топика добиться
> какого то функционала схожего с вышеупомянутой технологией.
> .. но как же его можно добится, не понимая эту технологию
> и возможности современных ОС для ее реализации... и сдается
> мне, что TThread"а ему будет предостаточно...


Я бы хотел чтобы распараллеливать задачи можно было просто. А TThread"ы для меня сложноваты.


 
test ©   (2009-06-08 05:30) [5]

cyber-pilot   (07.06.09 19:50) [4]
Использование TThread есть в Demos папки Delphi, ничего сложного запускается как ты написал, только с классами.


 
Дмитрий С ©   (2009-06-08 08:12) [6]


> А TThread"ы для меня сложноваты.

А MapReduce не сложно значит? :)


 
test ©   (2009-06-08 08:35) [7]

Дмитрий С ©   (08.06.09 08:12) [6]
Обертка вокруг TThread этот MapReduce


 
cyber-pilot   (2009-06-08 11:00) [8]


> test ©   (08.06.09 05:30) [5]
> cyber-pilot   (07.06.09 19:50) [4]
> Использование TThread есть в Demos папки Delphi, ничего
> сложного запускается как ты написал, только с классами.


У меня нет каталога Demos. Если не сложно, отправь пример мне на email.


> Дмитрий С ©   (08.06.09 08:12) [6]
>
> А MapReduce не сложно значит? :)


А вот это я и хочу выяснить.


 
axis_of_evil ©   (2009-06-08 16:32) [9]


> > А MapReduce не сложно значит? :)
> А вот это я и хочу выяснить.

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



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.08.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.004 c
8-1196042949
JJey
2007-11-26 05:09
2009.08.09
Как из Delphi запустить презентацию PowerPoint


11-1204867469
ILPU
2008-03-07 08:24
2009.08.09
Сохранение содержимого TreeView


15-1244700982
Рамиль
2009-06-11 10:16
2009.08.09
Бесплатные менеджеры проектов


1-1211807607
Jungle
2008-05-26 17:13
2009.08.09
"Правильно" преобразовать тип Variant


2-1244709711
a.a.j.
2009-06-11 12:41
2009.08.09
Место позиции курсора в поле html страницы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский