[MongoDB, Big Data, Hadoop] Hadoop или MongoDB: что использовать для Big Data? (перевод)

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
14-Июл-2021 00:31


Ни одно обсуждение Big Data не будет полным без упоминания Hadoop и MongoDB: двух наиболее популярных инструментов, доступных сегодня. Из-за обилия информации по ним, в том числе об их преимуществах и недостатках, не всегда легко сделать правильный выбор. Каждый из них силен в своей области, но что подойдет вам и вашей организации? Эта статья поможет сделать правильный выбор.Что такое HadoopHadoop — это набор программ с открытым исходным кодом, предназначенный для обработки Big Data. В его состав входят несколько компонент, каждый из которых выполняет определенную задачу, связанную с аналитикой Big Data.В состав Hadoop входят:
  • Distributed File-System
  • MapReduce
  • Hadoop Common
  • Hadoop YARN
Distributed File-SystemЭто один из двух наиболее важных компонентов Hadoop. Distributed File-System (DFS, распределенная файловая система) важна, потому что:
  • Позволяет легко хранить и обмениваться данными, а также получать к ним доступ через обширную сеть связанных серверов.
  • Это позволяет работать с данными так, как будто вы работаете с локальным хранилищем.
  • В отличие от других вариантов хранилищ, таких как расшаренные сетевые папки, у вас остается доступ к данным даже в офлайне.
  • Hadoop DFS не ограничивается ОС хоста. Вы можете получить к ней доступ с любого компьютера или поддерживаемой ОС.
MapReduceMapReduce — второй из двух наиболее важных компонентов, позволяющий работать с данными. Он выполняет две задачи:
  • Map (отображение) — преобразование данных в формат, который можно легко анализировать. Это достигается путем фильтрации и сортировки.
  • Reduce (свертка) — следует за map. При reduce выполняются математические операции (например, подсчет количества клиентов старше 21 года) на данных map.
Hadoop CommonHadoop Common — это набор инструментов (библиотек и утилит), которые используются тремя другими модулями Hadoop. Здесь содержатся скрипты и модули, необходимые для запуска Hadoop, а также исходный код, документация и раздел, посвященный участию в сообществе Hadoop.Hadoop YARNЭто архитектурный фреймворк для управления ресурсами и планирования заданий. YARN предоставляет разработчикам эффективный способ разработки приложений и управления большими наборами данных. С помощью Hadoop YARN можно реализовать интерактивную, потоковую и пакетную обработку.Почему стоит использовать Hadoop?Теперь, когда мы знаем, что такое Hadoop, следующий вопрос, на который стоит ответить — ПОЧЕМУ Hadoop. Мы выделили шесть преимуществ Hadoop.
  • Можно быстро сохранять и обрабатывать большие объемы разнообразных данных. Объемы данных, генерируемые Интернетом вещей и социальными сетями, постоянно растут. Это делает Hadoop ключевым инструментом для работы с подобными источниками данных большого объема.
  • Distributed File-System обеспечивает Hadoop высокой вычислительной мощностью, необходимой для быстрых вычислений.
  • Hadoop обрабатывает сбои оборудования, перенаправляя задания на другие узлы и автоматически поддерживая несколько копий данных.
  • Можно хранить разнообразные структурированные или неструктурированные данные без предварительной обработки (включая изображения и видео).
  • Фреймворк работает на обычных серверах, которые более эффективны с точки зрения затрат, чем специальные выделенные хранилища.
  • При увеличении объема обрабатываемых данных можно добавлять узлы, что позволяет системе масштабироваться. С точки зрения администрирования это делается очень просто.
