Компьютерный кластер

Материал из wikixw
Перейти к навигации Перейти к поиску

Не следует путать с кластером данных или сеточными вычислениями. "Кластерные вычисления" перенаправляются сюда. Сведения о журнале см. В разделе кластерные вычисления (журнал).

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

Компоненты кластера обычно соединены друг с другом через быстрые локальные сети, причем каждый узел (компьютер, используемый в качестве сервера) работает под управлением своего собственного экземпляра операционной системы. В большинстве случаев все узлы используют одно и то же оборудование[требуется лучший исходныйкод ] и одну и ту же операционную систему, хотя в некоторых установках (например, с использованием ресурсов кластерных приложений с открытым исходным кодом (OSCAR)) на каждом компьютере могут использоваться разные операционные системы или разное оборудование.

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

Компьютерные кластеры появились в результате конвергенции ряда вычислительных тенденций, включая доступность недорогих микропроцессоров, высокоскоростных сетей и программного обеспечения для высокопроизводительных распределенных вычислений. они имеют широкий диапазон применимости и развертывания, начиная от кластеров малого бизнеса с несколькими узлами и заканчивая некоторыми из самых быстрых суперкомпьютеров в мире, таких как IBM Sequoia. но более низкая первоначальная стоимость кластеров и возросшая скорость сетевой структуры способствовали принятию кластеров. В отличие от высоконадежных мэйнфреймов кластеры дешевле масштабируются, но также имеют повышенную сложность в обработке ошибок, так как в кластерах режимы ошибок не являются непрозрачными для запущенных программ

Технические специалисты, работающие над большим кластером Linux в Технологическом университете Хемница, Германия

Основные понятия[править]

Простой, самодельный кластер Беовульфов.

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

Подход компьютерной кластеризации обычно (но не всегда) соединяет ряд легкодоступных вычислительных узлов (например, персональные компьютеры, используемые в качестве серверов) через быструю локальную сеть. Деятельность вычислительных узлов управляется "кластеризацией промежуточного программного обеспечения", программным уровнем, который находится на вершине узлов и позволяет пользователям рассматривать кластер как по большому счету одно связное вычислительное устройство, например, с помощью концепции единого образа системы.]

Кластеризация компьютеров основана на централизованном подходе к управлению, который делает узлы доступными в виде организованных общих серверов. Он отличается от других подходов, таких как одноранговые или сеточные вычисления, которые также используют много узлов, но с гораздо более распределенным характером.]

Компьютерный кластер может быть простой двухузловой системой, которая просто соединяет два персональных компьютера, или может быть очень быстрым суперкомпьютером. Основной подход к созданию кластера-это кластер Beowulf, который может быть построен с использованием нескольких персональных компьютеров для создания экономически эффективной альтернативы традиционным высокопроизводительным вычислениям. Ранним проектом, показавшим жизнеспособность этой концепции, был 133-узловой Каменный суперкомпьютер. Разработчики использовали Linux, Parallel Virtual Machine toolkit и библиотеку интерфейса передачи сообщений для достижения высокой производительности при относительно низких затратах.]

Хотя кластер может состоять всего из нескольких персональных компьютеров, соединенных простой сетью, архитектура кластера может также использоваться для достижения очень высоких уровней производительности. Полугодовой список 500 самых быстрых суперкомпьютеров организации TOP500 часто включает в себя множество кластеров, например , самой быстрой машиной в мире в 2011 году был компьютер K, который имеет распределенную память, кластерную архитектуру.]

История[править]

Основная статья: История компьютерных кластеров Смотрите также: История суперкомпьютинга

A VAX 11/780, c. 1977

Грег Пфистер заявил, что кластеры были изобретены не каким-то конкретным поставщиком, а клиентами, которые не могли вместить всю свою работу на одном компьютере или нуждались в резервном копировании.[10] Пфистер оценивает эту дату как некоторое время в 1960-х годах. Формальная инженерная основа кластерных вычислений как средства выполнения параллельной работы любого рода была, возможно, изобретена Джином Амдалом из IBM, который в 1967 году опубликовал то, что стало считаться основополагающей работой по параллельной обработке: закон Амдала.

История ранних компьютерных кластеров более или менее непосредственно связана с историей ранних сетей, так как одним из основных мотивов развития сети было объединение вычислительных ресурсов, создание де-факто компьютерного кластера.

Первая производственная система, разработанная в виде кластера, была Burroughs B5700 в середине 1960-х годов. Это позволяло до четырех компьютеров, каждый с одним или двумя процессорами, быть тесно связанными с общей подсистемой хранения данных на диске для распределения рабочей нагрузки. В отличие от стандартных многопроцессорных систем, каждый компьютер может быть перезапущен без нарушения общей работы.

