KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Прочая околокомпьтерная литература » Коллектив Авторов - Цифровой журнал «Компьютерра» № 22

Коллектив Авторов - Цифровой журнал «Компьютерра» № 22

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Коллектив Авторов, "Цифровой журнал «Компьютерра» № 22" бесплатно, без регистрации.
Перейти на страницу:

Определение функции reduce. Функция reduce служит для сборки обработанных частей данных в единый результат. Программист определяет эту функции исходя из поставленной задачи и требуемого результата.

После этого, для запуска обработки данных необходимо вызвать всего одну функцию (ее название зависит от реализации механизма MapReduce, например в Qt подобная функция имеет название mappedReduced), указав в ее параметрах: подготовленные разбитые на части данные, функцию map и функцию reduce.

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

Данная технология реализована для различных языков программирования, например, для С++, С#, Java и других.

Удобной, простой в использовании с одной стороны, и показывающие прекрасные результаты быстродействия с другой, является реализация механизма MapReduce в объектно-ориентированной кроссплатформенной библиотеке Qt.

Рассмотрим простой пример. Пусть имеется вектор чисел, имеющий очень большую длину. Необходимо посчитать количество вхождений какого-либо числа в этом векторе.

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

В случае применения MapReduce, программист должен разбить исходный вектор на несколько векторов. Функция map в таком случае будет действовать по алгоритму однопоточной версии, параметром будет являться вектор чисел, возвращаемым значением будет количество вхождений заданного числа. Функция reduce будет проводить операцию сложения результатов после каждого выполнения функции map.

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

В заключении хотелось бы сказать, что применять MapReduce необходимо обоснованно, обдуманно, иначе выигрыш времени, получаемый при распараллеливании, может быть меньше, чем время на создание новых потоков. Но надеюсь, что после освоения этого механизма каждый, кто будет слышать про обработку больших объемов данных, будет думать – да нет же ничего проще =)


К оглавлению

Голубятня-Онлайн

Голубятня: Коннект-позор

Сергей Голубицкий

Опубликовано 21 июня 2010 года

Признаюсь, несколько подряд айтишных тем уже занудили меня и набили оскомину. Знаете: IT летом — словно жмурка, к ночи помянутая. Бррр! Так что будем дозировать, будем дозировать. Сегодня — последняя реплика, а затем перерыв — на нивах культурного просвещения и соцполитбаталий.

Я никогда не перестану «по-децки» наивно удивляться беспределу, творимому московскими опсосами. В смысле, что у меня элементарно в голове не укладываются причины и мотивы этого беспредела?! Ну почему так?! За что?! Неужели единственный объективный аргумент — это «лохов НУЖНО обувать по определению»?! Отъезжаешь от Московской области, и сразу же восстанавливаются рамки приличия: тарифы более или менее пристойные, поведение хоть и гадкое, но в пределах общепринятого во всем мире (другое дело, что опсосы повсюду на планете Земля одиозны по ту сторону добра и зла).

Нет, я правда бы хотел выслушать хоть кого-нибудь из Великой Тройки (с Большой Дороги) на предмет обоснования того, что они творят на просторах Новой Рязани и прилегающей к ней области. Может, есть какие-то объективные причины для ОСКОРБИТЕЛЬНЫХ тарифов, которыми грузятся московиты? Какая-то особая неприязнь? Внутреннее отторжение? Финансовые вилы и подводные камни? Скрытые поборы и налоги? Хоть что-то, что способно объяснить надругательство над пользователями...

Не буду никого продавливать эмоциями — просто приведу цифры. Тем более, что на вопиющий диссонанс, утвердившийся между тарифами московских опсосов и окружающего больную резервацию мира, имеет иррациональную тенденцию к нарастанию. В том смысле, что развиваются инфраструктуры, добавляются соты, устанавливаются новые передатчики, осваиваются новые протоколы, а ценовой разрыв между аналогичными услугами московских опсосов и предложениями на стороне всё увеличивается и увеличивается.

Когда я последний раз писал о несуразных тарифах «Билайн», МТС и «Мегафона» в Москве и Московской области в сравнении с предложениями украинских и молдавских операторов, в Новой Рязани ещё не было 3G. Поэтому сравнивать особо было нечего: с одной стороны, полноценный скоростной HSDPA и WCDMA, с другой — жалкие потуги, балансирующие между GPRS и EDGE. Тогда все кивали на военных: типа, защитники родины не дают частот, вставляют палки в колёса.