Ограничения HadoopКаким бы хорошим ни был Hadoop, у него есть ряд ограничений. Среди них:
  • MapReduce хорошо подходит для обработки простых запросов. Интерактивные и итеративные задачи решаются не так эффективно, как независимые, требующие простой сортировки (sort) и тасовки (shuffle). Итеративные задачи решаются в несколько отображений (map) и сверток (reduce). В результате между этапами Map и Reduce создается множество файлов, что делает его неэффективным при сложной аналитике.
  • Не так уж и много Java-программистов, обладающих необходимыми знаниями MapReduce. Это привело к созданию SQL-решений поверх Hadoop, так как программистов, владеющих SQL, найти проще.
  • Hadoop — сложное приложение, требующее знаний по настройке его безопасности. Также в Hadoop отсутствует шифрование хранилищ и каналов связи.
  • В Hadoop нет полного набора инструментов, необходимых для обработки метаданных, управления, очистки и обеспечения качества данных.
  • Сложная архитектура делает Hadoop непригодным для обработки небольших объемов данных, поскольку он не может эффективно работать с произвольным чтением небольших файлов.
  • Hadoop почти полностью написан на Java — платформе которая часто подвергается атакам со стороны киберпреступников. Поэтому есть значительные риски безопасности.
Что такое MongoDBMongoDB — это гибкая и масштабируемая документноориентированная NoSQL СУБД, которая поддерживает различные модели данных и хранит данные в наборах ключ-значение. Она была разработана как решение для работы с большими объемами распределенных данных, которые не могут эффективно обрабатываться в реляционных моделях, содержащих строки и таблицы. Как и Hadoop, MongoDB бесплатная и с открытым исходным кодом.
  • Ключевые особенности MongoDB:
  • Богатый язык запросов, поддерживающий текстовый поиск, агрегирование и CRUD-операции.
  • По сравнению с реляционными базами данных требует меньше операций ввода/вывода из-за встраиваемых моделей данных (embedded data model). Для ускорения выполнения запросов есть поддержка индексов.
  • Отказоустойчивость обеспечивается через репликацию наборов данных. Репликация обеспечивает хранение данных на нескольких серверах, что создает избыточность и высокую доступность.
  • Поддержка механизма шардинга для горизонтального масштабирования. Позволяет с меньшими затратами обрабатывать увеличивающийся объем данных (по сравнению с вертикальными способами масштабирования).
  • Поддержка нескольких движков хранения, что позволяет выбирать оптимальный в зависимости от типа рабочей нагрузки.
Виды движков хранения:
  • WiredTiger
Используется по умолчанию для версий 3.2 и выше. Справляется с большинством типов рабочих нагрузок и включает в себя возможности создания контрольных точек, сжатия и конкурентные операции при записи на уровне документа. Последнее позволяет редактировать документы одновременно нескольким пользователям.
  • In-Memory Storage Engine
Этот движок хранит документы в оперативной памяти, а не на диске, что повышает предсказуемость задержек при обработке данных.
  • MMAPv1 Storage Engine 
Это самый старый движок и работает только в версии 3.0 и более ранних. Он хорошо справляется с рабочими нагрузками, включающих массовые обновления, чтения и вставки.Почему стоит использовать MongoDB?Сегодня бизнесу требуется быстрый и гибкий доступ к данным, чтобы понимать текущую ситуацию и принимать наиболее эффективные решения. MongoDB лучше подходит для решения этих новых задач, связанных с данными. Аргументы в пользу использования MongoDB сводятся следующим:
  • При использовании реляционных баз данных вам потребуется использовать несколько таблиц. Mongo позволяет представить данные в виде одного объекта, что особенно удобно для неизменяемых данных.
  • Язык запросов, используемый MongoDB, поддерживает динамические запросы.
  • Схема в MongoDB неявная, т.е. вам не нужно заранее ее проектировать. Это упрощает представление наследования и полиморфизма в базе данных.
  • Легко реализовать горизонтальное масштабирование.
Ограничения MongoDBХотя MongoDB предоставляет отличные возможности для решения многих проблем, связанных с Big Data, она также имеет ряд ограничений, таких как:
  • Необходимо вручную обрабатывать соединения (JOIN), что может привести к снижению производительности.
  • Следствием отсутствия JOIN является также то, что MongoDB потребляет много памяти, поскольку все файлы должны быть считаны с диска в память.
  • Размер документа не может быть больше 16 МБ.
  • Вложенность ограничена и не может превышать 100 уровней.