Первым коммерческим слабо связанным продуктом кластеризации стала система "компьютер с подключенными ресурсами" (ARC) Datapoint Corporation, разработанная в 1977 году и использующая ARCnet в качестве интерфейса кластера. Кластеризация как таковая по-настоящему не возникла до тех пор, пока Digital Equipment Corporation не выпустила свой продукт VAXcluster в 1984 году для операционной системы VAX/VMS (теперь называемой OpenVMS). Продукты ARC и VAXcluster поддерживают не только параллельные вычисления, но и общие файловые системы и периферийные устройства устройства. Идея состояла в том, чтобы обеспечить преимущества параллельной обработки, сохраняя при этом надежность и уникальность данных. Двумя другими примечательными ранними коммерческими кластерами были Tandem Himalayan (продукт высокой доступности около 1994 года) и IBM s/390 Parallel Sysplex (также около 1994 года, главным образом для делового использования).

В те же самые временные рамки, когда компьютерные кластеры использовали параллелизм вне компьютера в товарной сети, суперкомпьютеры начали использовать их внутри того же компьютера. После успеха CDC 6600 в 1964 году Cray 1 был поставлен в 1976 году и ввел внутренний параллелизм с помощью векторной обработки.[11] в то время как ранние суперкомпьютеры исключали кластеры и полагались на общую память, со временем некоторые из самых быстрых суперкомпьютеров (например, компьютер K) полагались на кластерные архитектуры.

Атрибуты кластеров[править]

Кластер балансировки нагрузки с двумя серверами и N пользовательскими станциями (Галисийский язык).

Компьютерные кластеры могут быть сконфигурированы для различных целей, начиная от общих бизнес-потребностей, таких как поддержка веб-сервисов, и заканчивая интенсивными научными вычислениями. В любом случае кластер может использовать подход высокой доступности. Обратите внимание, что атрибуты, описанные ниже, не являются исключительными, и "компьютерный кластер" также может использовать подход высокой доступности и т. д.

Кластеры "балансировкинагрузки" -это конфигурации, в которых узлы кластера совместно используют вычислительную нагрузку для обеспечения лучшей общей производительности. Например, кластер веб-серверов может назначать разные запросы разным узлам, поэтому общее время отклика будет оптимизировано. однако подходы к балансировке нагрузки могут существенно отличаться в разных приложениях, например, высокопроизводительный кластер, используемый для научных вычислений, будет балансировать нагрузку с помощью различных алгоритмов от кластера веб-серверов, который может просто использовать простой метод циклического перебора, назначая каждый новый запрос другому узлу.]

Компьютерные кластеры используются для интенсивных вычислений, а не для обработки операций ввода-вывода, таких как веб-службы или базы данных. например, компьютерный кластер может поддерживать вычислительное моделирование аварий транспортных средств или погоды. Очень тесно связанные компьютерные кластеры предназначены для работы, которая может приблизиться к "суперкомпьютерному".

"Кластеры высокой доступности" (также известные как отказоустойчивые кластеры или кластеры HA) повышают доступность кластерного подхода. Они работают, имея резервные узлы, которые затем используются для предоставления услуг, когда компоненты системы выходят из строя. Реализация кластера HA пытается использовать избыточность компонентов кластера для устранения единичных точек отказа. Существуют коммерческие реализации кластеров высокой доступности для многих операционных систем. Проект Linux-HA - это один из широко используемых пакетов свободного программного обеспечения HA для операционной системы Linux.

Преимущества[править]

Кластеры в основном разрабатываются с учетом производительности, но установки основаны на многих других факторах. Отказоустойчивость (способность системы продолжать работу с неисправным узлом) обеспечивает масштабируемость, а в ситуациях высокой производительности-низкую частоту процедур технического обслуживания, консолидацию ресурсов (например, RAID) и централизованное управление. Преимущества включают в себя возможность восстановления данных в случае аварии и обеспечение параллельной обработки данных и высокой пропускной способности обработки.

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

При добавлении нового узла в кластер повышается надежность, поскольку весь кластер не нужно снимать. Один узел может быть снят для обслуживания, в то время как остальная часть кластера берет на себя нагрузку этого отдельного узла.

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

Дизайн и конфигурация[править]

Типичная конфигурация Беовульфа.

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

