Big data объем скорость разнообразие

Big Data от А до Я. Часть 1: Принципы работы с большими данными, парадигма MapReduce

Привет, Хабр! Этой статьёй я открываю цикл материалов, посвящённых работе с большими данными. Зачем? Хочется сохранить накопленный опыт, свой и команды, так скажем, в энциклопедическом формате – наверняка кому-то он будет полезен.

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

Начинать надо от простого к сложному, поэтому первая статья – о принципах работы с большими данными и парадигме MapReduce.

История вопроса и определение термина

Термин Big Data появился сравнительно недавно. Google Trends показывает начало активного роста употребления словосочетания начиная с 2011 года (ссылка):

При этом уже сейчас термин не использует только ленивый. Особенно часто не по делу термин используют маркетологи. Так что же такое Big Data на самом деле? Раз уж я решил системно изложить и осветить вопрос – необходимо определиться с понятием.

В своей практике я встречался с разными определениями:

· Big Data – это когда данных больше, чем 100Гб (500Гб, 1ТБ, кому что нравится)

· Big Data – это такие данные, которые невозможно обрабатывать в Excel

· Big Data – это такие данные, которые невозможно обработать на одном компьютере

· Вig Data – это вообще любые данные.

· Big Data не существует, ее придумали маркетологи.

В этом цикле статей я буду придерживаться определения с wikipedia:

Большие данные (англ. big data) — серия подходов, инструментов и методов обработки структурированных и неструктурированных данных огромных объёмов и значительного многообразия для получения воспринимаемых человеком результатов, эффективных в условиях непрерывного прироста, распределения по многочисленным узлам вычислительной сети, сформировавшихся в конце 2000-х годов, альтернативных традиционным системам управления базами данных и решениям класса Business Intelligence.

Таким образом под Big Data я буду понимать не какой-то конкретный объём данных и даже не сами данные, а методы их обработки, которые позволяют распредёлено обрабатывать информацию. Эти методы можно применить как к огромным массивам данных (таким как содержание всех страниц в интернете), так и к маленьким (таким как содержимое этой статьи).

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

· Логи поведения пользователей в интернете

· GPS-сигналы от автомобилей для транспортной компании

· Данные, снимаемые с датчиков в большом адронном коллайдере

· Оцифрованные книги в Российской Государственной Библиотеке

· Информация о транзакциях всех клиентов банка

· Информация о всех покупках в крупной ритейл сети и т.д.

Количество источников данных стремительно растёт, а значит технологии их обработки становятся всё более востребованными.

Принципы работы с большими данными

Исходя из определения Big Data, можно сформулировать основные принципы работы с такими данными:

1. Горизонтальная масштабируемость. Поскольку данных может быть сколь угодно много – любая система, которая подразумевает обработку больших данных, должна быть расширяемой. В 2 раза вырос объём данных – в 2 раза увеличили количество железа в кластере и всё продолжило работать.

2. Отказоустойчивость. Принцип горизонтальной масштабируемости подразумевает, что машин в кластере может быть много. Например, Hadoop-кластер Yahoo имеет более 42000 машин (по этой ссылке можно посмотреть размеры кластера в разных организациях). Это означает, что часть этих машин будет гарантированно выходить из строя. Методы работы с большими данными должны учитывать возможность таких сбоев и переживать их без каких-либо значимых последствий.

3. Локальность данных. В больших распределённых системах данные распределены по большому количеству машин. Если данные физически находятся на одном сервере, а обрабатываются на другом – расходы на передачу данных могут превысить расходы на саму обработку. Поэтому одним из важнейших принципов проектирования BigData-решений является принцип локальности данных – по возможности обрабатываем данные на той же машине, на которой их храним.

Все современные средства работы с большими данными так или иначе следуют этим трём принципам. Для того, чтобы им следовать – необходимо придумывать какие-то методы, способы и парадигмы разработки средств разработки данных. Один из самых классических методов я разберу в сегодняшней статье.

