Кластерные вычисления Bigslice с открытыми исходными кодами Grail для Golang


GRAIL имеет два проекта с открытым исходным кодом, Bigslice и Bigmachine, которые позволяют выполнять распределенные вычисления для больших наборов данных с использованием простых программ Golang.

Bigslice — это система для быстрой и крупномасштабной бессерверной обработки данных с использованием Go. Он предоставляет составной API, который позволяет пользователю выражать задачи обработки данных в терминах серии преобразований данных, которые вызывают пользовательский код.

Разработчики описывают Bigslice как похожие на системы обработки данных вроде Apache Spark и FlumeJava, но с другими целями. Bigslice создан для Go и используется как обычный пакет Go. Пользователи используют свой существующий код Go, а двоичные файлы Bigslice компилируются как обычные двоичные файлы Go.

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

Программы Bigslice — это обычные программы Go, предоставляющие пользователям знакомую среду и инструменты. Программа Bigslice может быть запущена на одном узле, как и любая другая программа, но она также способна прозрачно распределяться по специальному кластеру, полностью управляемому самой программой.

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

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

Bigslice использует Bigmachine для управления специализированным кластером вычислительных узлов для поддержки распределения. Bigmachine — это набор инструментов для создания самоуправляемых бессерверных приложений на Go. Он предоставляет API, который позволяет процессу драйвера формировать специальный кластер машин, на которые прозрачно распространяется пользовательский код. Код пользователя предоставляется через службы, которые представляют собой объекты Go с отслеживанием состояния, связанные с каждой машиной.


Добавить комментарий