В кластере Beowulfприкладные программы никогда не видят вычислительные узлы (также называемые подчиненными компьютерами), а только взаимодействуют с "хозяином", который является конкретным компьютером, обрабатывающим планирование и управление подчиненными компьютерами. В типичной реализации ведущий имеет два сетевых интерфейса, один из которых взаимодействует с частной сетью Beowulf для ведомых устройств, а другой-с сетью общего назначения организации. Подчиненные компьютеры обычно имеют свою собственную версию той же операционной системы, а также локальную память и дисковое пространство. Однако частная ведомая сеть может также иметь большой и общий файловый сервер, который хранит глобальные постоянные данные, к которым ведомые устройства обращаются по мере необходимости.

Специальный 144-узловой кластер DEGIMA настроен на выполнение астрофизического моделирования N-тел с использованием многолучевого параллельного древесного кода, а не научных вычислений общего назначения.

В связи с увеличением вычислительной мощности каждого поколения игровых консолейпоявилось новое применение, когда они были перепрофилированы в высокопроизводительные вычислительные кластеры (HPC). Некоторые примеры кластеров игровых консолей - это кластеры Sony PlayStation и Microsoft Xbox. Еще одним примером потребительского игрового продукта является персональный суперкомпьютер Nvidia Tesla рабочая станция, которая использует несколько процессорных чипов графического ускорителя. Помимо игровых консолей, вместо них можно использовать и высококлассные видеокарты. Использование видеокарт (или, скорее, их графических процессоров) для выполнения вычислений для грид-вычислений значительно экономичнее, чем использование процессоров, несмотря на то, что они менее точны. Однако при использовании значений двойной точности они становятся такими же точными для работы, как и процессоры, и по-прежнему гораздо дешевле (стоимость покупки).

Компьютерные кластеры исторически работали на отдельных физических компьютерах с одной и той же операционной системой. С появлением виртуализацииузлы кластера могут работать на отдельных физических компьютерах с различными операционными системами, которые окрашены выше виртуальным слоем, чтобы выглядеть похожими. Кластер также может быть виртуализирован в различных конфигурациях по мере выполнения технического обслуживания; примером реализации является Xen в качестве менеджера виртуализации с Linux-HA.

Обмен данными и коммуникация[править]

Обмен данными[править]

Кластер НЕК Нехалем

Как компьютерные кластеры появились в 1980-х годах, так и суперкомпьютеры. Одним из элементов, отличавших эти три класса в то время, было то, что первые суперкомпьютеры полагались на общую память. На сегодняшний день кластеры обычно не используют физически разделяемую память, в то время как многие суперкомпьютерные архитектуры также отказались от нее.

Однако использование кластеризованной файловой системы имеет важное значение в современных компьютерных кластерах. примеры включают общую параллельную файловую систему IBM, общие Тома кластера Microsoft или кластерную файловую систему Oracle.

Передача сообщений и коммуникация[править]

Основная статья: Передача сообщений в кластерах компьютеров

Двумя широко используемыми подходами для связи между узлами кластера являются MPI (Message Passing Interface) и PVM (Parallel Virtual Machine).]

ПВМ был разработан в Национальной лаборатории Ок-Риджа примерно в 1989 году, прежде чем появился MPI. PVM должен быть непосредственно установлен на каждом узле кластера и предоставляет набор программных библиотек, которые рисуют узел как "параллельную виртуальную машину". PVM обеспечивает среду выполнения для передачи сообщений, управления задачами и ресурсами, а также уведомления о неисправностях. PVM может использоваться пользовательскими программами, написанными на языках C, C++, Fortran и т. д.

МПИ возник в начале 1990-х годов в результате дискуссий между 40 организациями. Первоначальные усилия были поддержаны ARPA и Национальным научным фондом. Вместо того чтобы начинать все сначала, дизайн MPI опирался на различные функции, доступные в коммерческих системах того времени. Спецификации MPI затем породили конкретные реализации. Реализации MPI обычно используют TCP / IP и сокетные соединения. MPI в настоящее время является широко доступной коммуникационной моделью , позволяющей писать параллельные программы на таких языках , как C, Fortran, Pythonи т. д. Таким образом, в отличие от PVM, который обеспечивает конкретную реализацию, MPI-это спецификация, которая была реализована в таких системах, как MPICH и Open MPI.]

Управление кластерами[править]

Недорогой и маломощный крошечный кластер Cubieboards, использующий Apache Hadoop на Lubuntu

Одной из проблем при использовании компьютерного кластера является стоимость его администрирования, которая иногда может быть такой же высокой, как и стоимость администрирования N независимых машин, если кластер имеет N узлов. в некоторых случаях это дает преимущество архитектурам общей памяти с более низкими затратами на администрирование. это также сделало виртуальные машины популярными из-за простоты администрирования.

Планирование задач[править]

