Технологии Big Data сегодня очень популярны, о чем говорит хотя бы то, что на текущий момент это наиболее часто встречающийся термин в IT-публикациях. Достаточно посмотреть на статистику таких известных поисковых систем, как Google или Yandex по словосочетанию «Big Data», и становится понятным, что так называемые «Большие Данные» действительно сейчас можно назвать одним из самых востребованных и интересных направлений развития информационных технологий.
Так в чем же секрет популярности этих технологий и что означает термин «Big Data»?
В первую очередь, под терминами «Big Data» или «Большие данные» скрывается огромный набор информации. Причем объем ее столь велик, что обработать такое количество данных обычными программными и аппаратными средствами становиться крайне сложно. Другими словами, Big Data – это проблема. Проблема хранения и обработки гигантских объемов данных.
Откуда берутся эти объемы? Давайте задумаемся, сколько информации генерирует каждый день каждый из нас. Мы разговариваем по телефону, пишем сообщения, ведем блоги, что-то покупаем, что-то фотографируем, что-то отсылаем своим друзьям, что-то получаем в ответ и т.д. и т.п. В конечном итоге речь здесь идет о гигабайтах информации. Все это оставляет свой след в информационном пространстве. Все это где-то хранится и как-то обрабатывается. В какой-то момент информации становится слишком много, и извлекать из нее пользу становится слишком сложно.
С другой стороны, большой объем информации – это только часть «айсберга». Здесь уместно вспомнить такое определение «Big Data», как «Volume, Velocity, Variety», что с одной стороны означает огромные объемы данных (о чем мы уже упомянули), а с другой — необходимость работать с информацией очень быстро. Например, время операции по проверке баланса на вашей карте при снятии наличных исчисляется в миллисекундах. Именно такие требования диктует рынок. Третья сторона вопроса – это разнообразие и неструктурированность информации. Все чаще и чаще приходится оперировать медиа контентом, записями в блогах, слабо структурированными документами и т.д.
Таким образом, когда мы говорим о Big Data, мы понимаем, что это связано с тремя аспектами: большим объемом информации, ее разнообразием или необходимостью обрабатывать данные очень быстро.
С другой стороны, под этим термином часто понимают совершенно конкретный набор подходов и технологий, призванных решить данные задачи. В основе одного из таких подходов лежит система распределенных вычислений, где для обработки данных используется не одна высокопроизводительная машина, а целая группа таких машин, объединенных в кластер.
Существует несколько подходов к построению систем, обеспечивающих распределенную обработку данных. Одним из наиболее популярных подходов является использование парадигмы MapReduce, согласно которой обработка данных разделяется на большое количество элементарных заданий, выполняемых на различных узлах кластера и, в конечном итоге, сводится в единый результат. Модель эта разработана компанией Google и позволяет обрабатывать петабайты данных с помощью компьютерных кластеров.
Сейчас парадигму MapReduce использует довольно большое количество различных проектов, а интерес к технологиям распределенных вычислений становиться выше и выше с каждым днем. В числе существующих реализаций описанной модели можно выделить проект Hadoop, находящийся в настоящий момент под управлением фонда Apache Software Foundation.
Проект Hadoop развивается с 2005 года и используется по всему миру, например, в таких гигантах как Amazon, Google, Facebook, и стремительно набирает популярность и у нас в России. Стоит отметить, что Hadoop — не единственная реализация парадигмы MapReduce. В Википедии вы можете найти ссылки не менее, чем на 15 проектов, так или иначе использующих этот подход.
Но с чем связана популярность и что именно дает использование такого подхода? Основным достоинством распределенных систем является их способность неограниченного увеличения производительности путем линейного масштабирования. Кроме того, не нужно забывать, что высокопроизводительный кластер может быть построен на low-end машинах, а значит его стоимость будет существенно ниже, чем стоимость аналогичного по мощности сервера. И третий, немаловажный, как мне думается момент — это надежность и отказоустойчивость системы. Благодаря тому, что кластер состоит из большого количества узлов, и система автоматически перераспределяет хранящиеся на них данные, при выводе из строя отдельно взятой или нескольких машин, риски потерять какую-либо информацию сведены к минимуму.
Неправильным с моей стороны было бы обойти вниманием и такую область технологий, как NoSQL базы данных. На мой взгляд, это второй существенный тренд, который часто связывают с технологиями Big Data.
И это происходит неспроста. NoSQL базы данных стали активно развиваться в виду того, обработка больших объемов данных с использованием традиционно популярных реляционных баз данных становится все более сложной и ресурсоемкой задачей. В то время, как стоимость аппаратных средств, необходимых для решения таких задач на реляционных СУБД все чаще и чаще ставит под сомнение эффективность такого подхода с точки зрения необходимых инвестиций.
Сам термин NoSQL подразумевает под собой применение подходов, отличных от привычных для нас реляционных СУБД, основанных на принципах ACID. В методологической основе NoSQL баз данных лежит принцип, гласящий что в распределённой системе невозможно одновременно обеспечить согласованность данных, доступность и устойчивость к расщеплению на изолированные части.
В виду этого, такие базы не фокусируются на обеспечении согласованности данных в пользу высокой доступности и устойчивости к разделению данных. Большинство из них организовано по принципу «ключ-значение», за счет чего достигаются высокие гибкость и скорость извлечения информации. С другой стороны, в силу своей инерционности NoSQL базы, как правило, не применяют для обработки быстро изменяющихся данных. А вот когда речь идет о необходимости быстро получить небольшую порцию информации из огромного объема данных, такое решение будет просто находкой.
Надо обратить особое внимание на то, что такие СУБД могут быть как распределенными, так и нераспределенными. В качестве примера распределенных баз класса NoSQL можно привести такие БД, как Cassandra, HBase, MongoDB, CouchDB, Riak, Scalaris или Voldemort. Что касается нераспределенных баз данных, то, на мой взгляд, применение нераспределенной NoSQL СУБД – это полумера. Дополнительный выигрыш в производительности мы сможем получить именно за счет масштабирования в распределенной системе. Хотя нельзя отрицать, что и эти решения имеют свой круг задач.
Нам остается понять, кому могут быть вообще интересны решения, для обработки больших объемов данных? Естественно, интерес порождается в тех индустриях, где есть эти объемы, есть и уже возникли сложности в их обработке. Примерами применения таких систем могут быть поисковые машины сети интернет, социальные сети, интернет-аукционы и пр. За пределами интернет-среды это могут быть банки и телекоммуникационные компании. Именно они, согласно опыту экспертов компании DIS Group, испытывают наибольшие трудности с обработкой накопленных за десятилетия гигантских объемов данных.
Давайте подведем итог: что же может привлекать в технологии Big Data корпоративного пользователя, и что технология распределенных вычислений может предложить бизнесу?
Прежде всего, она предлагает отлаженную в таких гигантах интернет-индустрии как Google, Yahoo и Facebook высокопроизводительную систему, способную оперировать данными терабайтного размера в режиме реального времени. Благодаря этим решениям, проблемы больших затрат времени на построение хранилищ данных, обработку плохо структурированной информации и большие расходы на аппаратное обеспечение уйдут в прошлое, а бизнес сможет в полной мере использовать все необходимые данные, накопленные в компании.
С другой стороны за счет использования при строительстве системы недорогого оборудования данные решения позволяют перераспределить финансирование и направить денежный поток на решение насущных нужд бизнеса, а не на содержание инфраструктуры самой же организации.