~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 49747F322FBECF9D9F0218F8C7473204__1694265960 ✰
Заголовок документа оригинал.:
✰ Parallelization contract - Wikipedia ✰
Заголовок документа перевод.:
✰ Контракт на распараллеливание — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Parallelization_contract ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/49/04/49747f322fbecf9d9f0218f8c7473204.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/49/04/49747f322fbecf9d9f0218f8c7473204__translat.html ✰
Дата и время сохранения документа:
✰ 22.06.2024 17:39:46 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 9 September 2023, at 16:26 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Контракт на распараллеливание — Википедия Jump to content

Контракт на распараллеливание

Из Википедии, бесплатной энциклопедии

Контракт распараллеливания или модель программирования PACT является обобщением модели MapReduce программирования и использует функции второго порядка для параллельного выполнения параллельных вычислений над большими ( петабайтами ) наборами данных.

Обзор [ править ]

Подобно MapReduce, произвольный пользовательский код передается и выполняется PACT. Однако PACT обобщает несколько концепций MapReduce:

  • Функции второго порядка: PACT предоставляет больше функций второго порядка. пять функций второго порядка, называемых входными контрактами В настоящее время поддерживаются . В будущем этот набор может быть расширен.
  • Структура программы: PACT позволяет составлять произвольные ациклические графы потоков данных. По контракту, программы MapReduce имеют статическую структуру (Map -> уменьшить).
  • Модель данных: Модель данных PACT представляет собой записи произвольного количества полей произвольных типов. Пары KeyValue-Pairs MapReduce можно рассматривать как записи с двумя полями.

Apache Flink , платформа параллельной обработки данных с открытым исходным кодом, реализовала PACT . Flink позволяет пользователям указывать пользовательские функции с помощью аннотаций.

Логическое представление [ править ]

Контракты распараллеливания (PACT) — это операторы обработки данных в потоке данных. Следовательно, PACT имеет один или несколько входных данных и один или несколько выходных данных. ПАКТ состоит из двух компонентов:

  • Входной контракт
  • Пользовательская функция
  • Аннотации к пользовательскому коду

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

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

Поддерживаемые в настоящее время входные контракты и аннотации представлены и обсуждаются ниже.

Входные контракты [ править ]

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

Более формально, входные контракты — это функции второго порядка с функцией первого порядка (кодом пользователя), одним или несколькими наборами входных данных и ни одним или несколькими ключевыми полями для каждого входа в качестве параметров. Функция первого порядка вызывается (один или) несколько раз с подмножествами входного набора(ов). Поскольку функции первого порядка не имеют побочных эффектов, каждый вызов независим друг от друга, и все вызовы могут выполняться параллельно.

Функции второго порядка Map() и Reduc() модели программирования MapReduce являются входными контрактами в контексте модели программирования PACT.

КАРТА [ править ]

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

УМЕНЬШИТЬ [ править ]

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

КРЕСТ [ править ]

Контракт перекрестного ввода работает с двумя входами. Он строит декартово произведение записей обоих входов. Каждый элемент декартова произведения (пара записей) передается пользовательскому коду.

МАТЧ [ править ]

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

КОГРУППА [ править ]

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


данных договора Модель записи

В отличие от MapReduce, PACT использует более общую модель данных записей ( Pact Record ) для передачи данных между функциями. Запись пакта можно рассматривать как кортеж со свободной схемой. Интерпретация полей записи зависит от функции пользователя. Пара «ключ/значение» (как в MapReduce) — это частный случай этой записи, содержащей только два поля (ключ и значение).

Для входных контрактов, которые работают с ключами (например, //Reduce//, //Match// или //CoGroup//, указывается, какая комбинация полей записи составляет ключ. Можно использовать произвольную комбинацию полей. См. о Пример запроса том, как программы, определяющие //Reduce// и //Match//, сжимаются в одном или нескольких полях и могут быть написаны для минимального перемещения данных между полями.

Запись может быть редко заполнена, т.е. может содержать поля со значениями //null//. Допустимо создание записи, в которой, например, установлены только поля 2 и 5. Поля 1, 3, 4 интерпретируются как //null//. Однако поля, которые используются контрактом в качестве ключевых полей, не могут быть нулевыми, или возникает исключение.

Аннотации к пользовательскому коду [ править ]

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

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

Аннотация « Константные поля» отмечает поля, которые не изменяются функцией кода пользователя. Обратите внимание, что для каждой входной записи постоянное поле не может менять свое содержимое и положение ни в одной выходной записи! В случае двоичных функций второго порядка, таких как Cross, Match и CoGroup, пользователь может указать одну аннотацию для каждого входа.

Постоянные поля, кроме [ править ]

Аннотация « Константные поля кроме» является обратной аннотации «Константные поля». Он аннотирует все поля, которые могут быть изменены аннотированной пользовательской функцией, поэтому оптимизатор считает любое неаннотированное поле постоянным. Эту аннотацию следует использовать очень осторожно! Опять же, для двоичных функций второго порядка (Cross, Match, CoGroup) можно определить одну аннотацию для каждого входа. Обратите внимание, что для ввода можно использовать либо константные поля, либо аннотацию константных полей, кроме.

Программы ПАКТ [ править ]

Программы PACT построены как графы потоков данных, состоящие из источников данных, PACT и приемников данных. Один или несколько источников данных читают файлы, содержащие входные данные, и генерируют записи из этих файлов. Эти записи обрабатываются одним или несколькими PACT, каждый из которых состоит из входного контракта, пользовательского кода и дополнительных аннотаций кода. Наконец, результаты записываются обратно в выходные файлы одним или несколькими приемниками данных. В отличие от модели программирования MapReduce, программа PACT может быть произвольной сложности и не иметь фиксированной структуры.

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

Wiki:pactProgram.png?nolink&600

Преимущества MapReduce перед PACT

  • Модель программирования PACT поощряет более модульный стиль программирования. Хотя количество пользовательских функций обычно больше, они более детальны и ориентированы на конкретные проблемы. Следовательно, можно избежать переплетения функций, характерного для заданий MapReduce.
  • Задачи анализа данных могут быть выражены как простые потоки данных, особенно когда требуется несколько входных данных.
  • PACT имеет модель данных на основе записей, которая снижает необходимость указывать пользовательские типы данных, поскольку не все элементы данных должны быть упакованы в один тип значения.
  • PACT часто устраняет необходимость во вспомогательных структурах, таких как распределенный кэш, которые «ломают» модель параллельного программирования.
  • Операции по организации данных, такие как построение декартова произведения или объединение записей с одинаковыми ключами, выполняются системой времени выполнения. В MapReduce такая часто необходимая функциональность должна быть предусмотрена разработчиком пользовательского кода.
  • PACT определяет распараллеливание данных декларативным образом, что оставляет системе несколько степеней свободы. Эти степени свободы являются важной предпосылкой автоматической оптимизации. Компилятор PACT перечисляет различные стратегии выполнения и выбирает стратегию с наименьшим предполагаемым объемом данных для отправки. Напротив, Hadoop всегда выполняет задания MapReduce по одной и той же стратегии.

Для более детального сравнения моделей программирования MapReduce и PACT вы можете прочитать нашу статью //"MapReduce и PACT - Сравнение моделей параллельного программирования данных"// (см. нашу страницу ).

Ссылки [ править ]

Дальнейшее чтение [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 49747F322FBECF9D9F0218F8C7473204__1694265960
URL1:https://en.wikipedia.org/wiki/Parallelization_contract
Заголовок, (Title) документа по адресу, URL1:
Parallelization contract - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)