- Big Data от А до Я. Часть 1: Принципы работы с большими данными, парадигма MapReduce
- История вопроса и определение термина
- Принципы работы с большими данными
- MapReduce
- Примеры задач, эффективно решаемых при помощи MapReduce
- Word Count
- Обработка логов рекламной системы
- Резюме
- Big Data: что это такое, как искать, хранить и использовать
- Определение Big Data
- Как собирают Big Data
- Как хранят Big Data
- Как работают с большими данными
- Технологии
- Методы и средства работы с большими данными
- Data Engineer
- Где применяют Big Data
- Банки
- Бизнес
- Маркетинг
- Проблемы и перспективы 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: что это такое, как искать, хранить и использовать
В этой статье разберемся, что считается Big Data, а что нет, как эту информацию хранить, обрабатывать и получать пользу.
Определение Big Data
Это Петабайты (и больше) сложной и необработанной информации, которая постоянно обновляется. Например, данные IoT-датчиков с промышленного оборудования на заводах, записи транзакций клиентов банка или поисковых запросов с разных устройств. Иногда к большим данным добавляют методы и технологии обработки.
Понятие «big data» (большие данные) появилось в 2008 году, но еще до появления определения с большими данными уже встречались. Например, бизнес-аналитики компании «ВымпелКом» работали с big data в 2005 году, как утверждает Виктор Булгаков, руководитель департамента управленческой информации.
Чтобы точнее понять, относятся ли данные к big data или нет, смотрят на свойства информации (свойства определила Meta Group в 2001 году):
- Volume — объем (около 1 Петабайт).
- Velocity — регулярное обновление.
- Variety — данные могут быть не структурированы или иметь разнородные форматы.
К перечисленным факторам часто добавляют еще два:
- Variability (изменчивость) — всплески и спады данных, которые требуют определенных технологий для обработки.
- Value — различная сложность информации. Например, у данных о пользователях соцсетей и информации о транзакциях в банковской системе, разный уровень сложности.
Примечание. Определения условны, потому что никто точно не знает, как определять big data. Некоторые западные эксперты даже считают, что термин дискредитирован, и предлагают от него отказаться.
Как собирают Big Data
Источниками могут быть:
- интернет — от соцсетей и СМИ до интернета вещей (IoT);
- корпоративные данные: логи, транзакции, архивы;
- другие устройства, которые собирают информацию, например, «умные колонки».
Сбор. Технологии и сам процесс сбора данных называют дата майнингом (data mining).
Сервисы, с помощью которых проводят сбор — это, например, Vertica, Tableau, Power BI, Qlik. Собранные данные могут быть в разных форматах: текст, Excel-таблицы, SAS.
В процессе сбора система находит Петабайты информации, которая после будет обработана методами интеллектуального анализа, который выявляет закономерности. К ним относят нейронные сети, алгоритмы кластеризации, алгоритмы обнаружения ассоциативных связей между событиями, деревья решений, и некоторые методы machine learning.
Кратко процесс сбора и обработки информации выглядит так:
- аналитическая программа получает задачу;
- система собирает нужную информацию, одновременно подготавливая её: удаляет нерелевантную, очищает от мусора, декодирует;
- выбирается модель или алгоритм для анализа;
- программа учится алгоритму и анализирует найденные закономерности.
Как хранят Big Data
Чаще всего «сырые» данные хранят в data lake — «озере данных». При этом хранят в разных форматах и степенях структурированности:
- строки и колонки из БД — структурные;
- CSV, XML, JSON-файлы, логи — полуструктурированные;
- документы, почтовые сообщения, pdf — неструктурированные;
- видео, аудио и изображения — бинарные.
Для хранения и обработки информации в data lake используют разные инструменты:
- Hadoop — платформа управления данными. Содержит один или несколько кластеров. Обычно используется для обработки, хранения и анализа больших объемов нереляционных данных: файлов журналов, записей интернет-трафика, данных датчиков, объектов JSON, изображений и сообщений в соцсетях.
- HPPC (DAS) — разработка LexisNexis Risk Solutions. Это суперкомпьютер, который обрабатывает информацию как в пакетном режиме, так и в режиме реального времени.
- Storm — фреймворк для обработки информации в реальном времени, разработан на Clojure.
Data lake — это не только хранилище. «Озеро» может включать в себя и программную платформу, например, Hadoop, кластеры серверов хранения и обработки данных, средства интеграции с источниками и потребителями информации и системы подготовки данных, управления и иногда инструментов машинного обучения. Также «озеро данных» можно масштабировать до тысяч серверов без остановки кластера.
Из озера информация поступает уже в «песочницы» — области исследования данных. На этом этапе разрабатываются сценарии для решения разных бизнес-задач.
Data lake чаще располагают в облаке, чем на собственных серверах. Например, 73% компаний используют облачные сервисы для работы с big data, если верить отчету «Обзор тенденций и проблем больших данных 2018 года». Для обработки big data нужны большие вычислительные мощности, а облачные технологии позволяют удешевить работу, поэтому компании прибегают к этим хранилищам.
Облачные технологии могут стать альтернативой собственному дата-сервису, потому что тяжело предсказать точную нагрузку на инфраструктуру. Если купить оборудование «про запас», то оно простаивает и приносит убытки. А если оборудование будет маломощным, то не хватит для хранения и обработки.
- Облако может хранить больше данных, чем физические серверы: место для хранения информации не закончится.
- Компания может создать собственную облачную структуру или взять в аренду мощности у провайдера.
- Облако экономически выгодно для компаний с быстро растущей нагрузкой или бизнесов, где часто тестируются различные гипотезы.
Как работают с большими данными
Когда данные получены и сохранены, их нужно проанализировать и представить в понятном для клиента виде: графики, таблицы, изображения или готовые алгоритмы. Из-за объема и сложности в обработке традиционные способы не подходят. С большими данными необходимо:
- обрабатывать весь массив данных (а это Петабайты);
- искать корреляции по всему массиву (в том числе скрытые);
- обрабатывать и анализировать информацию в реальном времени.
Поэтому для работы с big data разработаны отдельные технологии.
Технологии
Изначально это средства обработки неопределенно структурированных данных: СУБД NoSQL, алгоритмы MapReduce, Hadoop.
MapReduce — фреймворк для параллельных вычислений очень больших наборов данных (до нескольких Петабайт). Разработан Google (2004 год).
NoSQL (от англ. Not Only SQL, не только SQL). Помогает работать с разрозненными данными, решает проблемы масштабируемости и доступности с помощью атомарности и согласованности данных.
Hadoop — проект фонда Apache Software Foundation. Это набор утилит, библиотек и фреймворков, который служит для разработки и выполнения распределенных программ, работающих на кластерах из сотен и тысяч узлов. О нём уже говорили, но это потому, что без Hadoop не обходится практически ни один проект связанный с большими данными.
Также к технологиям относят языки программирования R и Python, продукты Apache.
Методы и средства работы с большими данными
Это дата майнинг, машинное обучение, краудсорсинг, прогнозная аналитика, визуализация, имитационное моделирование. Методик десятки:
- смешение и интеграция разнородных данных, например, цифровая обработка сигналов;
- прогнозная аналитика — использует данные за прошлые периоды и прогнозирует события в будущем;
- имитационное моделирование — строит модели, которые описывают процессы, как если бы они происходили в действительности;
- пространственный и статистический анализ;
- визуализация аналитических данных: рисунки, графики, диаграммы, таблицы.
Например, machine learning — это метод ИИ, который учит компьютер самостоятельно «думать», анализировать информацию и принимать решения после обучения, а не по запрограммированной человеком команде.
Алгоритмам обучения нужны структурированные данные, на основе которых компьютер будет учиться. Например, если играть с машиной в шашки и выигрывать, то машина запоминает только правильные ходы, но не анализирует процесс игры. Если оставить компьютер играть с самим собой, то он поймет ход игры, разработает стратегию, и живой человек начнет проигрывать машине. В этом случае она не просто делает ходы, а «думает».
Deep learning – отдельный вид machine learning, в ходе которого создаются новые программы, способные самостоятельно обучаться. И здесь используются искусственные нейронные сети, которые имитируют нейронные сети человека. Компьютеры обрабатывают неструктурированные данные, анализируют, делают выводы, иногда совершают ошибки и учатся — почти, как люди.
Результат deep learning применяют в обработке изображений, алгоритмах распознавания речи, компьютерных переводах и других технологиях. Картины, нарисованные нейросетями Яндекса, и остроумные ответы Алисы на ваши вопросы — результат deep learning.
Data Engineer
Это уже «человеческая» часть работы с большими данными. Data Engineer или инженер данных — это специалист по обработке данных. Он готовит инфраструктуру для работы и данные для Data Scientist:
- разрабатывает, тестирует и поддерживает базы данных, хранилища и системы массовой обработки;
- очищает и подготавливает данные для использования — создает пайплайн обработки данных.
После Data Engineer в дело вступает Data Scientist: создает и обучает предиктивные (и не только) модели с помощью алгоритмов машинного обучения и нейросетей, помогая бизнесу находить скрытые закономерности, прогнозировать развитие событий и оптимизировать бизнес-процессы.
Где применяют Big Data
Главный принцип big data — быстро дать пользователю информацию о предметах, явлениях или событиях. Для этого машины умеют строить вариативные модели будущего и отслеживать результаты, что полезно коммерческим компаниям.
Банки
Банковская сфера использует технологии big data для предотвращения мошенничества, оптимизации процессов и управления рисками. Например, ВТБ, Сбербанк или Тинькофф уже используют big data, чтобы проверять надежность заемщиков (скоринг), управлять персоналом и прогнозировать очереди в отделениях.
Сберу большие данные помогают точнее оценивать риск-профиль клиента, что в итоге снижает вероятность невозврата кредитов.
Тинькофф с помощью EMC Greenplum, SAS Visual Analytics и Hadoop анализирует риски, выявляет потребности клиентов, использует большие данные в скоринге, маркетинге и продажах.
ВТБ использует big data для принятия решений об открытии новых офисов. Банк создал собственную внутреннюю гео-аналитическую платформу. Методы машинного обучения позволили выявить спрос на банковские услуги в разных районах города.
Бизнес
Выбор стратегии развития бизнеса основывается на результатах анализа информации. Здесь big data поможет обработать гигантские объемы данных и выявить направление развития. При помощи результатов анализа можно выявить, какие продукты востребованы на рынке, повышать лояльность клиентов.
Гипермаркет Hoff применяет big data, чтобы формировать персональные предложения для клиентов.
Сервис CarPrice сокращает расходы путем оптимизации трафика: благодаря большим данным увеличилась скорость принятия решений пользователями, выросло качество сервиса.
Бренд Zarina увеличил выручку на 28%, персонализируя выдачу рекомендаций клиентам онлайн-магазина.
Здесь нельзя не сказать о Netflix. Персонализация — его основа. Сервис с миллионной аудиторией предлагает контент, который в 80% случаев опирается на пользовательский опыт зрителя и информацию из Facebook и Twitter. Для оптимизации выдачи используют поисковые запросы пользователя, историю просмотров, информацию о повторных просмотрах, паузах и перемотках. Для обработки данных Netflix использует Hadoop, Teradata и собственные решения (Lipstick и Genie).
Например, когда Netflix создавал «Карточный домик», то на основе анализа заказал сразу два сезона, а не только пилот. И сериал имел ошеломляющий успех: анализ данных показал, что зрители в восторге от актера Кевина Спейси и продюсера Дэвида Финчера.
Маркетинг
Big data дает большой инструментарий маркетологам. Анализ данных помогает выявить потребности покупателей, тестировать новые способы повышения лояльности и находить, какие продукты будут пользоваться спросом.
Например, сервис RTB помогает настроить ретаргетинг: кросс-канальный, поисковый и товарный. Так компании могут рекламировать товары не всем подряд, а только целевой аудитории.
Сервисы Crossss, Alytics, 1С-Битрикс BigData позволяют проводить сквозную аналитику, увеличивать средний чек, повышать конверсию рекламы, повышать персонализацию предложений. И все это с помощью больших данных.
Проблемы и перспективы Big Data
Проблемы — объемы информации, скорость обработки и неструктурированность.
Для хранения больших объемов данных нужны особые условия, а для скорости обработки нужны новые методы анализа. В мире пока нет достаточной практики накопления big data. При этом данные разрознены и порой недостоверны, что мешает эффективно решать бизнес-задачи.
Индустрия больших данных только набирает обороты и не хватает специалистов, например, Data Engineer, потому что этой профессии недавно еще не существовало.
Перспективы. Big data развивается: помогает распознать мошенничество в банках, рассчитать эффективность рекламных кампаний, порекомендовать фильм и даже поставить диагноз пациенту, исходя из собранного анамнеза. Больше других инвестируют в big data банки, процессное производство и компании из индустрии профессиональных услуг.
В 2016 году объем мирового рынка ПО, оборудования и сервисов в области бизнес-аналитики и работы с big data составил $130,1 млрд, из них $17 млрд — банковский сектор. Доля инвестиций от государственных органов и коммерческих компаний, измерялась примерно по 7,5%. В 2018 году выручка от продаж программ и услуг на мировом рынке в 2018 году составила $42 млрд, и рынок только растет.
Специалисты считают, что скоро технология будет использоваться в транспортной сфере, нефтедобыче, энергетике. IDC прогнозирует, что доходы, связанные с big data, к 2022 году перевалят за $260 млрд при ежегодном росте рынка в 11,9%. Крупнейшими сегментами рынка станут производственный сектор, финансы, здравоохранение, охрана окружающей среды и розничная торговля, по прогнозам Frost & Sullivan.
Развитие big data изменит нашу повседневность. Системы смогут анализировать ежедневные маршруты, частые заказы и регулярные платежи. Вероятно, в будущем технологии позволят автоматически оплачивать кредиты и коммунальные услуги, вызывать автомобиль от работы до дома, где на столе уже будет готов ужин из любимых блюд.
Источник