Читайте также:  Как вычислить объем матки по узи

MapReduce

Про MapReduce на хабре уже писали (раз, два, три), но раз уж цикл статей претендует на системное изложение вопросов Big Data – без MapReduce в первой статье не обойтись J

MapReduce – это модель распределенной обработки данных, предложенная компанией Google для обработки больших объёмов данных на компьютерных кластерах. MapReduce неплохо иллюстрируется следующей картинкой (взято по ссылке):

MapReduce предполагает, что данные организованы в виде некоторых записей. Обработка данных происходит в 3 стадии:

1. Стадия Map. На этой стадии данные предобрабатываются при помощи функции map(), которую определяет пользователь. Работа этой стадии заключается в предобработке и фильтрации данных. Работа очень похожа на операцию map в функциональных языках программирования – пользовательская функция применяется к каждой входной записи.

Функция map() примененная к одной входной записи и выдаёт множество пар ключ-значение. Множество – т.е. может выдать только одну запись, может не выдать ничего, а может выдать несколько пар ключ-значение. Что будет находится в ключе и в значении – решать пользователю, но ключ – очень важная вещь, так как данные с одним ключом в будущем попадут в один экземпляр функции reduce.

2. Стадия Shuffle. Проходит незаметно для пользователя. В этой стадии вывод функции map «разбирается по корзинам» – каждая корзина соответствует одному ключу вывода стадии map. В дальнейшем эти корзины послужат входом для reduce.

3. Стадия Reduce. Каждая «корзина» со значениями, сформированная на стадии shuffle, попадает на вход функции reduce().

Функция reduce задаётся пользователем и вычисляет финальный результат для отдельной «корзины». Множество всех значений, возвращённых функцией reduce(), является финальным результатом MapReduce-задачи.

Несколько дополнительных фактов про MapReduce:

1) Все запуски функции map работают независимо и могут работать параллельно, в том числе на разных машинах кластера.

2) Все запуски функции reduce работают независимо и могут работать параллельно, в том числе на разных машинах кластера.

3) Shuffle внутри себя представляет параллельную сортировку, поэтому также может работать на разных машинах кластера. Пункты 1-3 позволяют выполнить принцип горизонтальной масштабируемости.

4) Функция map, как правило, применяется на той же машине, на которой хранятся данные – это позволяет снизить передачу данных по сети (принцип локальности данных).

5) MapReduce – это всегда полное сканирование данных, никаких индексов нет. Это означает, что MapReduce плохо применим, когда ответ требуется очень быстро.

Примеры задач, эффективно решаемых при помощи MapReduce

Word Count

Начнём с классической задачи – Word Count. Задача формулируется следующим образом: имеется большой корпус документов. Задача – для каждого слова, хотя бы один раз встречающегося в корпусе, посчитать суммарное количество раз, которое оно встретилось в корпусе.

Раз имеем большой корпус документов – пусть один документ будет одной входной записью для MapRreduce–задачи. В MapReduce мы можем только задавать пользовательские функции, что мы и сделаем (будем использовать python-like псевдокод):

Функция map превращает входной документ в набор пар (слово, 1), shuffle прозрачно для нас превращает это в пары (слово, [1,1,1,1,1,1]), reduce суммирует эти единички, возвращая финальный ответ для слова.

Обработка логов рекламной системы

Второй пример взят из реальной практики Data-Centric Alliance.

Задача: имеется csv-лог рекламной системы вида:

Необходимо рассчитать среднюю стоимость показа рекламы по городам России.

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

Резюме

В статье мы рассмотрели несколько вводных моментов про большие данные:

· Что такое Big Data и откуда берётся;

· Каким основным принципам следуют все средства и парадигмы работы с большими данными;

· Рассмотрели парадигму MapReduce и разобрали несколько задач, в которой она может быть применена.

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

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

