Apache Mesos

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 23:54, 21 декабря 2017.
Apache Mesos
Apache-Mesos-logo.jpg
Spark-mesos-completed-tasks.png
Разработчики: Apache Software Foundation
Постоянный выпуск: 1.4.0 / 18.09.2017
Состояние разработки: Active
Написана на: C++
Операционная система: Cross-platform
Тип ПО: Computer cluster management
Веб-сайт mesos.apache.org

Apache Mesos — это централизованная отказоустойчивая система управления кластером, разработанная для распределенных компьютерных сред c целью обеспечения изоляции ресурсов и удобного управления кластерами подчиненных узлов (mesos slaves). [Источник 1]
Является «сердцем» системы Mesosphere. Apache Mesos представляется как система с открытым исходным кодом, которая обеспечивает эффективную изоляцию ресурсов и совместное использование распределенных приложений или структур. [Источник 2]

Рис. 1 Абстракция узлов в Apache Mesos

История

Mesos образовался как исследовательский проект в Университете Калифорнии Бёркли (UC Berkeley Lab) аспирантов Бенджамина Хиндмана, Энди Конвинск и Матея Захария, а также профессор Иана Стоика. Студенты начали совместную работу над проектом в рамках курса по современным направлениям в компьютерных системах (Advanced Topics in Computer Systems), преподаваемых Дэвидом Куллером. Первоначально он был назван Nexus, но из-за конфликта с проектом другого университета, был переименован в Mesos.

Mesos был впервые представлен в 2009 году Энди Конвински на HotCloud '09. Позднее в 2011 году он был представлен в более зрелом состоянии в сообщении Матея Захария на USENIX симпозиуме по сетевым системам проектирования и реализации конференции о работе "Mesos: Платформа для распределенного совместного использования ресурсов в центре обработки данных" Бенджамина Хиндмана, Энди Конвински, Матея Захария, Али Годси, Энтони Д. Джозефа, Рэнди Каца, Скотта Шенкера, Иана Стоика.

Принцип работы

Рис. 2 Эффективность Mesos

В некотором смысле суть работы Apache Mesos противоположная традиционной виртуализации — вместо деления физической машины на множество виртуальных предлагается объединять их в одно целое, в единый виртуальный ресурс.

Mesos распределяет ресурсы CPU и памяти в кластере для задач в похожей манере, как ядро ​​Linux выделяет ресурсы железа между локальными процессами.

Если есть необходимость выполнить различные типы задач, можно выделить отдельные виртуальные машины (отдельный кластер) для каждого типа. Эти виртуальные машины, вероятно, не будут полностью загруженными и некоторое время будут простаивать, то есть не будут работать с максимальной эффективностью. Если же все виртуальные машины для всех задач объединить в единый кластер, можно повысить эффективность использования ресурсов и параллельно с тем повысить скорость их выполнения (если задачи краткосрочные или виртуальные машины не загружены полностью все время).

Кластер Mesos (с фреймворком к нему) способен пересоздавать отдельные ресурсы, в случае их падения, масштабировать ресурсы вручную или автоматически при определенных условиях и т.п.

Функции

Mesos обладает большим количеством функций:[Источник 3]

  • масштабируемость (до 10 000 нод);
  • изоляция ресурсов через Linux Containers;
  • эффективное планирование ресурсов CPU и памяти;
  • веб-интерфейс для мониторинга состояния кластера;
  • Apache ZooKeeper;
  • высокая доступность (High Availability) серверов.

Архитектура

Архитектура Apache Mesos состоит из демонов master и slave (то есть, ведущих и ведомых демонов) и фреймворка.

