Плюсы и минусы Pi Cluster?

Я видел много сообщений о том, как построить «суперкомпьютер» или кластер с малиной Pis, но я нашел очень мало с плюсами и минусами создания сети Pis. Мне интересно создать собственный небольшой кластер, но у меня есть несколько вопросов.

После кластеризации, RPI действуют как один виртуальный компьютер или у вас есть индивидуальный контроль над всеми RPI? У одного узла есть контроль над другими?

Есть ли что-то, что может сделать RPI, ограниченное в кластере? Например, будет ли я управлять всеми отдельными портами GPIO?

Насколько быстрее он делает пи? Допустим, я создаю кластер из 2 узлов, с тактовой частотой до 1 ГГц каждый, у меня будет, по сути, «двухъядерный 1 ГГц» процессор? Нужен ли кластер в двоичных кратных? (например, 1,2,4,8,16,32,64)

Будет ли это осложнять мой веб-хостинг, работающий через NGINX для pi? Могут ли вычислительные мощности определенных узлов назначать конкретные задачи, которые они обрабатывают? Например, узел 1 будет обрабатывать запросы веб-сервисов, узел 2 обрабатывает облачное хранилище и т. Д.

30 голосов | спросил SuperAdmin 5 AMpSat, 05 Apr 2014 02:16:29 +040016Saturday 2014, 02:16:29

1 ответ


49

Некоторые интересные вопросы. Я думаю, вы можете слегка недопонимать, как работают суперкомпьютеры, созданные с помощью малины Pis. Они не функционируют как автоматическая система распределения нагрузки. Они разработаны для чего-то называемого параллельного программирования , где сложная задача разбивается на куски, которые могут выполняться одновременно. Основной Pi в кластере (головной узел) отвечает за организацию общей задачи, и каждый Pi в кластере (клиентских узлах) выполняет выделенную работу и возвращает результаты отчета в головной узел. Для этого используются такие библиотеки, как OpenMPI .

Кроме того, кластеры малины Pi, которые были построены, не были созданы как эффективные вычислительные устройства. Они были созданы как платформы разработки . Это значительно дешевле купить 32 Raspberry Pis, чем 32 настольных ПК. Вы можете разрабатывать и тестировать свое программное обеспечение для параллельного программирования намного дешевле. Единственная альтернатива, если у вас нет Pis или ПК, - запросить процессорное время на реальном суперкомпьютере. В зависимости от размера компьютера, о котором идет речь, это может стоить денег или длительное время ожидания до того, как ресурсы будут доступны. Следовательно, почему люди создали свои собственные кластеры. Имеет смысл запускать ваше приложение на реальном компьютере, когда вы это узнаете!

Итак, учитывая это и переходя к вашим конкретным вопросам.

В надлежащем кластере Pis не действуют как один виртуальный компьютер. У вас есть свободный контроль над каждым Pi в виде системы распределения задач или ресурсов, например Sun Grid Engine . Задачи выделяются узлам по мере необходимости, а когда задачи завершены, ресурсы этого узла освобождаются для новых задач.

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

Кластер не делает Pi быстрее, потому что это не один компьютер. То, что вы получаете, это просто способность делать больше сразу. Вы не ограничены кратными двум. Тем не менее, существует реальный практический верхний предел для кластерных компьютеров в зависимости от выполняемых задач. Представьте себе, если вы используете параллельный расчет на многих Pis, для чего требуется 200 шагов. Однако каждый следующий шаг требует информации, которую каждый Pi рассчитывал на своем предыдущем шаге. Поэтому каждый Pi должен получать данные от каждой другой Pi на каждой итерации. В зависимости от количества времени, которое каждая итерация делает для вычисления, вы можете потратить больше времени на отправку данных, чем вычисление. Вот почему большинство суперкомпьютеров используют сеть InfiniBand . Это очень быстро, поэтому вы можете делать больше вычислений. Решение этого заключается в том, чтобы использовать меньшее количество Pis, но чтобы они выполняли больше работы на каждой итерации, но это может быть невозможно в зависимости от вашего алгоритма. Отсюда и практический верхний предел. (В Pis это было бы особенно плохо, потому что USB Ethernet довольно медленный.)

Итак, на практическое приложение, распределенный веб-хостинг! Вы можете использовать несколько Pis здесь, это просто не обычный кластер. Скажем, у вас есть 5 пиз. Мы будем называть их GatewayPi, WebPi1, WebPi2, WebPi3 и DataPi. GatewayPi сталкивается с Интернетом, запустив Nginix для обработки веб-запросов, но не выполняет никакой обработки. Вместо этого он выполняет балансировку нагрузки . Он использует проксирование и случайным образом пересылает входящий запрос в WebPi1, WebPi2 или WebPi3. Мы только утроили силу нашей веб-инфраструктуры, потому что теперь мы можем обрабатывать больше запросов одновременно. Как насчет DataPi? DataPi подключил жесткий диск для хранения всех наших веб-данных и работает на сервере NFS. WebPiX монтирует этот общий ресурс NFS, поэтому он имеет доступ к данным для обработки. Таким образом, нам нужно только запустить резервное копирование в одном месте и сохранить на диске.

То, что я только что описал, по существу является моделью, которую используют крупные компании, такие как Google и Facebook, но уменьшенная до размера малины. Единственный улов - из-за затрат на Pis, что это по существу создает ту же платформу разработки (но для веб-серфинга), поскольку кластер Pis предназначен для параллельного программирования. Использование нескольких Pis из-за их относительно низкой вычислительной способности скоро теряет эффективность при потреблении энергии, когда вы направляетесь к обработке больших объемов данных. Но только для обучения? Они идеальны.

ответил Fred 5 PMpSat, 05 Apr 2014 13:47:10 +040047Saturday 2014, 13:47:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132