Читайте также:  Как изменится объем реализации продукции при увеличении остатков готовой продукции на начало периода

Спасибо за внимание, готовы ответить на ваши вопросы.

Источник

Видовое разнообразие данных

Термин «большие данные» давно уже звучит привычно, и многие даже понимают, что это такое на самом деле и как его использовать. В то же время, специалисты по анализу данных придумали множество других градаций собираемой информации, в зависимости от размера, востребованности, актуальности и так далее. Удивительно, но данные могут быть «быстрыми», «горячими», «длинными» и «медленными», даже «грязными». Хотя весь этот аналитический зоопарк и не помог многочисленным аналитикам правильно предсказать решение британцев выйти из ЕС и победу Трампа.

Большие данные — это не просто очень большие массивы информации, но совокупность подходов, методов и инструментов обработки различных данных колоссальных объёмов.
Большие данные — не просто сведения, это социально-экономический феномен, который обязан своим появлением необходимости анализировать огромные массивы информации в мировом масштабе.

Big Data опираются на три V: volume (объём), variety (разнообразие) и velocity (скорость). С объёмом всё понятно. Разнообразие зависит от широты спектра источников, питающих базы данных. А скорость вообще главный показатель современного мира, который не останавливается ни на секунду.

А можно ли, к примеру, считать «большими данными» соцопросы, пусть даже охватывающие тысячи человек? Объём информации, которую можно получить из всевозможных опросов достаточно велик, но всё же не настолько, поэтому её можно отнести скорее к «средним данным». Наверное, если бы предвыборная аналитика охватывала миллионы респондентов, то это уже были бы «большие данные». Также Big Data может складываться из кирпичиков «маленьких данных».

Одним из трендов сегодня являются «быстрые данные». В современном мире всё происходит молниеносно. В приложениях и социальных сетях информация, которой 1-2 часа, уже не актуальна, на кону каждая секунда. Быстрые данные важны и для банковских приложений, и для приложений социальных сетей, и особенно для мессенджеров. Каждую секунду пользователи получают новые уведомления, на основе которых принимают важные для себя решения.

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

А когда длительность накопления начнёт измеряться веками, медленные данные превратятся в «длинные». Так как эпоха Big Data началась сравнительно недавно, то сегодня длинные данные нужно искать не в интернете, а в книгах, манускриптах, на стенах памятников архитектуры и при археологических раскопках. Исторический аспект может оказаться очень важным для конкретного исследования!

Хотя данные и не пирожки, они могут быть «горячими» и «холодными». Здесь работает принцип «свежести»: более «свежие» — горячие — данные представляют бо̒льшую ценность. Для простого пользователя долгожданный комментарий в мессенджере «свежестью» в 10 секунд более важен, чем уже «холодный» комментарий, созданный 2 часа назад. Конечно, он ещё может быть полезен, например, чтобы уточнить какой-то факт из переписки: вспомнить название предложенной другом книги или фильма, уточнить время встречи, и так далее. Доступ к горячим данным должен быть постоянным. Холодные данные нужны нам не так часто, поэтому и постоянный доступ к ним — отнюдь не первая необходимость.

Помимо характеристики размера, скорости или температуры, данные могут классифицироваться и по их чистоте. «Грязными» называют такие данные, которые либо ошибочны, либо содержат неполную или непоследовательную информацию, и обычно они практически бесполезны. Грязные данные составляют большую часть информации, накопленной во многих компаниях. В то же время здесь могут попадаться настоящие информационные сокровища — ценные долгосрочные идеи. Но от грязных данных хватает и неприятностей. Как утверждают в компании GovTechWorks, такая неструктурированная и нерелевантная информация обходится американским компаниям в $6 миллиардов ежегодно!

Термин «ответственные данные», описывает ситуацию, когда накапливается только достоверная информация, которая берётся из проверенных источников, хранится и передаётся с соблюдением строгих мер безопасности.

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