Краткий обзор этих компонентов и некоторых важных терминов:

  • Ведущий демон (или Master daemon) запускается на ведущем узле (или ноде) и управляет ведомыми демонами.
  • Ведомый демон (или Slave daemon) работает на ведущей ноде и выполняет задачи фреймворка.
  • Фреймворк (или приложение Mesos) состоит из планировщика, который совмещается с нодой master, чтобы получать офферы (resource offers) исполнителей (executors), запускающих задачи на нодах slave. Примерами фреймворков Mesos могут служить Marathon, Chronos и Hadoop.
  • Оффер (Offer) – это список доступных ресурсов CPU и памяти slave ноды. Все slave ноды отправляют офферы ноде master, который передает их доступным фреймворкам.
  • Задача (Task) — запланированная фреймворком единица работы, которая выполняется на ведомом узле. Задачей может быть что угодно, начиная с команды или скрипта bash и заканчивая SQL-запросами и процессами Hadoop.
  • Apache ZooKeeper (или ZK): программное обеспечение, которое используется для координации master нод.

С помощью данных компонентов Apache Mesos точно распределяет ресурсы кластера между приложениями в соответствии с их требованиями. [Источник 4] Объем ресурсов, предлагаемых конкретному фреймворку, определяется согласно политике, установленной master нодой. Планировщик решает, какие из офферов использовать, а затем он сообщает Mesos, какие задачи должны быть выполнены, и Mesos запускает эти задачи на соответствующих slave нодах. Когда же задачи выполнены и ранее расходуемые ресурсы освобождаются, этот цикл повторяется снова для планировки других задач.

Рис. 3 Архитектура Apache Mesos с клиентской точки зрения
Рис. 4 Серверная архитектура Apache Mesos



Mesos Masters

Главные контролирующие серверы кластера. Собственно они и отвечают за предоставление ресурсов, распределения задач между действующими Mesos-слейвами. Для обеспечения высокого уровня доступности их должно быть несколько и желательно нечетное количество, но конечно больше 1. Это обусловлено уровнем кворума. Активным мастером (лидером) в определенный момент времени может быть только один сервер.

Mesos Slaves

Сервисы (узлы), предоставляющие мощности для выполнения задач. Задачи могут выполняться как в собственных Mesos-контейнерах, так и в Docker.

Frameworks

Mesos предоставляет только среду для работы (выполнения) задач.Всю логику запуска задач, мониторинг их работы, масштабирование и т.п. выполняют фреймворки. По аналогии с Linux, это такая init/upstart-система для запуска процессов. Фреймворк Marathon предназначен больше для запуска постоянных задач (долгосрочная работа серверов и т.п.) или краткосрочных. Для запуска задач по графику стоит воспользоваться другим фреймворком — Chronos (по аналогии с cron).[Источник 5] Фреймворков достаточно большое количество, самые известные среди них:

  • Aurora (умеет как запускать задачи по графику, так и запускать долгосрочные задачи). Разработка компании Twitter.
  • Hadoop
  • Jenkins
  • Spark
  • Torque
Рис. 5 Apache Mesos Frameworks

ZooKepeer

Демон, отвечающий за координацию Mesos Masters узлов. Он проводит выборы мастера при наличии кворума. Другие узлы кластера получают адрес текущего мастера запросом на группу zookeeper нод типа zk://master-node1:2138,master-node2:2138,master-node3:2138/mesos. Mesos Slaves, в свою очередь, также подключаются только к текущему мастеру, используя аналогичный запрос.

Долгосрочные службы

  • Aurora - это планировщик сервисов, который работает поверх Mesos, что позволяет запускать длительные службы, которые используют масштабируемость, отказоустойчивость и изоляцию ресурсов Mesos.
  • Марафон - это частный PaaS, построенный на Мезосе. Он автоматически обрабатывает аппаратные или программные сбои и гарантирует, что приложение «всегда включено».
  • Singularity - это планировщик (HTTP API и веб-интерфейс) для запуска задач Mesos: длительные процессы, одноразовые задачи и запланированные задания.
  • SSSP - это простое веб-приложение, которое обеспечивает белую метку «Megaupload» для хранения и совместного использования файлов на S3.

