Эта статья возникла из личного публичного аккаунта:TechFlow, оригинальность это не просто, прошу внимания
СегодняЧасть 11 распределенных темстатья, давайте поговоримРаспределенное управление ресурсами кластера.
Прежде чем начать статью, давайте зададим вопрос,Почему в мире Amazon, а в Китае Alibaba?Эти две компании лучше всех справляются с облачными вычислениями?? Одна огромная вещь, которая объединяет эти две компании, заключается в том, что они обеКомпания электронной коммерции. Характеристики компаний электронной коммерции очевидны, то есть трафик не фиксирован, и на него часто влияют крупные акции и фестивали. Например, Double Eleven в Китае и Black Friday в США — типичные крупные акции. Во время большой акции трафик будет в десять и более раз больше, чем обычно, и для такого большого трафика необходимо иметь больше машин для обработки. Но проблема в том, что если купить столько машин, но большая акция закончилась и трафик упадет, то эти машины больше не будут использоваться, что, очевидно, приведет к растратам.
Как же тогдаПредотвратить потериШерстяная ткань? Это создание большого кластера, управление всеми машинами и вычислительными ресурсами и использование его для обработки трафика большой акции во время большой акции.Обычно его можно использовать для участия в операциях с большими данными или сдавать его в аренду другим компаний или частных лиц для получения определенной экономической выгоды, всегдаНе позволяйте этим машинам простаивать, чтобы не тратить.
По сути, решение этой проблемы является одной из основных движущих сил облачных вычислений и облачных серверов Amazon и Alibaba.
Управление ресурсами кластера
Управление кластерными ресурсами — очень распространенный сценарий приложения для распределенного распределения, и можно сказать, что независимо от размера компании его необходимо затронуть. Например, Alibaba и Amazon Cloud очень высокого уровня, но нижний слой также неотделим от этого.
Предыстория этого вопроса очень проста, независимо отБольшие и малые компании часто имеют более одной системы. Однако ресурсы компании ограничены и фиксированы, но сценарии, в которых нам нужно применять машины, гибки. Например, если сегодня запускается новая система, она должна занимать несколько серверов, завтра система будет плохо работать, поэтому ее выведут, а эти серверы зачистят. В начале не было динамического управления кластерной системой, и все управлялось вручную путем эксплуатации и обслуживания, поэтому все операции и обслуживание той эпохи были обучены умению подключать и отключать сетевые кабели и сильным мускулам рук.
До прихода эры больших данных машинные изменения в основном сводились к ситуации, когда система переходила в онлайн и офлайн, что можно сказать. Ведь общая система компании меняется не очень часто, ноЭпоха больших данныхПосле прихода сильно увеличилось количество временных задач.Сегодня данные пользователя нужно сбросить, а отчет собрать завтра.Временные потребности туда-сюда, и эти нужды часто требуют использования большого количества машин (большие данные, меньше машин. Не сосчитать), не могут ли все полагаться на эксплуатацию и техническое обслуживание человеческой плоти, чтобы справиться с этим? Вы не можете ожидать, что каждая разработка будет иметь возможность эксплуатации и обслуживания, это пустая трата времени и нереально. Так естественно думали людиразработать системусделать это.
Так появилась на свет система управления ресурсами кластера, как мы часто слышимПряжа, мезос, коронаПодожди, они все так делают.
структура системы
Теперь, когда мы понимаем, что делает система управления ресурсами, мы можем взглянуть на ее архитектуру.
этоСама архитектура не сложная, по сути, эта система делает только две вещи, одна вещьраспространять, другое делоРециркулировать. Из функции хорошо понятно, что нам нужно отправить задачу на машину, и когда задача будет выполнена, нам нужно переработать ресурсы, чтобы позже выделить другие задачи. Но логически добиться этих двух пунктов непросто.
Сначала мыНужно знать статус всех текущих задач, например, сколько машин необходимо, и состояние выполнения, не началось ли оно, началось или закончилось. Если она закончилась, машину нужно восстановить, а если не запустилась, нужно выделить ресурсы машины. КромеТакже необходимо знать о ресурсах, какие ресурсы заняты какими задачами, а какие простаивают, чтобы их можно было выделить. Для этого необходимо обеспечить связь между системой и всеми машинами, а также программу дляВыполнение стратегии распределенияВыделите ресурсы для задач, которые еще не были выполнены. Мы систематизируем это содержимое и можем нарисовать схему архитектуры системы.
Кратко объясните приведенную выше картинку: верхняя часть — это наша система управления ресурсами, а нижняя часть — это, естественно, машина. Так как физическая машина очень мощная, тоКак правило, мы не имеем прямого доступа к системе, но развернет на нем несколько контейнеров, что эквивалентно нескольким виртуальным машинам, то есть превратит одну машину в несколько машин для присоединения к кластеру. Так этот процесс называетсяВиртуализация. В прошлом многие инженеры C++ специализировались на этом, но теперь, когда докер растет, говорят, что многие из них постепенно были заменены докером. Преимущество в том, что при зависании одного или нескольких контейнеров вся физическая машина остается живой,Можно перезапустить в любой момент. Другая причина в том, что таких больших задач, которые могут съедать ресурсы всей физической машины, вообще не бывает, что тоже для экономии ресурсов. Помимо контейнера,диспетчер узлов, ответственный за связь со всей системой управления.
Сборщик ресурсов отвечает за сбор текущего состояния этих контейнеров и, если они были выполнены, добавляет их в список.пул ресурсовСреди них это означает, что в настоящее время доступно. После того, как исполнитель политики планирования обнаружит, что доступны новые машины, он проверит очередь задач и назначит некоторые задачи этим доступным контейнерам. Задачи в рабочей очереди могут быть самые разные, например, spark, MapReduce и так далее.
Нетрудно заметить, что исполнитель политики планирования является ядром всей системы управления, и все остальные модули обслуживают его. Подробная стратегия распределения включает в себя множество деталей и логики, поэтому мы поместим конкретное содержание стратегии в следующую статью. Нам нужно только иметь общее представление и знать, что он отвечает за планирование задач и назначение выполнения.
Преимущества и недостатки управления кластером
Хотя у нас уже есть система управления, это выглядит круто. Но это в настоящее времявсе еще нащупываю, далеко не зрелый. Различий между этими системами много, но принципы схожи, по сутиАбстрагируйте систему управления поверх наших аппаратных ресурсов, например, нанять домработницу, которая работает быстро и никогда не устает. Нам просто нужно сказать ему, что нам нужно сделать и сколько ресурсов нам нужно. Что касается того, как распространять и как его дополнять, мы оставим это ему, и нам больше не придется об этом беспокоиться.
По сравнению с предыдущим распространением человеческой плоти, это значительно продвинулось вперед и имеет очень очевидные преимущества. Мы могли бы назвать лишь несколько.
преимущество
такие как нашиБолее высокая загрузка машины, потому что ресурсы фиксируются после того, как ресурсы были выделены вручную до этого. Например, на задачу А назначена машина, но проблема в том, что задача А не всегда загружена полностью. Может быть так, что днем трафик большой и потребление высокое, а ночью трафик маленький и занимаемые ресурсы меньше. С другой стороны, задача Б может быть противоположной: она не должна работать днем, а начинает работать ночью, требуя много вычислений (например, многие крупномасштабные задачи по машинному обучению сейчас выполняются в раннее утро). В случае ручного распределения нам могут понадобиться две машины для выполнения А и Б по отдельности, но, очевидно, это неразумно, потому что мы можем их полностью объединить и сделать так, чтобы они дополняли друг друга. Однако полагаться на рабочую силу, чтобы делать это каждый день, нереально. С системой управления у нас будет система, которая сделает это за нас, она правильно упорядочит все ресурсы, и естественный коэффициент использования будет выше.
Во-вторых, в некоторой степениСнижение потребления хранилища данных. Например, предыдущие пользовательские данные используются во многих системах, и в разных системах необходимо хранить отдельную копию. В противном случае разные команды могут легко использовать один и тот же фрагмент данных, чтобы иметь проблему нечеткого разделения обязанностей.При распределенной системе управления нам нужно только хранить фрагмент данных в распределенной системе и найти выделенного человека для поддерживать его, избегая дублирования работы.
Наконец, поддерживаются несколько вычислительных сред. Например, такие кластеры, как Yarn и mesos, поддерживают множество вычислительных фреймворков, будь то MapReduce, spark или hive и т. д., могут управляться набором систем, что очень гибко и удобно. Он даже может поддерживать несколько версий, не затрагивая их.
недостаточный
Все хорошо и плохо, нет ничего идеального. Поскольку есть преимущества и недостатки, мы не будем сегодня говорить о проблеме стратегии планирования, а сегодня в основном поговорим о проблеме самой системы планирования.
Первый и самый важный момент заключается в том, чторискНа первый взгляд, мы используем систему планирования кластера, чтобы снизить риск кластера, потому что сбой одного узла не повлияет на работу всего кластера. Нам достаточно найти причину сбоя одного узла и устранить ее, либо дождаться автоматического перезапуска системы. Система не работаетРиск нивелируется, но проблема в том, что разделение рисков на самом деле очень опасная вещь сама по себе, а также означает накопление рисков.
Например, вы когда-нибудь думали, что еслиСама система управления кластером не работает??
Если даже система, отвечающая за планирование задач, зависает, очевидно, что всему кластеру конец. такого рода вещиКажется, очень маловероятно, но как только это произойдет, влияние и потери для предприятия будут огромными. Говорят, что кластер Ali был недоступен накануне днем, и это затронуло большинство веб-сайтов в Интернете в Китае, и доступ к ним был недоступен. Это то, чем Али занимается последние несколько лет.Живите в разных местах, разные записи аварийного восстановленияпричина.
Второй недостаток заключается в том, что система в настоящее времянедостаточно уменНапример, если в кластере указано максимальное количество ресурсов, занимаемых каждой задачей, вдруг мы расширяем машину, или есть временная большая задача, которую нужно превысить. Эти ситуации требуют ручного вмешательства, например, есть хорошие решения для некоторых проблем, которые можно ожидать во время разработки системы, таких как зависание узла, переполнение ресурсов и т.д. ноНе может решить непредвиденные проблемы вообще, например, узел завис и занимает ресурсы, если он не подключен.
Например, в некоторых кластерахНекоторые нелегальные скрипты размещены искусственно, такие как сценарии хакерского вторжения или сценарии майнинга и т. д. Некий относительно популярный в прошлом сотрудник несколько месяцев майнил на машине компании, пока его не поймали, почему его вовремя не обнаружили? Поскольку ресурсы планируются системой, вмешательство человека минимально, и никто не будет смотреть, какие задачи выполняются в системе в течение всего дня.
Конечно,Там, где есть проблема, есть путь впередНа самом деле эти проблемы также отражают то, что нам еще предстоит пройти долгий путь в этой области, а нынешний план все еще относительно примитивен. В будущем должна быть лучшая концепция дизайна для управления кластером и лучшая система.Конечно, планы на будущее будут основаны на текущих улучшениях. Это также цель и смысл нашего обучения.
На сегодняшней статье все. Если вы чувствуете, что что-то приобрели, пожалуйста, нажмитеПодпишитесь или сделайте ретвитЧто ж, твое маленькое усилие много значит для меня.