Когда большой многопользовательский кластер нуждается в доступе к очень большим объемам данных, планирование задач становится сложной задачей. В гетерогенном кластере CPU-GPU со сложной прикладной средой производительность каждого задания зависит от характеристик базового кластера. Поэтому сопоставление задач с ядрами ЦП и графическими устройствами создает значительные проблемы.[22] это область текущих исследований; алгоритмы, которые объединяют и расширяют MapReduce и Hadoop, были предложены и изучены.

Управление отказами узлов[править]

Когда узел в кластере выходит из строя, такие стратегии, как "ограждение", могут быть использованы для поддержания работоспособности остальной системы.[требуется лучший источник] ограждение-это процесс изоляции узла или защиты общих ресурсов, когда узел кажется неисправным. Существует два класса методов ограждения: один отключает сам узел, а другой запрещает доступ к ресурсам, таким как общие диски.

Метод СТОУНИТА расшифровывается как" выстрелить другому узлу в голову", что означает, что подозреваемый узел отключен или выключен. Например, power fencing использует контроллер питания для отключения неработоспособного узла.

Подход к ограждению ресурсов запрещает доступ к ресурсам без отключения питания узла. Это может включать ограждение постоянного резервирования через SCSI3, ограждение fibre channel для отключения порта fibre channel или ограждение global network block device (GNBD) для отключения доступа к серверу GNBD.

Разработка и администрирование программного[править]

Параллельное программирование[править]

Кластеры балансировки нагрузки, такие как веб-серверы, используют кластерные архитектуры для поддержки большого числа пользователей, и обычно каждый запрос пользователя направляется на определенный узел, достигая параллелизма задач без взаимодействия нескольких узлов, учитывая, что основной целью системы является обеспечение быстрого доступа пользователей к общим данным. Однако "компьютерные кластеры", выполняющие сложные вычисления для небольшого числа пользователей, должны использовать возможности параллельной обработки кластера и разбивать" одно и то же вычисление " на несколько узлов.

Автоматическое распараллеливание программ остается технической проблемой, но модели параллельного программирования могут быть использованы для достижения более высокой степени распараллеливания за счет одновременного выполнения отдельных частей программы на разных процессорах.]

Отладка и мониторинг[править]

Разработка и отладка параллельных программ в кластере требует параллельных языковых примитивов, а также подходящих инструментов, таких как те, которые обсуждались на форуме высокопроизводительной отладки (HPDF), результатом которого стали спецификации HPD.[19][27] Затем были разработаны инструменты, такие как TotalView, для отладки параллельных реализаций в компьютерных кластерах, использующих MPI или PVM для передачи сообщений.

Система Berkeley NOW (сеть рабочих станций) собирает кластерные данные и хранит их в базе данных, в то время как такая система, как PARMON, разработанная в Индии, позволяет осуществлять визуальное наблюдение и управление большими кластерами.]

Контрольная точка приложения может быть использована для восстановления заданного состояния системы, когда узел выходит из строя во время длительного многоузлового вычисления.[28] это важно для больших кластеров, учитывая, что с увеличением числа узлов возрастает и вероятность отказа узлов при больших вычислительных нагрузках. Контрольная точка может восстановить систему в стабильное состояние, так что обработка может возобновиться без необходимости пересчета результатов.

Реализации[править]

Мир GNU / Linux поддерживает различное кластерное программное обеспечение; для кластеризации приложений существуют distccи MPICH. Виртуальный сервер Linux, кластеры на базе Linux-HA-director, которые позволяют распределять входящие запросы на услуги между несколькими узлами кластера. MOSIX, LinuxPMI, Kerrighed, OpenSSI - это полномасштабные кластеры, интегрированные в ядро и обеспечивающие автоматическую миграцию процессов между однородными узлами. OpenSSI, openMosix и Kerrighed - это односистемные реализации образов.

Microsoft Windows computer cluster Server 2003 на базе платформы Windows Server предоставляет компоненты для высокопроизводительных вычислений, такие как планировщик заданий, библиотека MSMPI и средства управления.

gLite - это набор технологий промежуточного программного обеспечения, созданных проектом Enabling Grids for E-sciencE (EGEE).

slurm также используется для планирования и управления некоторыми из крупнейших суперкомпьютерных кластеров (см. список top500).

Другие подходы[править]

Хотя большинство компьютерных кластеров являются постоянными приспособлениями, были предприняты попытки создания кратковременных кластеров для конкретных вычислений. Однако более масштабные добровольные вычислительные системы, такие как системы на базе BOINC, имели больше последователей.

См. также[править]

Основные понятия

Распределенные вычисления


Специфические системы

Компьютерные фермы

Пруф[править]

//static.googleusercontent.com/media/research.google.com/en/us/pubs/archive/43438.pdf