Большая обработка данных

  • Cray Chapel - это продуктивный параллельный язык программирования. Планировщик Chapel Mesos позволяет запускать программы Chapel на Mesos.
  • Dpark - это клон Python от Spark, MapReduce-подобная инфраструктура, написанная на Python, работающая на Mesos.
  • Exelixi - это распределенная структура для запуска генетических алгоритмов в масштабе.
  • Hadoop: запуск Hadoop на Mesos эффективно распределяет работу MapReduce по всему кластеру.
  • Hama - это распределенная вычислительная среда, основанная на методах параллельных вычислений Bulk Synchronous Parallel для массовых научных вычислений, например, матричных, графических и сетевых алгоритмов.
  • MPI - это система передачи сообщений, предназначенная для работы на самых разных параллельных компьютерах.
  • Spark - быстрая и универсальная кластерная вычислительная система, которая упрощает запись параллельных заданий.
  • Storm - это распределенная система вычислений в реальном времени. Storm упрощает надежно обрабатывать неограниченные потоки данных, делая для обработки в реальном времени то, что Hadoop сделал для пакетной обработки.

Пакетное описание

  • Chronos - это распределенный планировщик заданий, который поддерживает сложные топологии работы. Он может использоваться как более отказоустойчивая замена для cron.
  • Jenkins - это сервер непрерывной интеграции. Плагин mesos-jenkins позволяет динамически запускать рабочих на кластере Mesos в зависимости от рабочей нагрузки.
  • JobServer - это распределенный планировщик заданий и процессор, который позволяет разработчикам создавать пользовательские пакетные обработки Tasklets с использованием веб-интерфейса точки и клика.
  • Torque - это распределенный менеджер ресурсов, обеспечивающий управление пакетными заданиями и распределенными вычислительными узлами.

Хранилище данных

  • Cassandra - высокодоступная распределенная база данных. Линейная масштабируемость и проверенная отказоустойчивость на товарном оборудовании или облачной инфраструктуре делают ее идеальной платформой для критически важных данных.
  • ElasticSearch - это распределенная поисковая система. Mesos позволяет легко запускать и масштабировать.
  • Hypertable - это высокопроизводительная масштабируемая распределенная система хранения и обработки для структурированных и неструктурированных данных.

Заключение

Тенденции, такие как облачные вычисления и большие данные, отвлекают организации от консолидации. Они могут иметь несколько распределенных систем, предназначенных для конкретных задач. С помощью исполнителя Docker Mesos может запускать и управлять контейнерами Docker в сочетании с платформами Chronos и Marathon. Контейнеры Docker обеспечивают последовательное, компактное и гибкое средство сборки упаковки. Поставка приложений с Docker на Mesos обеспечивает действительно гибкую, эффективную и последовательную платформу для доставки целого ряда приложений локально или в облаке.

Высокая доступность

Высокая доступность (High Availability, или HA) master узлов Mesos в кластере активируется с помощью программы Apache Zookeeper, которая используется для репликации master нод и формирует кворум (quorum). Также ZooKeeper координирует выборы лидера кластера и лидера среди компонентов Mesos (то есть, slave нод и фреймворков).

Для настройки высокой доступности нужно, по крайней мере, три master ноды; этого достаточно для проведения кворума. Но чтобы сделать производственную среду более гибкой, рекомендуется использовать пять master нод; такой подход позволяет проводить кворум, оставляя две master ноды в автономном режиме.

