Традиционные реляционные базы данных не обладают гибкостью, необходимой для хранения широкого спектра типов данных, классические СУБД уже не позволяют эффективно обрабатывать поступающие объемы данных — стоимость бизнес-аналитики оказывается слишком высокой для большинства организаций. Стремительно развивающаяся платформа Hadoop изменила подход к обработке данных, позволяя хранить огромные их объемы, а технология MapReduce предоставляет средства для их параллельной обработки. Весте с тем на пути этих технологий имеется ряд препятствий, преодолеть которые можно за счет виртуализации.
Серверная виртуализация давно и прочно вошла в экосистему ЦОД — выгоды от ее применения прежде всего лежат в области сокращения капитальных и операционных затрат за счет создания унифицированной инфраструктуры, консолидации рабочих нагрузок, повышения эффективности эксплуатации инфраструктуры и уменьшения простоев информационных систем. Кроме того, виртуализация позволяет существенно сократить время реакции ИТ на запросы бизнеса. Однако насколько все это применимо к системам работы с Большими Данными, и кластерами Hadoop в частности? Не секрет, что Hadoop относится к «высоконагруженным» системам, и вероятный коэффициент консолидации при использовании виртуальной инфраструктуры может оказаться не столь высоким, как для других информационных систем. Тем не менее имеется ряд причин для того, чтобы развертывать кластеры Hadoop, используя инфраструктуру, виртуализированную при помощи vSphere.
- Консолидация платформы. Полновесная платформа для работы с Большими Данными, как правило, включает в себя распределенную файловую систему Hadoop (HDFS), ядро MapReduce, hBase, Pig, Hive, Sqoop и базу данных типа big-SQL на основе традиционной или распределенной реляционной СУБД, такой как Greenplum, для организации хранения и обработки квазиструктурированных данных. Компонентов достаточно много, поэтому разумно создать общую разделяемую платформу, поверх которой они и будут работать.
- Унификация аппаратных узлов. Виртуализация позволяет унифицировать все аппаратные узлы, устраняя необходимость в специализированном аппаратном обеспечении для управляющих сервисов. В базовом кластере Hadoop задействованы узлы четырех типов: Namenode, Jobtracker, Datanode и Secondarynamenode — причем часто функции Namenode и Jobtracker на одних и тех же серверах совмещаются, что позволяет уменьшить количество требуемых аппаратных конфигураций для базовых функций кластера до двух. Узел Namenode хранит дерево каталога файловой системы HDFS — именно к этому узлу обращаются клиенты файловой системы, когда требуется считать, записать, удалить или изменить файл, а Jobtracker служит для распределения заданий MapReduce на узлы Tasktracker. При этом для Namenode/Jobtracker рекомендуется использовать серверы с резервированием источников питания и производительной, надежной дисковой подсистемой. Кроме того, узлы Namenode потребляют больше оперативной памяти по сравнению с Datanode. В то же время узлы хранения данных, Datanode, менее требовательны к оперативной памяти и избыточности аппаратной конфигурации, но при этом должны комплектоваться емкими и недорогими дисками. Таким образом, если возникает необходимость развернуть множество кластеров Hadoop в виртуальной инфраструктуре, то благодаря унификации, достигаемой в виртуальной среде, совсем не обязательно устанавливать специализированные физические серверы для каждой из функций.
- Быстрое развертывание. Виртуализация позволяет за минуты развернуть кластер Hadoop благодаря API, входящему в состав платформы vSphere.
- Разделение ресурсов. Виртуализация позволяет создать единую платформу для всех приложений предприятия, поэтому можно гибко перераспределять ресурсы, выделяемые для работы кластеров Hadoop. Некоторым пользователям удобно запускать задания Hadoop в часы наименьшей загрузки на тех же узлах, которые предоставляют вычислительные ресурсы для производственных приложений компании, — меняя число виртуальных узлов кластера Hadoop, можно наращивать или же, наоборот, уменьшать размер кластера, реализуя гибкие сценарии использования ресурсов инфраструктуры.
- Высокая доступность. Для всего стека Hadoop можно реализовать высокую доступность, используя технологию vSphere HA для защиты всех компонентов кластера Hadoop, являющихся единой точкой отказа, включая корневые управляющие службы, HDFS Namenode, MapReduce Jobtracker. Так как платформа для работы с Большими Данными включает и другие службы, то важно обеспечить и их доступность — например, СУБД, хранящей метаданные (hBase), центрального планировщика пакетных заданий (Oozie или SpringBatch), базы HCatalog и других управляющих служб, входящих в дистрибутив Hadoop.
- Безопасность. Виртуализированная инфраструктура позволяет эффективно отделить узлы хранения HDFS от прочих компонентов кластера. Такая изоляция обеспечивает более высокий уровень безопасности, так как только авторизованные пользователи смогут получить доступ к содержимому HDFS по виртуальной сети.
- Реализация версионности. Каждый из кластеров построен на виртуальной платформе, поэтому ничто не мешает организовать на одних и тех же физических ресурсах одновременную работу множества кластеров, каждый со своей версией Linux и версией среды приложений Linux или Hadoop. В перспективе могут возникнуть задачи, связанные с миграцией на будущие версии Hadoop, и наличие возможности одновременной работы с общими наборами данных смешанного ландшафта Hadoop различных версий существенно упростит переход и поможет снизить риски при миграции.
Если предприятие приняло стратегическое решение о переходе от классической парадигмы ЦОД, подразумевающей разрозненность технологических участков и вертикальную интеграцию, к программно-конфигурируемому ЦОД (Software-Defined Data Center, SDDC), то наличие весьма существенного участка инфраструктуры, занимаемого Hadoop и не унифицированного в рамках программно-конфигурируемого ландшафта, станет препятствием в реализации этой стратегии. В этих условиях виртуализация Hadoop нужна обязательно.
Вместе с тем виртуализация Hadoop иногда сопровождается двумя распространенными заблуждениями относительно работы кластеров.
«В виртуальной среде Hadoop работает медленно». Однако тесты оценки производительности Hadoop в виртуальной среде, проведенные специалистами VMware, показали, что разница в производительности по сравнению с классической физической инфраструктурой составляет единицы процентов. Более того, в ряде случаев в виртуальной среде можно получить более высокую производительность кластера Hadoop благодаря особенностям масштабируемости самой платформы Hadoop и способности виртуальной платформы разделить один физический узел на несколько.
«vSphere не сможет функционировать без дорогой разделяемой системы хранения». Система vSphere работает как с локальной подсистемой хранения, так и с внешними, разделяемыми хранилищами, и хотя технология Hadoop изначально разрабатывалась для работы с локальными дисками, ничто не мешает разместить Hadoop на сети хранения данных. Главным недостатком такого подхода являются ограниченная масштабируемость и высокая стоимость хранения данных в сетях хранения (SAN). Если речь идет о кластере Hadoop в десяток узлов и десяток гигабайт данных, то такой кластер вполне можно целиком разместить в SAN. Кластеры большего масштаба требуют использования локальных дисков серверов как для получения наибольшей производительности, так и для минимизации стоимости гигабайта хранимых данных. Для VMware vSphere Big Data Extensions рекомендуется смешанная конфигурация подсистемы хранения данных, в которой для хранения образов ОС и других виртуальных машин используется система с разделяемым доступом, а для виртуальных машин узлов HDFS — локальные диски физических серверов, на которых разворачивается виртуальная инфраструктура. Такой подход обеспечивает необходимый уровень производительности и отказоустойчивости и при этом минимизирует стоимость хранения данных в виртуализированном кластере Hadoop. Решение VMware vSphere Big Data Extensions позволяет автоматизировать и упростить задачи, связанные с дисковой подсистемой, за счет встроенной поддержки хранилищ данных как на локальных дисках серверов виртуализации, так и на разделяемом хранилище.
Решение VMware vSphere Big Data Extension выросло из проекта с открытым кодом Serengeti и позволяет автоматизировать процесс развертывания кластеров Hadoop в виртуальной среде. Нынешняя версия VMware vSphere Big Data Extension поддерживает ApacheHadoop 1.2 (Pivotal HD, Cloudera Distribution 4.2 и 4.3, Greenplum HD 1.2, MapR Distribution for Hadoop 2.1.3 и Hortonworks Data Platform 1.3.Apache), содержит оптимизаторы работы с ресурсами виртуальных машин и восстановления после отказов. В решении используется механизм vSphere HA для защиты управляющих узлов Hadoop, имеются служба развертывания дистрибутива ApacheHadoop и шаблоны виртуальных машин, позволяющие автоматизировать развертывание и конфигурирование кластеров Hadoop.
Виртуализация позволяет разместить несколько узлов кластера Hadoop на одном физическом сервере, и все виртуальные узлы могут оказаться на одном домене, что нежелательно при сбоях. Классическая технологическая модель Hadoop «не знает», что узлы находятся на одном и том же сервере, поэтому для избежания этой ситуации при описании топологии кластеров используются такие понятия, как Datacenter, Rack или Host, а кластер реплицирует данные между узлами таким образом, чтобы обеспечить отказоустойчивость кластера — на другой хост и на другую стойку.
Достаточно ли механизмов избыточности, заложенных в Hadoop, для обеспечения бесперебойной работы кластеров и ассоциированных сервисов, в том числе аналитических? Пригодны ли те средства, которые для этого предлагает VMware, в связке с Hadoop? Технология vSphere HA позволяет реализовать автоматический перезапуск остановившегося сервиса, причем это относится не только к перезапуску виртуальной машины при аварийной остановке физического сервера, но и к возможности осуществлять мониторинг работы приложения внутри виртуальной машины и автоматически перезапускать эту виртуальную машину при остановке приложения. Тем самым защищаются критичные сервисы от сбоев, связанных с неисправностью аппаратного обеспечения, сбоев ОС и приложения. Подсистема vSphere Fault Tolerance обеспечивает непрерывное дублирование виртуальной машины таким образом, что при выходе из строя физического сервера в кластере vSphere работа виртуальной машины вообще не останавливается. Дело в том, что в кластере Hadoop есть несколько сервисов, являющихся единой точкой отказа: NameNode, Jobtracker, база метаданных Hive и любые управляющие серверы, такие как Ambari или Cloudera CMS. Выход из строя этих узлов может ухудшить работу кластера и привести к остановке аналитических сервисов, которые работают с данными, хранящимися в кластере, так как серверы CMS или HCatalog MetaDB не дублируются в рамках базовых механизмов резервирования Hadoop, в отличие от тех же узлов Datanode.
***
Виртуализация Hadoop позволяет быстрее внедрить на предприятии решения для хранения и обработки Больших Данных, оптимизировать задачи, связанные с управлением жизненным циклом кластеров Hadoop, и обеспечить их бесперебойную работу.
Владимир Ткачев (vtkachev@vmware.com) — технический директор VMware в России и СНГ (Москва).