Что использовать для Big Data: MongoDB или Hadoop?Можно посмотреть, что используют крупные компании, и попробовать последовать их примеру. Например, eBay, SAP, Adobe, LinkedIn, McAfee, MetLife и Foursquare используют MongoDB. С другой стороны, Microsoft, Cloudera, IBM, Intel, Teradata, Amazon, Map R Technologies — известные пользователи Hadoop.В конечном счете и Hadoop и MongoDB являются популярными решениями для обработки Big Data. Хотя у них много общего (например, открытый исходный код, NoSQL, отсутствие схемы и Map-Reduce), их подход к обработке и хранению данных отличается. Именно эти различия помогут нам сделать выбор между Hadoop и MongoDB.Ни один, ни другой вариант не решит все ваши проблемы. Теорема CAP помогает выявить узкие места в приложениях, указывая на то, что распределенные системы могут оптимально работать только на двух из трех фронтов: согласованность (consistency), доступность (availability) и устойчивость к разделению (partition tolerance). При выборе инструмента для работы с Big Data стоит выбирать систему с двумя наиболее важными для вас свойствами.Что насчет реляционных СУБД?И у Hadoop и у MongoDB есть преимущества по сравнению с традиционными реляционными системами управления базами данных (РСУБД), которые включают в себя параллельную обработку, масштабируемость, обработку больших объемов агрегированных данных, архитектуру MapReduce и экономичность (благодаря открытому исходному коду). Кроме того, обработка данных осуществляется на множестве узлов, кластерах, что позволяет экономить на стоимости оборудования.Однако в контексте сравнения их с РСУБД, у каждой из платформ есть некоторые преимущества перед другой. Обсудим их подробнее.Замена РСУБДMongoDB — это гибкая платформа, которая может стать подходящей заменой РСУБД. Hadoop не заменяет РСУБД, а скорее дополняет ее, помогая архивировать данные.Работа с памятьюMongoDB написана на C++, что позволяет ей эффективно работать с памятью. Hadoop — это набор программного обеспечения на основе Java, который предоставляет платформу для хранения, извлечения и обработки данных.Импорт и хранение данныхДанные в MongoDB хранятся в JSON, BSON или в двоичном виде, и все поля могут быть запрошены, проиндексированы, агрегированы или реплицированы за раз. Кроме того можно импортировать данные в форматах JSON или CSV. Hadoop поддерживает различные форматы данных, что устраняет необходимость преобразования данных при их обработке.Big DataMongoDB не проектировалась для работы с Big Data. Hadoop, с другой стороны, был создан исключительно для этой цели. Таким образом, последний отлично подходит для пакетной обработки и выполнения длительных ETL-заданий. Также с помощью Hadoop удобно обрабатывать логи из-за их большого размера и постоянного увеличения. Реализация MapReduce в Hadoop более эффективна, чем в MongoDB, что снова делает его более эффективным решением для анализа больших наборов данных.Обработка данных в реальном времениMongoDB лучше справляется с анализом данных в реальном времени, а также из-за своего формата хранения, более удобна при работе с данными на фронтенде. Кроме того, геопространственные индексы делают MongoDB идеальным решением для сбора и анализа GPS и географических данных в реальном времени. С другой стороны, Hadoop не очень хорош в обработке данных в реальном времени. Но если вы используете Hadoop SQL-подобные запросы в Hive, вы можете делать запросы намного быстрее и эффективнее, чем JSON.РезюмеУ каждой компании свои уникальные потребности и проблемы, поэтому универсального решения не существует. Выбирать Hadoop или MongoDB вы должны исходя из ваших требований. Но как только вы сделаете этот выбор, убедитесь, что вы и ваши коллеги хорошо разбираетесь в этих технологиях.
Материал подготовлен в рамках курса "MongoDB". Всех желающих приглашаем на открытый урок «Работа с геоданными в MongoDB используя Python». На уроке нам предстоит разобрать, как загрузить Geo-обьекты в MongoDB и получать их, а также отобразить их в браузере, используя Python. Также рассмотрим особенности работы Geo-индексов и соответствующие возможности MongoDB. РЕГИСТРАЦИЯ

===========
Источник:
habr.com
===========

===========
Автор оригинала: Simplilearn
===========
Похожие новости: Теги для поиска: #_mongodb, #_big_data, #_hadoop, #_mongodb, #_hadoop, #_big_data, #_geodannye (геоданные), #_python, #_blog_kompanii_otus (
Блог компании OTUS
)
, #_mongodb, #_big_data, #_hadoop
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 12-Май 00:05
Часовой пояс: UTC + 5