Читайте также:  Как вычислить минимальный объем

Большие данные правят миром

При таком разнообразии определений возникает вопрос: какие же они на самом деле, эти данные? В первую очередь, большие, гигантские! Big Data собираются рядом с нами, вокруг нас и даже о каждом из нас. Маленькие песчинки медленно и верно формируют их.

На память сразу приходит популярная фраза «Большой брат следит за тобой». Из собираемых повсеместно обрывков информации складываются определенные базы данных, используемые для тех или иных исследований и манипулирования общественным мнением. Впоследствии вся полученная информация анализируется, и происходит так называемое гадание об исходе важных событий. Это гадание порождает всевозможные прогнозы по поводу побед на выборах, изменениям политической обстановки в стране, или колебаниях популярности какой-либо музыкальной группы среди молодежи.

Звание чемпионов по сбору Big Data заслужили такие три кита, как Google, Facebook и Amazon. Эти корпорации фиксируют малейший щелчок мышки каждого пользователя их порталов. И всё это ради глобального сбора информации. На большие данные возлагаются серьёзные надежды. Исследователи предрекают их огромное влияние на все отрасли человеческой жизни и деятельности. Не обошла эта участь и медицину, и науку.

Чем же Big Data могут быть полезны в медицине? Дело тут даже не в размере накопления информации, а в методиках её обработки и анализа. Объём медицинских данных в ряде сфер уже давно достиг размеров, что их проблематично не то что обрабатывать, а даже хранить. Самый яркий пример — расшифровка человеческого генома, состоящего более чем из 3 миллиардов знаков. На эту работу под эгидой Национальной организации здравоохранения США ушло 13 лет (с 1990 года по 2003-й). В 2017-м же, благодаря росту мощности компьютеров и развитию теоретического и программного инструментария, на подобную задачу потребуются недели, а то и дни.

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

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

Швейцарский журнал Das Magazin утверждает, что эту победу обеспечили пара ученых, Big Data и современные технологии. Некто Михаль Косински разработал уникальную систему, которая позволяет выяснить максимум информации о человеке только лишь по его лайкам в соцсетях — так называемый «микротаргетинг». Позднее разработка Косински, против его желания, начала использоваться в крупных политических играх. Позже та же система сработала в предвыборной кампании американского бизнесмена. Никто и не догадывался о связи политика с аналитической компанией, ведь на столе Дональда нет даже компьютера. Но нынешний президент США выдал себя сам. Он написал в своём аккаунте Твиттер, что скоро его будут называть Mr. Brexit.

В своей предвыборной кампании Хиллари Клинтон действовала традиционно — обращалась к разным группам населения страны, составляя отдельные обращения к чернокожему населению и женщинам. Cambridge Analytica действовали по-другому. Закупив базы данных совершеннолетних жителей США, они изучали каждого из них по методу OCEAN, учитывая личные предпочтения и интересы. В зависимости от своего характера и склада ума, каждому человеку из баз данных отправлялись послания с призывом проголосовать за клиента Cambridge Analytica, причём обоснование было подобрано в зависимости от ранее построенного индивидуального профиля адресата. Некоторые из сообщений даже были построены на принципе противоречия, и предлагали голосовать за Хиллари.

Косински, учёный, придумавший систему микротаргетинга, пока лишь наблюдает за таким использованием его разработки со стороны. По словам Михаля, не его вина в том, что изобретение стало бомбой в чужих руках. Надо подчеркнуть, что публикация швейцарского журнала подверглась критике со стороны многочисленных европейских СМИ, которые заявляют о бездоказательности приведённой информации.

Пока обсуждается вопрос о том, действительно ли большие данные повлияли на выборы в США, эти данные продолжают изучаться и систематизироваться. Берегитесь социальных сетей — кто знает, за кого вы ещё проголосуете или что побежите покупать, испытав на себе воздействие больших данных?

Источник

Поделиться с друзьями
Объясняем