Дуг Каттинг: «Я призываю не бояться внедрять Hadoop». Источник: Doug Cutting/plus.google.com |
Но так ли это? Дуг Каттинг, создатель Hadoop и основатель проекта Apache Hadoop, а также главный архитектор компании Cloudera, уверен, что у Hadoop есть будущее не только в качестве системы пакетной обработки.
«Конечно, пакетная обработка важна, — полагает Каттинг. — Когда происходит перенос огромных объемов данных и требуется их все анализировать, интерактивная обработка не подходит. Однако, думаю, пользователи бы высоко оценили сочетание пакетных и оперативных вычислений. Уверен, что Hadoop станет ядром систем обработки данных, которыми будут массово пользоваться на предприятиях».
Текущее положение дел
В ходе своего выступления на недавней конференции O'Reilly Strata + Hadoop World Каттинг поделился соображениями о стеке Hadoop и перспективах его развития: «Hadoop известен как механизм пакетных вычислений, и именно с такого механизма мы начали разработку, создав MapReduce. Это прекрасный инструмент с несложными принципами программирования, который нашел множество применений. Выпущено несколько книг, посвященных всевозможным алгоритмам на MapReduce».
MapReduce — это созданная в компании Google модель программирования, позволяющая выполнять параллельную пакетную обработку массивных наборов данных с использованием распределенных вычислений. MapReduce разбивает входные данные на множество малых подзадач, которые распределяются между узлами для параллельной обработки. Затем система собирает все ответы воедино и выдает результат.
«MapReduce отличается высокой эффективностью, — продолжил Каттинг. — Система обрабатывает данные 'на месте', не копируя их туда-сюда. Кроме того, это платформа, подходящая для совместного использования. Создание распределенной системы — это сложный процесс, отнимающий немало времени. Благодаря существованию MapReduce не нужно реализовывать такую систему снова и снова. MapReduce доказала свою действенность и надежность. На ее основе разработано множество новых инструментов, например, Pig и Hive. Но конечно же, это платформа не только для пакетных вычислений. У нее гораздо более широкий круг применений, я уверен».
Определяющие характеристики Hadoop
Каттинг перечислил характеристики, определяющие, по его мнению, Hadoop сегодня, а также указал на другие «атрибуты стиля» платформы.
Прежде всего, полагает Каттинг, платформа Hadoop отличается своей масштабируемостью. Система прекрасно работает с небольшими наборами данных, целиком хранимыми в оперативной памяти, но может масштабироваться в огромных пределах, чтобы обрабатывать гигантские срезы данных.
«Важное для масштабируемости свойство, которое нечасто упоминают, это доступность по цене, — полагает Каттинг. — Hadoop ориентирована на стандартное оборудование, чтобы дать возможность недорогого масштабирования: например, вы можете сэкономить с Hadoop, купив на порядок более дешевые системы хранения».
Не менее важно и то, по мнению Каттинга, что Hadoop разрабатывается в открытых кодах.
«Программные продукты с открытым кодом очень доступны по цене, — добавляет он. — Базовая платформа Hadoop, для которой можно создавать приложения, бесплатна. Вы можете платить поставщикам дистрибутивов за дополнительные услуги и функции, но это не тот случай, когда вам придется платить каждый год, не получая при этом ничего принципиально нового. Поставщики будут заботиться о том, чтобы заработать ваше доверие, и для этого им придется постоянно предлагать вам что-то ценное».
Существуют и другие элементы, определяющие стиль Hadoop, продолжил Каттинг: «Hadoop следует принципу, согласно которому данные при загрузке не нужно стискивать рамками строгой схемы. Их можно сохранить как есть, а затем, по мере использования, уже проецировать на различные схемы. Мы называем это 'схемой при считывании' (schema on read). Еще, если говорить о Больших Данных, часто само наличие большего их объема позволяет эффективнее решить вашу задачу, чем более умный алгоритм. Таким образом, часто лучше потратить больше времени на сбор данных, чем оптимизировать ваш алгоритм на меньшем срезе. Это как с цифровыми изображениями. Если нужно лучше разобрать, что изображено на картинке, то чем больше ее разрешение, тем больше пользы принесет масштабирование».
HBase — пример системы вычислений реального времени на основе Hadoop
Пакетная обработка, полагает Каттинг, не является определяющей характеристикой Hadoop. В подтверждение он приводит пример Apache HBase, популярной нереляционной базы данных с открытым кодом, которая создана по образу Google BigTable и является частью стека Hadoop. HBase — это система оперативных вычислений, а не пакетной обработки.
«HBase размещает и извлекает индивидуальные значения в интерактивном режиме, — поясняет Каттинг, — хотя поддерживает и пакетную обработку. База пользуется файловой системой HDFS, как и остальные компоненты стека. И думаю, именно это обеспечило ей популярность — она интегрирована в общую платформу. Это не какая-то отдельная система, с которой надо организовывать обмен данными. Она делит и другие особенности стека: средства обеспечения готовности, безопасности, восстановления после аварий. Благодаря этому пользователи могут держать только одну копию своих данных и всего один экземпляр общего стека».
В поисках «святого Грааля»
Но если пакетная обработка — не определяющая характеристика Hadoop, значит платформа может стать системой более общего назначения. Какой будет система, и как пойдет ее развитие?
«Есть ряд особенностей, которые мы бы хотели видеть в идеальной системе обработки Больших Данных, — поясняет Каттинг. — Конечно, мы хотим, чтобы это была платформа с открытым кодом, работающая на стандартном оборудовании. Необходима также линейная масштабируемость: если вам надо сохранить на порядок больше данных, вы просто покупаете достаточное количество оборудования, и система сразу начинает работать, независимо от того, насколько вырос ваш набор данных».
То же касается быстродействия. Если требуется более высокая скорость пакетной обработки или меньшая задержка, для этого должно быть достаточно просто увеличить мощность оборудования. Аналогично и с интерактивными запросами: при наращивании мощности оборудования должно быть соответствующее увеличение быстродействия и пределов объема обрабатываемых данных.
«Есть и много других вещей, которые хотелось бы реализовать, — добавляет Каттинг. — Это сложные транзакции, соединения и иные технологии, которых сейчас у платформы нет. Обычно считается, что в этой платформе их и не будет, то есть если вы переходите на платформу Больших Данных, от чего-то придется навсегда отказаться».
По плану Google
По словам Каттинга, путь к внедрению новых элементов в стек Hadoop указала Google.
«Google дала нам карту, — утверждает он. — И теперь мы знаем, куда идти. Вначале компания опубликовала доклады по системам GFS и MapReduce, которые мы быстро воспроизвели в Hadoop. На протяжении ряда лет Google сделала серию публикаций, которые во многих отношениях вдохновили нас на создание нашего стека с открытым кодом. Язык Sawzall стал предшественником Pig и Hive, по образцу BigTable создана HBase, и так далее. А в этом году меня очень обрадовал выход доклада Google под названием Spanner — о глобально распределенной базе данных, позволяющей выполнять многотабличные транзакции. Уверен, многие не ожидали, что нечто подобное появится в ближайшем времени, но теперь благодаря этой публикации становится ясно, что предела возможностям платформы Больших Данных практически нет».
База данных Spanner, поясняет Каттинг, построена на довольно сложной технологии, так что не стоит рассчитывать, что она в скором времени появится в Hadoop. Но она прокладывает маршрут к «святому Граалю», полагает он. Еще одним большим шагом в этом направлении стал Impala, новый механизм баз данных, на днях представленный компанией Cloudera. Он позволяет опрашивать срезы данных, хранимые в HBase, с помощью SQL.
«С помощью Impala можно в оперативном режиме не только помещать и извлекать значения, но и выполнять запросы, — поясняет Каттинг. — Impala тоже создан по следам кое-каких наработок Google, опубликованных несколько лет назад, и это великолепная технология. Благодаря Impala появилась ценнейшая новая функция, позволяющая создавать больше приложений для Hadoop. Кроме того, новый механизм доказывает, что наша платформа не является нишевой. Hadoop — не точечная технология, а платформа общего назначения».
«Теперь мы знаем, куда двигаться, — заключает Каттинг, — и более того, знаем, как именно добиться своих целей. Поэтому я призываю не бояться внедрять Hadoop сейчас и быть уверенными в том, что от платформы можно ожидать большего в дальнейшем. Мы без сомнения продолжим развивать ее».