Page 262 - Bkhargava_-_Grokaem_algoritmy
P. 262

MapReduce   261


        MapReduce


        Одна разновидность параллельных алгоритмов в последнее время становит­
        ся все более популярной: распределенные алzориrпмы. Конечно, параллель­
        ный алгоритм удобно запустить на компьютере, если для его выполнения
        потребуется от двух до четырех ядер, а если нужны сотни ядер? Тогда ал­
        горитм записывается так, чтобы он мог выполняться на множестве машин.
        Алгоритм MapReduce - известный представитель семейства распределен­
        ных алгоритмов.  Для работы с ним можно воспользоваться популярной
        системой с открытым кодом Apache Hadoop.


        Для чего нужны распределенные алгоритмы?


        Предположим, имеется таблица с миллиардами или триллионами запи­
        сей и вы хотите применить к ней сложный вопрос SQL.  Выполнить
        его в MySQL не удастся, потому что MySQL начнет ~тормозить~ уже
        после нескольких миллиардов записей. Используйте MapReduce через
        Hadoop!

        Или, предположим, вам нужно обработать длинный список заданий. Об­
        работка каждого задания занимает 1 О секунд, всего требует обработки
        1 миллион заданий. Если выполнять эту работу на одном компьютере, она
        займет несколько месяцев! Если бы ее можно было выполнить на 100 ма­
        шинах, работа завершилась бы за несколько дней.
        Распределенные алгоритмы хорошо работают в тех ситуациях,  когда вам
        нужно выполнить большой объем работы и вы хотите сократить время ее
        выполнения. В основе технологии MapReduce лежат две простые идеи :
        функция отображения map и функция свертки reduce.


        Функция map

        Функция map  проста: она получает массив и применяет одну функцию
        к каждому элементу массива. Скажем, в следующем примере происходит
        удваивание каждого элемента в массиве:

        >>>  arrl  = [1,  2,  З,  4,  5]
        >>>  arr2  =  map(lambda  х:  2  *  х,  arrl)
        [2,  4,  б,  8,  10]

                                                         www.trk.kg
   257   258   259   260   261   262   263   264   265   266   267