- Big Data от А до Я. Часть 1: Принципы работы с большими данными, парадигма MapReduce
- История вопроса и определение термина
- Принципы работы с большими данными
- MapReduce
- Примеры задач, эффективно решаемых при помощи MapReduce
- Word Count
- Обработка логов рекламной системы
- Резюме
- От Hadoop до Cassandra: 5 лучших инструментов для работы с Big Data
- Инструменты для анализа данных
- 1. Apache Cassandra
- 2. Apache Hadoop
- 3. ElasticSearch
- 4. Presto
- 5. Talend
- Заключение
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 и о том, какими инструментами и техниками можно обходить эти ограничения.
Спасибо за внимание, готовы ответить на ваши вопросы.
Источник
От Hadoop до Cassandra: 5 лучших инструментов для работы с Big Data
Перед вами перевод статьи из блога Seattle Data Guy. В ней авторы выделили 5 наиболее популярных ресурсов для обработки Big Data на текущий момент.
Сегодня любая компания, независимо от ее размера и местоположения, так или иначе имеет дело с данными. Использование информации в качестве ценного ресурса, в свою очередь, подразумевает применение специальных инструментов для анализа ключевых показателей деятельности компании. Спрос на аналитику растет пропорционально ее значимости, и уже сейчас можно определить мировые тенденции и перспективы в этом секторе. Согласно мнению International Data Corporation, в 2019 году рынок Big Data и аналитики готов перешагнуть порог в 189,1 миллиарда долларов.
Инструменты для анализа данных
Инструменты для анализа данных — это ресурсы, которые поддерживают функцию оперативного сбора, анализа и визуализации данных. Они полезны для любой компании, которая уделяет внимание потребительским предпочтениям, данным, рыночным трендам и т. д. Сегодня набирают популярность многие эффективные и общедоступные открытые ресурсы, что усложняет выбор самой успешной платформы. Возможностей для анализа данных сейчас очень много, но хочется найти оптимальный вариант.
В мире информационной аналитики автоматическим сбором, обработкой и анализом данных занимаются как крупные компании, так и небольшие. Чтобы помочь вам выбрать подходящую платформу, мы составили список из 5 топовых аналитических инструментов. Это лучшие продукты, которые существуют на сегодняшний день в этой сфере. Оценивались они по следующим критериям:
- функциональность,
- легкость изучения (и поддержка со стороны комьюнити),
- популярность.
С этой подборкой вам будет проще подобрать оптимальный аналитический инструмент для вашей деятельности. Итак, вот 5 наиболее популярных ресурсов для обработки Big Data на текущий момент:
- Apache Cassandra
- Apache Hadoop
- Elasticsearch
- Presto
- Talend
1. Apache Cassandra
Платформа Apache Cassandra, разработанная в 2008 году Apache Software Foundation, представляет собой бесплатный и доступный любому пользователю инструмент для управления базой данных. Apache Cassandra распространяется и работает на основе NoSQL. Управление данными осуществляется через кластерные формы, соединяющие несколько узлов в центрах обработки многокомпонентных данных. В терминологии NoSQL инструмент Apache Cassandra также обозначен как «столбцовая база данных».
В первую очередь, эта система востребована в приложениях для Big Data, которые работают с актуальными данными, например, в сенсорных устройствах и социальных сетях. Кроме того, Cassandra использует децентрализованную архитектуру, которая подразумевает, что функциональные модули, такие как сегментирование данных, устранение отказов, репликация и масштабирование, доступны по отдельности и работают в цикле. Более подробную информацию можно узнать в документации Apache Cassandra.
Ключевые характеристики Apache Cassandra:
- Возможность функционирования на не очень мощном оборудовании.
- Архитектура Cassandra, которая построена на основе технологии Dynamo от Amazon и реализует систему базы данных с использованием ключей.
- Язык запросов Cassandra.
- Развернутое распределение и высокая масштабируемость применения.
- Отказоустойчивость и децентрализованная система.
- Оперативная запись и считывание данных.
- Настраиваемая совместимость и поддержка фреймворка MapReduce.
Скачать: http://cassandra.apache.org/download/
2. Apache Hadoop
Apache Hadoop представляет собой общедоступный аналитический инструмент для распределенного хранения и обработки больших пакетов данных. Кроме того, Apache Hadoop предоставляет услуги для доступа к данным с помощью набора утилит, которые позволяют выстроить сеть из нескольких компьютеров. Внутренняя структура Apache Hadoop лояльна к поддержке крупных компьютерных кластеров. Более подробную информацию можно узнать в документации Apache Hadoop.
Ключевые характеристики Apache Hadoop:
- Платформа с высокой масштабируемостью для анализа данных на уровне петабайта.
- Возможность хранить данные в любом формате и парсить при чтении (на выбор есть структурированные, частично структурированные и неструктурированные форматы).
- Редкий отказ узлов в кластере. Но даже если это происходит, система автоматически заново воспроизводит данные и переадресовывает остаточные данные.
- Возможность взаимодействовать с другой приоритетной платформой анализа данных. Использование не только NoSQL, но и пакетов, диалогового SQL или доступа с низким значением задержки для бесперебойного процесса обработки данных.
- Экономичное решение, так как открытая платформа функционирует на сравнительно недорогом оборудовании.
Скачать: https://hadoop.apache.org/releases.html
3. ElasticSearch
Elasticsearch — это инструмент на основе JSON для поиска и анализа Big Data. Elasticsearch предоставляет децентрализованную библиотеку аналитики и поиск на основе архитектуры REST по решенным вариантам использования. Также платформа Elasticsearch проста в управлении, в высокой степени надежна и поддерживает горизонтальную масштабируемость. Более подробную информацию можно узнать в документации Elasticsearch.
Ключевые характеристики Elasticsearch:
- Сборка и поддержка программ-клиентов на нескольких языках, таких как Java, Groovy, NET и Python.
- Интуитивно понятный API для управления и мониторинга данных, который обеспечивает полный контроль и наглядность.
- Возможность комбинировать несколько видов поиска, включая геопоиск, поиск по метрикам, структурированный и неструктурированный поиск и т. д.
- Использование стандартного API и формата JSON на основе архитектуры REST.
- Расширенные возможности при анализе данных благодаря машинному обучению, параметрам мониторинга, предоставления отчетов и безопасности.
- Актуальная аналитика и параметры поиска для обработки Big Data с помощью Elasticsearch-Hadoop.
Скачать: https://www.elastic.co/downloads/elasticsearch
4. Presto
Продукт Facebook Presto выделяется за счет стабильной скорости обработки коммерческих данных. Presto функционирует в качестве децентрализованной библиотеки запросов на основе SQL, которая может отлично взаимодействовать с Hadoop, MySQL и другими ресурсами. Для работы с совместными аналитическими запросами по отношению к различным источникам информации Presto использует децентрализованную открытую схему. Система Presto также предоставляет качественную интерактивную аналитику, недаром ее считают одним из лучших общедоступных инструментов для анализа Big Data. Более подробную информацию можно узнать в документации Presto.
Ключевые характеристики Presto:
- Адаптивная многопользовательская система, поддерживающая одновременное выполнение нескольких операций с памятью машины, операций ввода/вывода (I/O) и запросов с интенсивной вычислительной нагрузкой на CPU.
- Обеспечение оптимизации для достижения высокой производительности, включая такую важную опцию, как генерация кода.
- Возможность расширения и дальнейшей интеграции для создания нескольких кластеров.
- Различные настройки и конфигурации для поддержания многочисленных вариантов использования с несколькими ограничениями и параметрами производительности.
- Возможность комбинировать в одном запросе данные из множества источников и организовывать анализ Big Data.
- Поддержка стандартов ANSI SQL (в дополнение к ARRAY, JSON, MAP и ROW).
Скачать: https://prestodb.github.io/download.html
5. Talend
Talend считается одним из представителей нового поколения инструментов в сфере Big Data и облачной интеграции. Talend остается открытой платформой, которая предлагает свой способ автоматической и упрощенной интеграции Big Data. Среди дополнительных решений от Talend стоит отметить проверку качества данных, управление данными и генерацию собственного кода с помощью графического мастера. Более подробную информацию можно узнать в документации Talend.
Ключевые характеристики Talend:
- Повышение коэффициента «время-эффективность» для планов с участием Big Data.
- Agile DevOps для ускоренной обработки Big Data.
- Упрощение работы Spark и MapReduce за счет генерации собственных кодов.
- Более качественные данные благодаря машинному обучению и обработке информации на естественном языке.
- Упрощение процессов ELT (Extract, Load и Transform) и ETL (Extract, Transform и Load) для Big Data.
- Оптимальная настройка всех процессов в DevOps.
Скачать: https://www.talend.com/download/
Заключение
Миром правит информация. Чтобы стать лидером, компании необходимо отслеживать данные и уметь правильно с ними работать. Если вы планируете укрепить свои позиции, выявляя потребительские предпочтения, рыночные тренды, эффективные бизнес-модели и будущие перспективы, то следует пристально рассмотреть передовые инструменты для анализа данных.
Не стоит упускать из внимания статистические данные вашей деятельности и недооценивать их значение. Также важно понимать трафик ваших коммерческих данных. Воспользовавшись одним из представленных выше аналитических инструментов (или же любым другим), вы получите много новой информации и сможете значительно увеличить свои шансы на успех. Поэтому, чтобы двигаться в верном направлении, не забывайте о ваших данных, анализируйте их, работайте с ними и берите на вооружение полученный результат.
Источник