что не относится к инструментам хранения и обработки больших данных
Топ-17 инструментов для обработки больших данных
Apache Hadoop
Apache Hadoop является общепризнанным инструментом для анализа больших данных.
Был разработан Дугом Каттингом, и используется для сериализации данных с целью кодирования файлов Hadoop.
Cassandra
Распределенная система базы данных с открытым исходным кодом. Она была разработана, чтобы справляться с огромным количеством распределенных данных на всех стандартных серверах, предоставляя сервис высокой надежности. Cassandra относится к классу NoSQL-систем, которые изначально были созданы компанией Facebook. Ее используют многие организации, например, Netflix, Cisco и Twitter.
Drill
Распределенная система с открытым исходным кодом, предназначенная для осуществления интерактивного анализа большого массива данных. Она схожа с Dremel, разработанной Google, и принадлежит фонду Apache.
Elasticsearch
Поисковая система с открытым исходным кодом, основанная на Apache Lucene. Она разработана на Java, обеспечивает масштабируемый поиск, который служит основой приложений для обнаружения данных.
Flume
Фреймворк для заполнения Hadoop-данными с веб-серверов, серверов приложений и мобильных устройств. Он как водопровод между источниками информации и Hadoop.
HCatalog
Система централизованного управления метаданными и файлообменник Hadoop. HCatalog обеспечивает единое представление данных в кластерах Hadoop и предоставляет разнообразные инструменты, включая Pig и Hive, для обработки любых единиц данных, при этом нет необходимости знать, где физически хранятся данные в кластере.
Impala
Система обработки быстрых, интерактивных SQL-запросов больших данных, которые хранятся в HDFS или HBase. Impala использует те же самые метаданные, SQL-синтаксис (Hive SQL), драйвер ODBC и пользовательский интерфейс (Hue Beeswax), что и Apach Hive. В результате мы получаем знакомую и унифицированную платформу для пакетно-ориентированных или поступающих в режиме реального времени запросов.
Многие из сегодняшних NoSQL-баз данных хранят данные в формате JSON, что расшифровывается как «JavaScript Object Notation». Этот формат стал популярным среди веб-разработчиков.
Kafka
Распределенная брокер сообщений, который предлагает решение для управления всеми потоками данных и обработки этих данных на веб-сайте потребителя. Этот тип данных (число просмотров, запросы и другие пользовательские действия) является ключевым компонентом в современных социальных сетях.
MongoDB
NoSQL-база данных, ориентированная на документы, разработанна согласно концепции открытого исходного кода. MongoDB обеспечивает полной поддержкой индексов, гибкостью индексирования любого элемента и горизонтальной масштабированностью, не влияя на функционал.
Neo4j
Графовая база данных, которая может похвастаться улучшенной производительностью в 1000 раз или больше по сравнению с реляционной базой данных.
Oozie
Система управления бизнес-процессами, которая позволяет пользователям определять ряд заданий, написанных на разных языках, такие как Map Reduce, Pig и Hive. В дальнейшем они будут логично связаны один с другим. Oozie позволяет пользователям устанавливать зависимости.
Язык, базирующийся на Hadoop, разработанный Yahoo. Его относительно легко изучать, а также с ним возможны очень глубокие и очень длинные линии передачи данных.
Storm
Бесплатная система распределенных вычислений в режиме реального времени с открытым исходным кодом. Storm облегчает обработку потоков неструктурированных данных в режиме реального времени. Storm устойчив к сбоям и работает практически со всеми языками программирования, хотя обычно используется Java. Storm берет свое начало из семейства Apache, но сейчас он принадлежит Twitter.
Tableau
Инструмент визуализации данных, который фокусируется прежде всего на интеллектуальном анализе данных. Вы можете создавать карты, гистограммы, графики рассеяния и другое, не обладая навыками программирования. Недавно был выпущен веб-коннектор, который позволяет соединяться с базой данных или программным интерфейсом, тем самым позволяя получать визуальное отображение оперативных данных.
ZooKeeper
Сервис управления данными, который предоставляет централизованную конфигурацию и регистрацию имен с открытым кодом для больших распределенных систем.
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 году):
К перечисленным факторам часто добавляют еще два:
Примечание. Определения условны, потому что никто точно не знает, как определять big data. Некоторые западные эксперты даже считают, что термин дискредитирован, и предлагают от него отказаться.
Как собирают Big Data
Источниками могут быть:
Сбор. Технологии и сам процесс сбора данных называют дата майнингом (data mining).
Сервисы, с помощью которых проводят сбор — это, например, Vertica, Tableau, Power BI, Qlik. Собранные данные могут быть в разных форматах: текст, Excel-таблицы, SAS.
В процессе сбора система находит Петабайты информации, которая после будет обработана методами интеллектуального анализа, который выявляет закономерности. К ним относят нейронные сети, алгоритмы кластеризации, алгоритмы обнаружения ассоциативных связей между событиями, деревья решений, и некоторые методы machine learning.
Кратко процесс сбора и обработки информации выглядит так:
Как хранят Big Data
Чаще всего «сырые» данные хранят в data lake — «озере данных». При этом хранят в разных форматах и степенях структурированности:
Для хранения и обработки информации в data lake используют разные инструменты:
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 банки, процессное производство и компании из индустрии профессиональных услуг.
Развитие big data изменит нашу повседневность. Системы смогут анализировать ежедневные маршруты, частые заказы и регулярные платежи. Вероятно, в будущем технологии позволят автоматически оплачивать кредиты и коммунальные услуги, вызывать автомобиль от работы до дома, где на столе уже будет готов ужин из любимых блюд.