Известные пользователи

  • Социальная сеть Twitter начала использовать Mesos и Apache Aurora в 2010 году, после того, как Бенджамин Хиндман выступил перед группой инженеров Twitter.
  • Airbnb заявила в июле 2013 года, что использует Mesos для запуска ряда систем обработки данных, таких как Apache Hadoop и Apache Spark.
  • Интернет-аукцион eBay объявил в апреле 2014 года, что он использует Mesos для запуска непрерывной интеграции на основе отдельных разработчиков. Они достигают этого с помощью пользовательского Mesos плагина, который позволяет разработчикам запускать свой собственный экземпляр Дженкинс.
  • В апреле 2015 года было объявлено, что сервис компании Apple Siri использует свою собственную структуру Mesos под названием Джарвис.
  • В августе 2015 года было объявлено, что Verizon выбрал DCOS Mesosphere, которая основана на Apache с открытым исходным кодом Mesos, как их общенациональная платформа для центров обработки данных службы оркестровки.
  • В ноябре 2015 Yelp объявили, что они использовали Mesos для производства услуг.

Установка

На мастерах также будет находиться фреймворк Marathon, который, по желанию, можно разместить на отдельном узле.

Marathon – это фреймворк Mesos, который предназначен для запуска долго работающих приложений; в Mesosphere данная программа служит в качестве замены традиционной системы инициализации (init system). Marathon имеет много функций, которые упрощают запуск приложений в кластерной среде; среди таких функций можно выделить высокую доступность, ограничение нод, диагностику приложений, интерфейс для scriptability и обнаружения сервисов, а также дружественный пользовательский веб-интерфейс. Кроме того, благодаря Marathon программа Mesosphere имеет функции масштабирования и самовосстановления.

Marathon можно использовать для запуска других фреймворков Mesos или процессов стандартной оболочки. Поскольку данный фреймворк предназначен для запуска долго работающих приложений, он может обеспечить работу приложения даже в случае отказа slave ноды, на котором запущено приложение.

  • Установка пакетов:
apt-get install software-properties-common
  • Создание репозиториев:
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E56151BF
DISTRO=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
CODENAME=$(lsb_release -cs)
echo "deb http://repos.mesosphere.com/${DISTRO} ${CODENAME} main" | \
  sudo tee /etc/apt/sources.list.d/mesosphere.list
  • Установка Java
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java8-installer
  • Установка Mesos & Marathon:
apt-get -y install mesos marathon
  • Указание уровня Кворума
echo "2" > /etc/mesos-master/quorum
  • IP узла
echo *.*.*.* | tee /etc/mesos-master/ip
cp /etc/mesos-master/ip /etc/mesos-master/hostname
  • Настройка Marathon:
mkdir -p /etc/marathon/conf
cp /etc/mesos-master/hostname /etc/marathon/conf
  • Перезапуск сервисов
restart mesos-master
restart marathon


Источники

  1. Mesos. Cluster Management. URL: http://www.pvsm.ru/linux/181749 (дата обращения: 27.10.2017)
  2. Apache Mesos // wikipedia. URL: https://en.wikipedia.org/wiki/Apache_Mesos/ (дата обращения: 27.10.2017)
  3. РАБОТА С MESOSPHERE: ВСТУПЛЕНИЕ // 8host. URL: https://www.8host.com/blog/rabota-s-mesosphere-vstuplenie/ (дата обращения: 27.10.2017)
  4. Знакомьтесь, Mesosphere – ОС для управления ЦОДами // iteducenter. URL:https://blog.iteducenter.ua/sysadmin-basics/znakomtes-mesosphere-os-dlya-upravleniya-codami/ (дата обращения: 27.10.2017)
  5. Mesos. Container Cluster Management System // habrahabr. URL:https://habrahabr.ru/post/308812/ (дата обращения: 27.10.2017)

Ссылки

  • Apache Mesos Website [Электронный ресурс]: официальный сайт Mesos+. / Дата обращения: 27.10.2017. Режим доступа: http://mesos.apache.org/
  • Страница Wiki [Электронный ресурс]: Wikipedia Page/ Дата обращения: 27.10.2017. Режим доступа: https://en.wikipedia.org/wiki/Apache_Mesos
  • Mesos. Cluster Manager [Электронный ресурс]: Публикации на Хабрхабр / Дата обращения: 27.10.2017. Режим доступа: https://habrahabr.ru/post/308812/