Ну хорошо, перестали защитники вставлять. Сегодня с большой помпой отрапортовали Диумвирату: Три Жэ в Столице Есть! Уррряяя!

И чего? А вот я вам сейчас продемонстрирую, чего. Смотрите: это отрывок из бумажной «Голубятни», написанной летом 2008 года:

"Молдавский мобильный оператор Orange (вообще-то он, конечно, французский, однако ведет себе вполне по-молдавски) анонсировал введение 3G с 1 ноября 2008 года, в котором лучший тариф предусматривает 1 гигабайт скоростного трафика за 400 леев (чуть менее 20 долларов). Как видите – цены совсем московские, потому как у украинского People.net за те же 20 долларов вы получаете 10 гигабайт трафика, а за 30 долларов – 20 гигабайт».

Итак, два года назад мы имели такую картину: в Молдавии — зарождение 3G по невыразительным ценам (1 Гб = 20 долларов), на Украине — полноценный хоть и не быстрый (WCDMA) широкополосный мобильный интернет по высококонкурентным ценам (10 Гб = 20 долларов). В столице Российской Федерации никакого 3G не было в помине и повсюду царило разорительное болото GPRS: 15-20 центов за 1 мегабайт трафика. Я, кстати, незаслуженно обозвал молдавский Orange «московским по ценам», потому как в 2008 году WCDMA от Skylink в Москве стоило 100 долларов за 1 Гб трафика, то есть уже тогда, с первого дня учреждения, 3G трафик Orange был в пять раз дешевле.

Смотрим ситуацию через год (2009). Вот ещё один отрывок из летней «Голубятни»:

"- Не понимаю тебя, Голубицкий, — это опять вмешивается в поток сознания Антонелло, гостящий на моей молдавской фазенде и вещающий с высоты безделья, возникшего в результате заблаговременного написания всех сценариев и статей ещё накануне отпуска. – Какой QIP, какая Miranda? Чем тебе «Скайп» не угодил?

- Ты что, старче, совсем спятил?! О каком «Скайпе» ты бредишь, когда здесь у нас – на окраине леса в низине, окруженной со всех сторон холмами, только и работает что EDGE от оператора Orange, который по скорости раза в полтора медленнее давно забытого дайлапа?!"

То есть, что мы имеем? Незначительное изменение цен у Orange и по-прежнему отсутствие полноценного 3G у меня на даче (в 35 км от Кишинёва) — один лишь EDGE, правда, шустрый. В самом городе (Кишинёве и еще тройке крупных райцентров) действует очень быстрый 3G (5-7 Mbps) по цене 150 лей (12 долларов) за 4 Гб трафика. Прошлым же летом на Украине пальму первенства захватил оператор Utel с настоящим HSDPA и ценами 150 гривен (всё те же магические 20 долларов) за 3 Гб трафика и 300 гривен (40 долларов) за 15 Гб трафика.

А что в Новой Рязани? А в Новой Рязани все по-брежневу, за той лишь разницей, что народ рапортовал Партии запуск 3G ну и мёртвым цветом где-то вроде как цвёл WiMAX (который, как мы недавно узнали, скоро и умрёт, так никогда серьёзно не родившись, в пользу очередной химеры — уже «четвёртого поколения». Вот же милое дело: с третьим-то даже не справившись, уже перескочили на четвёртое!). По-брежнему — это никакого 3G за пределами Садового Кольца и цены на EDGE упрямо хамские: 15-20 центов за мегабайт.

Теперь смотрим на лето 2010. Украина: Utel предлагает следующий тариф на 3G трафик: 6 гривен в день... полный анлим!!! Это тариф бесконтрактного подключения, на котором действует ограничение скорости в 1 Mbps. На контракте: с максимально возможной скоростью (5-7 Mbps) и лимитом трафика в 5 Гб ежемесячно плата составляет 120 гривен (15 долларов). Меня полностью и безоговорочно устраивал бесконтрактный вариант, тем более, что остановившись в Броварах на ночевку в гостинице было достаточно вставить прошлогоднюю SIM-карту, которая мгновенно подключилась к сети и прекрасно позволила говорить по «Скайпу» с видеокартинкой. Цена удовольствия, как я уже сказал, 6 гривен, то есть около 80 центов в сутки.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*