Что такое режим yarn-client в Spark?
Apache Spark недавно обновил версию до 0.8.1, в которой yarn-client режим доступен. Мой вопрос в том, что на самом деле означает режим yarn-client? В документации говорится:
в режиме yarn-client приложение будет запущено локально. Так же, как запуск приложения или spark-shell в локальном / Mesos / автономном режиме. Метод запуска также похож на них, просто убедитесь, что когда вам нужно указать мастер-url, используйте » yarn-client» вместо
что значит «запущен локально»? Локально где? На кластере искр?
В чем специфическое отличие от режима yarn-standalone?
автор: Brad Cupit
6 ответов
приложение Spark состоит из драйвера и одного или нескольких исполнителей. Программа драйвера является основной программой (где вы создаете экземпляр SparkContext ), который координирует исполнителей для запуска приложения Spark. Исполнители выполняют задачи, назначенные драйвером.
29 — Hadoop. Что такое YARN?
приложение YARN имеет следующие роли: клиент yarn, мастер приложений yarn и список контейнеров, запущенных на менеджерах узлов.
когда применение искры бежит на пряже, оно имеет свое собственное реализация клиента пряжи и мастера применения пряжи.
С этим фоном основное различие заключается в том, где работает программа драйвера.
- автономный режим Yarn: ваша программа драйвера работает как поток мастера приложений yarn, который сам работает на одном из менеджеров узлов в кластере. Клиент пряжи просто вытягивает статус из Мастера приложений. Этот режим совпадает с заданием mapreduce, где мастер приложения MR координирует контейнеры для запуска задач map / reduce.
- режим клиента пряжи: ваша программа водителя бежит на клиенте пряжи где вы вводите команду для того чтобы представить применение искры (не может быть машиной в кластере пряжи). В этом режиме, хотя программа привода выполняется на клиентском компьютере, задачи выполняются на исполнителях в менеджерах узлов кластера YARN.
автор: Mingjiang Shi
таким образом, в spark у вас есть два разных компонента. Есть водитель и рабочие. В режиме yarn-cluster драйвер работает удаленно на узле данных, а рабочие — на отдельных узлах данных. В режиме yarn-client драйвер находится на машине, которая запустила задание, а рабочие-на узлах данных. В локальном режиме водитель и рабочие находятся на машине, которая запустила задание.
при запуске .collect () данные из рабочих узлов втягиваются в водитель. Это, в основном, где происходит последняя часть обработки.
для себя я обнаружил, что режим yarn-cluster лучше, когда я дома на vpn, но режим yarn-client лучше, когда я запускаю код из центра обработки данных.
режим пряжи-клиента также означает, что вы связываете один рабочий узел меньше для драйвера.
автор: ben jarman
приложение Spark работает в
пряжа-режим клиента:
- программа драйвера работает на клиентском компьютере или локальном компьютере, где было запущено приложение.
- распределение ресурсов выполняется диспетчером ресурсов YARN на основе локальности данных на узлах данных, а программа драйвера с локальной машины будет управлять исполнителями на кластере spark (менеджеры узлов).
пожалуйста, обратитесь к этой cloudera статьи для получения дополнительной информации.
Yarn — пакетный менеджер, в который нельзя не влюбиться!
разница между автономным режимом и режимом развертывания пряжи,
- оптимизация ресурсов не будет эффективной в автономном режиме.
- в автономном режиме программа драйвера запускает исполнителя в каждом узле кластера независимо от местоположения данных.
- standalone подходит для случая использования, когда выполняется только ваше приложение spark, и кластеру не нужно выделять ресурсы для другие рабочие места эффективным образом.
автор: Krishna Reddy
и spark и yarn являются распределенными рамками, но их роли различны:
Yarn-это структура управления ресурсами, для каждого приложения она имеет следующие роли:
ApplicationMaster: управление ресурсами одного приложения, включая запрос / освобождение ресурса из пряжи для приложения и монитора.
попытка: попытка — это обычный процесс, который выполняет часть всей работы приложения. Например, задание mapreduce который состоит из нескольких картографов и редукторов , каждый картограф и редуктор является попыткой.
общий процесс суммирования заявки на пряжу:
- клиент отправляет запрос заявки в yarn. В запрос, пряжа должен знать класс ApplicationMaster; для SparkApplication, это org.apache.spark.deploy.yarn.ApplicationMaster ,для задания MapReduce , это org.apache.hadoop.mapreduce.v2.app.MRAppMaster .
- пряжа выделяет некоторый ресурс для процесса ApplicationMaster и начать процесс ApplicationMaster в одном из узлов кластера;
- после запуска ApplicationMaster ApplicationMaster запросит ресурс у Yarn для этого приложения и запустит работника;
для Spark, распределенной вычислительной среды, вычислительное задание разделено на множество небольших задач, и каждый исполнитель будет отвечать за каждую задачу, драйвер соберет результат всех задач исполнителя и получит глобальный результат. Искра приложение имеет только один драйвер с несколькими исполнителями.
Итак, проблема возникает, когда Spark использует Yarn в качестве инструмента управления ресурсами в кластере:
- в режиме кластера пряжи клиент Spark отправит приложение spark в пряжа, и водитель Искры и исполнитель искры под наблюдением пряжи. С точки зрения yarn, Spark Driver и Spark Executor имеют никакой разницы, но обычные java-процессы, а именно приложение рабочий процесс. Так, когда клиентский процесс ушел, например, клиент процесс прекращен или убит, применение искры на пряже все еще бежит.
- в режиме клиента yarn только исполнитель Spark находится под
надзор за пряжей. Yarn ApplicationMaster запросит ресурс для просто искры исполнителя. Программа драйвера запущена в клиенте процесс, который не имеет ничего общего с пряжей, просто процесс отправки применение к пряже.Так, когда клиент уходит, например клиент
процесс завершается, драйвер выключен и вычисления завершены.
автор: wuchang
в режиме yarn-client приложение spark работает на вашем локальном компьютере. В режиме yarn-standalone ваше приложение spark будет отправлено в ResourceManager YARN как Yarn ApplicationMaster, а ваше приложение работает в узле yarn, где работает ApplicationMaster. В обоих случаях yarn служит менеджером кластера spark. Ваше приложение (SparkContext) отправляет задачи в yarn.
автор: Paul Wang
прежде всего, давайте проясним, в чем разница между запуском Spark в автономном режиме и запуском Spark в диспетчере кластеров (Mesos или YARN).
при запуске Spark в автономном режиме у вас есть:
- главный узел искры
- некоторые узлы Spark slaves, которые были «зарегистрированы» с мастером Spark
- главный узел выполнит драйвер Spark, отправляющий задачи исполнители также будут выполнять любые переговоры о ресурсах,что является довольно простым. Например, по умолчанию каждое задание будет потреблять все имеющиеся ресурсы.
- ведомые узлы будут запускать исполнители Spark, выполняя задачи, представленные им от драйвера.
при использовании менеджера кластеров (я опишу для YARN, который является наиболее распространенным случаем), у вас есть :
- менеджер ресурсов пряжи (работает постоянно), который принимает запросы на новые приложения и новые ресурсы (контейнеры для пряжи)
- несколько менеджеров узлов пряжи (работает постоянно), которые состоят из пула работников, где менеджер ресурсов будет выделять контейнеры.
- мастер приложения (выполняется в течение всего срока действия приложения YARN), который отвечает за запрос контейнеров от менеджера ресурсов и отправку команд в выделенные контейнеры.
обратите внимание, что в этом есть 2 режима дело: cluster-mode и client-mode . В режиме клиента, который вы упомянули:
- драйвер Spark будет запущен в машине, где выполняется команда.
- мастер приложения будет запущен в выделенном контейнере в кластере.
- исполнители Spark будут запускаться в выделенных контейнерах.
- драйвер Spark будет отвечать за указание мастеру приложения запрашивать ресурсы и отправлять команды в выделяются контейнеры, получая их результаты и предоставляя результаты.
Итак, вернемся к вашим вопросам:
что значит «запущен локально»? Локально где? На Искре кластер?
локально означает на сервере, на котором вы выполняете команду (которая может быть spark-submit или spark-shell ). Это означает, что вы можете запустить его в главном узле кластера или также запустить его на сервере снаружи кластер (например, ваш ноутбук), пока существует соответствующая конфигурация, чтобы этот сервер мог взаимодействовать с кластером и наоборот.
что специфическое отличие от пряж-автономного режима?
как описано выше, разница в том, что в автономном режиме нет диспетчера кластеров вообще. Более подробный анализ и категоризация всех различий конкретно для каждого режима доступны в этом статьи.
Источник: askdev.ru
Yarn или npm: всё, что вам нужно знать
Изучение
На чтение 10 мин Просмотров 3.3к. Опубликовано 28.09.2021
В этом руководстве мы сравним Yarn и npm — два самых популярных менеджера пакетов. Мы разместим их рядом и исследуем соответствующие преимущества и недостатки, чтобы помочь вам выбрать, какой из них использовать для ваших проектов.
Изложение основ
В старые добрые времена разработчикам было достаточно простого текстового редактора, чтобы создавать и управлять большей частью своих проектов. Но с тех пор Интернет сильно изменился. В настоящее время даже в довольно простом проекте часто встречаются сотни или тысячи скриптов со сложными вложенными зависимостями, которыми просто невозможно управлять без какого-либо автоматизированного инструмента. И здесь в игру вступают менеджеры пакетов.
Менеджер пакетов является инструментом, который автоматически обрабатывает зависимости проекта, в различных направлениях. Например, с помощью диспетчера пакетов мы можем устанавливать, удалять, обновлять и обновлять пакеты, настраивать параметры проекта, запускать сценарии и т.д. Всю тяжелую и утомительную работу выполняет менеджер пакетов, оставляя нам только самое интересное — само кодирование.
npm означает диспетчер пакетов узлов. Он был выпущен еще в 2010 году, положив начало новой эре в веб-разработке. До этого зависимости проекта загружались и управлялись вручную. npm была волшебной палочкой, которая подняла Интернет на новый уровень.
На самом деле npm включает в себя три вещи:
- сайт для управления различными аспектами вашего опыта НОГО
- реестр для доступа к обширным базам данных общих пакетов JavaScript
- интерфейс командной строки (CLI), для взаимодействия с НПМ через терминал
Однако, когда большинство людей говорят о npm, они обычно имеют в виду последнее — инструмент CLI. Он поставляется как менеджер пакетов по умолчанию с каждой новой установкой Node. Это означает, что вы можете сразу начать пользоваться им.
Если вы хотите более глубоко погрузиться в работу с npm, обратитесь к нашему Руководству по Node Package Manager.
Yarn означает еще один переговорщик ресурсов. Менеджер пакетов Yarn — альтернатива npm, выпущенная Facebook в октябре 2016 года. Первоначальная цель Yarn заключалась в устранении недостатков npm, таких как проблемы с производительностью и безопасностью. Yarn был быстро позиционирован как безопасный, быстрый и надежный инструмент управления зависимостями JavaScript.
Но команда npm усвоила урок и быстро заполнила пробелы в npm, реализовав недостающие функции.
Давайте быстро отправимся в путешествие во времени, чтобы увидеть общую картину:
- 2010: выпуск npm с поддержкой Node.
- 2016: Выпущена Yarn. Показывает гораздо большую производительность, чем npm. Он также создает yarn.lockфайл, который делает совместное использование и точное копирование репозиториев намного более простым и предсказуемым.
- 2017: выпущен npm 5. Он предлагает автоматическое создание package-lock.jsonфайла в ответ на yarn.lock.
- 2018: выпуск npm 6 с улучшенной безопасностью. Теперь npm проверяет уязвимости безопасности перед установкой зависимостей.
- 2020: Выпущены Yarn 2 и npm 7. Оба пакета содержат новые замечательные функции, как мы увидим позже в этом руководстве.
- 2021: Выпущена Yarn 3 с различными улучшениями.
В настоящее время оба менеджера пакетов участвуют в гонке управления пакетами, предлагая аналогичные функции и возможности. Но все же есть несколько отличий, которые помогают определить, что мы выберем для использования.
В оставшейся части этого урока мы исследуем основные сходства и различия между npm и Yarn.
Yarn или npm: сравнение установок
Мы начнем наше сравнительное исследование с процесса установки как для npm, так и для Yarn.
Установка самих менеджеров пакетов
Как я уже отмечал выше, npm поставляется с предустановленной Node, поэтому нет необходимости устанавливать npm вручную.
Напротив, Yarn необходимо установить явно. Во-первых, нам нужно установить Yarn глобально:
npm install -g yarn
Затем мы можем использовать его для каждого проекта, установив желаемую версию внутри нашего проекта. Мы делаем это, выполняя yarn set versionкоманду в корневом каталоге проекта:
yarn set version berry
В данном случае berryэто версия, которую мы хотим установить.
Если мы хотим обновиться до последней версии, мы запускаем это:
yarn set version latest
С Yarn мы можем использовать разные версии для каждого проекта.
Чтобы сделать то же самое с npm, вам потребуется установить nvm (Node Version Manager). Вот как установить несколько версий Node с помощью nvm.
Установка зависимостей проекта
Теперь посмотрим, как устанавливаются зависимости проекта.
При запуске npm installзависимости устанавливаются последовательно, одна за другой. Журналы вывода в терминале информативны, но их трудно читать.
Чтобы установить пакеты с помощью Yarn, мы запускаем yarnкоманду. Yarn устанавливает пакеты параллельно, что является одной из причин, по которой он работает быстрее, чем npm. Если вы используете Yarn 1, вы увидите, что журналы вывода пряжи чистые, визуально различимые и короткие. Они также упорядочены в виде дерева для облегчения понимания. Но это изменилось в версиях 2 и 3, где журналы не такие интуитивно понятные и удобочитаемые.
До сих пор мы видели, что npm и Yarn имеют разные команды для установки пакетов. В следующем разделе мы рассмотрим другие команды.
Сравнение команд npm и Yarn
npm и Yarn имеют много общих команд, но есть также много неидентичных команд. Давайте сначала рассмотрим некоторые из идентичных команд:
- npm init| yarn init: создать новый пакет
- npm run| yarn run: запустить сценарий, определенный вpackage.json
- npm test| yarn test: проверить пакет
- npm publish| yarn publish: опубликовать пакет
- npm cache clean| yarn cache clean: удалить все данные из папки кеша
Эти команды упрощают переключение между двумя менеджерами, но есть некоторые неидентичные команды, которые могут вызвать путаницу. Посмотрим, что они есть в следующем списке:
- npm install| yarn: установить зависимости
- npm install [package]| yarn add [package]: установить пакет
- npm install —save-dev [package]| yarn add — -dev [package]: установить пакет как зависимость разработки
- npm uninstall [package]| yarn remove [package]: удалить пакет
- npm uninstall —save-dev [package]| yarn remove [package]: удалить пакет зависимостей разработки
- npm update| yarn upgrade: обновить зависимости
- npm update [package]| yarn upgrade [package]: обновить пакет
В Yarn также есть несколько уникальных команд, у которых нет эквивалентов в npm. Например, whyкоманда отображает причину, по которой нужен пакет: это может быть зависимость, собственный модуль или зависимость проекта.
Yarn или npm: скорость и производительность
Когда Yarn или npm нужно установить пакет, они выполняют ряд задач. В npm эти задачи выполняются для каждого пакета и последовательно, что означает, что он будет ждать полной установки пакета, прежде чем перейти к следующему. Напротив, Yarn выполняет эти задачи параллельно, повышая производительность.
Хотя оба менеджера предлагают механизмы кеширования, Yarn, кажется, делает это немного лучше. Реализуя парадигму нулевой установки, как мы увидим в разделе сравнения функций, она способна устанавливать пакеты практически в кратчайшие сроки. Он кэширует каждый пакет и сохраняет его на диске, поэтому при следующей установке этого пакета вам даже не потребуется подключение к Интернету, поскольку пакет устанавливается с диска в автономном режиме.
Несмотря на то, что Yarn имеет некоторые преимущества, скорости Yarn и npm в их последних версиях довольно сопоставимы. Так что здесь мы не можем определить чистого победителя.
Yarn или npm: сравнение безопасности
Одна из основных критических замечаний к npm касается безопасности. Предыдущие версии npm имеют несколько серьезных уязвимостей.
Начиная с версии 6, npm проверяет пакеты во время установки и сообщает вам, обнаружены ли какие-либо уязвимости. Мы можем выполнить эту проверку вручную, запустив проверку npm auditустановленных пакетов. Если будут обнаружены какие-либо уязвимости, npm даст нам рекомендации по безопасности.
Как вы можете видеть на скриншоте выше, мы можем запустить npm audit fixисправление уязвимостей пакетов, и деревья зависимостей будут исправлены, если это возможно.
И Yarn, и npm используют криптографические алгоритмы хеширования для обеспечения целостности пакетов.
Yarn или npm: сравнение характеристик
Как и в случае с командами, некоторые функции являются общими для npm и Yarn, но есть и некоторые отличия. Давайте сначала рассмотрим общие черты этих двух менеджеров пакетов.
Создание файла блокировки
В package.jsonфайле, в котором npm и Yarn отслеживают зависимости проекта, номера версий не всегда точны. Вместо этого вы можете определить ряд версий. Таким образом, вы можете выбрать конкретную основную и вспомогательную версию пакета, но разрешить npm установить последний патч, который может исправить некоторые ошибки.
В идеальном мире семантического управления версиями исправленные выпуски не будут содержать критических изменений. Но, к сожалению, это не всегда так. Стратегия, используемая npm, может привести к тому, что на двух машинах будет установлен один и тот же package.jsonфайл, но будут установлены разные версии пакета, что может привести к ошибкам.
Чтобы избежать несовпадения версий пакетов, точная установленная версия фиксируется в файле блокировки пакета. Каждый раз, когда модуль добавляется, НПМ и Yarn создать (или обновление) а package-lock.jsonи yarn.lockфайл соответственно. Таким образом, вы можете гарантировать, что другой компьютер установит точно такой же пакет, но при этом будет иметь диапазон допустимых версий, определенных в package.json.
Использование рабочих пространств
Рабочие области позволяют использовать один монорепозиторий для управления зависимостями в нескольких проектах. Это означает, что у вас есть один корневой пакет верхнего уровня, который имеет несколько дочерних пакетов, называемых рабочими областями.
Удаленный запуск скриптов
Команда npxиспользуется для запуска скриптов из./node_modules/.bin. Это также позволяет вам выполнять пакеты из реестра npm, не устанавливая их в зависимости вашего проекта. Например, вы можете создать новое приложение React, выполнив следующее:
npx create-react-app my-app
В Yarn вы можете добиться того же результата, используя эквивалентную dlxкоманду:
yarn dlx create-react-app my-app
Остальные функции, которые мы собираемся изучить, уникальны для Yarn.
Zero installs
При нулевых установках кеш сохраняется в каталоге вашего проекта в.yarnпапке. Когда вы используете такие команды, как yarnили yarn add , Yarn создаст.pnp.cjsфайл. Этот файл содержит иерархию зависимостей, используемую Node для загрузки пакетов вашего проекта. Таким образом, вы можете получить к ним доступ практически в нулевое время.
Plug’n’Play
Plug’n’Play — это альтернативная стратегия установки. Вместо того, чтобы генерировать node_modulesкаталог и оставлять разрешение на Node, Yarn генерирует единственный.pnp.cjsфайл, который сопоставляет пакеты с их местоположением на диске и их списком зависимостей. Эта функция может привести к более быстрому запуску проекта, более оптимизированному дереву зависимостей, более быстрой установке и, конечно же, устраняет необходимость в node_modulesпапке.
Лицензии
В Yarn есть встроенная программа проверки лицензий, которая может быть полезна в различных сценариях при разработке приложений.
Yarn против npm: какой диспетчер пакетов выбрать
Мы рассмотрели различные сходства и различия npm и Yarn, но не определили, что лучше и какое нам следует выбрать. Как всегда, ответ зависит от наших желаний и требований.
В качестве общего руководства позвольте мне в заключение дать следующий совет:
Выберите npm, если вас устраивает текущий рабочий процесс, вы не хотите устанавливать дополнительный инструмент и у вас мало места на диске.
Выберите Yarn, если вам нужны отличные функции, такие как Plug’n’Play, вам нужны некоторые функции, которых нет в npm, и у вас достаточно места на диске.
Если вам все еще трудно принять четкое решение между npm и Yarn, вы можете проверить pnpm, который пытается объединить лучшее от обоих менеджеров пакетов и является третьей большой рыбой в пуле управления пакетами.
Yarn или npm: заключение
Мы увидели, насколько важны менеджеры пакетов для современной веб-разработки, и сравнили двух самых популярных конкурентов на рынке. У них обоих есть свои преимущества и недостатки, и для того, чтобы выбрать лучшее, вам необходимо иметь четкое представление о ваших требованиях. Лучший способ решить, что вам больше подходит, — это попробовать их оба и посмотреть, какой из них работает лучше.
И, наконец, не зацикливайтесь на этом. Просто выберите одно и переходите к самому интересному: созданию отличных приложений!
Источник: bestprogrammer.ru
Глава 5 YARN: платформа планирования ресурсов
Полное имя YARN — это еще один согласователь ресурсов, что означает еще один планировщик ресурсов. Начиная с Apache Hadoop 2.0, Hadoop включает в себя YARN.
5.1.1 Hadoop 1.x и Hadoop 2.x
- (1)MRv1
Прежде чем представить Yarn, давайте вернемся к методу управления расписанием Hadoop 1.x для заданий MapReduce. В версии Hadoop 1.x MapReduce (также известный как MRv1) отвечает как за управление ресурсами, так и за обработку заданий. Среда выполнения MapReduce (MRv1) состоит из (a) JobTracker и (нескольких) сервисов TaskTracker. Среди них, JobTracker отвечает за управление ресурсами и контроль всех операций, а TaskTracker отвечает за получение команд от JobTracker и их выполнение. Платформа имеет недостатки в масштабируемости, отказоустойчивости и поддержке нескольких кадров, что также способствовало созданию MRv2. - (2)MRv2
В Apache Hadoop 2.x мы разлагаем MapReduce (MRv1) на Apache Hadoop YARN, общую инфраструктуру управления распределенными приложениями, в то время как Apache Hadoop MapReduce (также известный как MRv2) по-прежнему остается чисто распределенной вычислительной средой. 。
MRv2 — это вычислительная среда MapReduce, работающая на платформе управления ресурсами YARN. Его среда выполнения больше не состоит из сервисов, таких как JobTracker и TaskTracker, но стала общей системой управления ресурсами YARN и процессом управления заданиями ApplicationMaster. Короче говоря, MRv1 — это только независимая автономная вычислительная среда, а MRv2 — это MapReduce, работающий на YARN. - (3)YARN
YARN — это система управления ресурсами в Hadoop 2.x. Это общий модуль управления ресурсами, который может выполнять управление ресурсами и планирование для различных приложений. YARN не ограничивается одной платформой MapReduce, но может также использоваться другими средами, такими как Hive, Spark, Storm и т. Д. Благодаря универсальности YARN, ядро следующего поколения MapReduce сместилось с простой вычислительной среды, поддерживающей одно приложение MapReduce, на универсальную систему управления ресурсами YARN.
Чтобы все могли лучше понять программный стек с ядром YARN (Hadoop 2.x), мы сравним его с программным стеком с ядром MapReduce (Hadoop 1.x), как показано ниже. В Yarn мы изменили концепцию задания на приложение, потому что в новом Hadoop 2.x приложением является не только MapReduce, но и другие приложения, такие как DAG (направленный ациклический граф, направленный ациклический граф, например, штормовая заявка). Другой целью Yarn является расширение Hadoop, чтобы он мог не только поддерживать вычисления MapReduce, но и легко управлять такими приложениями, как Hive, Hbase, Pig, Spark / Shark и т. Д.
YARN в Hadoop 2.x больше не ограничивается вычислительной средой, которая поддерживает MapReduce, а развивается в направлении унифицированного управления множеством платформ.
5.1.2 Архитектура YARN
Архитектура YARN по-прежнему является классической структурой ведущий / ведомый (ведущий / ведомый), как показано на следующем рисунке. В общем случае служба YARN состоит из ResourceManager (RM) и нескольких NodeManager (NM). ResourceManager является главным узлом, а NodeManager является подчиненным узлом.
Проще говоря, YARN в основном состоит из нескольких компонентов, таких как ResourceManager, NodeManager, ApplicationMaster и Container.
- Контейнер — это абстракция компьютерных вычислительных ресурсов Yarn, фактически набор ресурсов ЦП и памяти. Все приложения будут работать в контейнерах.
- ApplicationMaster — это абстракция приложения, работающего в Yarn. На самом деле это экземпляр приложения определенного типа. ApplicationMaster — это уровень приложения. Его основная функция — подавать заявку на вычислительные ресурсы (контейнеры) из ResourceManager (глобальный) и взаимодействовать с NodeManager. Выполнять и контролировать конкретные задачи.
- Планировщик является компонентом ResourceManager, предназначенным для управления ресурсами, он отвечает за распределение ресурсов контейнера в NodeManager. NodeManager также будет непрерывно отправлять свое использование контейнера в ResourceManager.
(1) ResourceManager(RM)
RM — глобальный менеджер ресурсов, отвечающий за управление ресурсами и распределение всей системы. RM имеет два основных компонента: планировщик и диспетчер приложений.
- Планировщик отвечает за распределение ресурсов различным запущенным приложениям на основе знакомых ограничений, таких как емкость и очереди. Планировщик является чистым планировщиком, он не отслеживает и не отслеживает состояние приложения. Кроме того, из-за сбоя приложения или сбоя оборудования он не может гарантировать повторный запуск сбойных задач. Планировщик выполняет свою функцию планирования в соответствии с требованиями приложения к ресурсам, он основан на абстрактной концепции контейнеров ресурсов, содержащих такие элементы, как память, процессор, диск, сеть и т. Д. YARN предлагает различные доступные планировщики, такие как FairScheduler и Capacity Scheduler.
- ApplicationsManager отвечает за прием заявок на работу, согласование первого контейнера для выполнения ApplicationMaster для конкретного приложения и предоставление услуг для перезапуска контейнера ApplicationMaster в случае сбоя. Каждое приложение, ApplicationMaster, отвечает за согласование соответствующего контейнера ресурсов с планировщиком, отслеживание его состояния и мониторинг хода выполнения.
(2) ApplicationMaster ( AM )
Когда пользователь отправляет приложение, ему необходимо предоставить ApplicationMaster (AM) для отслеживания и управления приложением, которое отвечает за применение ресурсов к ResourceManager и просит NodeManger запускать задачи, которые могут занимать определенные ресурсы.
Основные функции AM включают в себя:
- Согласование с планировщиком RM для получения ресурсов (обозначается как Container);
- Далее распределяем полученные задачи по внутренним задачам;
- Общайтесь с NM для запуска / остановки задач;
- Отслеживайте текущее состояние всех задач и повторно применяйте ресурсы для задачи, чтобы перезапустить задачу в случае сбоя задачи.
ApplicationMaster отвечает за всю работу в жизненном цикле приложения. Но обратите внимание, что каждое приложение (не каждое) имеет ApplicationMaster, который может работать на компьютере, отличном от ResourceManager.
(3) NodeManager ( NM )
NM — это менеджер ресурсов и задач на каждом узле. С одной стороны, он будет регулярно сообщать RM об использовании ресурсов на узле и текущем состоянии каждого контейнера, с другой стороны, он получает и обрабатывает запуск контейнера из AM. / Перестать ждать различные запросы.
Функция NM является более конкретной, которая отвечает за поддержание состояния Контейнера и поддержание пульса в RM.
(4) Container
Контейнер — это абстракция ресурсов в YARN, которая инкапсулирует многомерные ресурсы в узле, такие как память, процессор, диск, сеть и т. Д. Когда AM применяет ресурсы к RM, ресурсы, возвращаемые RM для AM, представлены контейнером. , YARN назначит контейнер для каждой задачи, и задача может использовать только ресурсы, описанные в контейнере. Следует отметить, что Контейнер отличается от слота в MRv1, он является модулем динамического разделения ресурсов, который генерируется динамически в соответствии с потребностями приложения. В настоящее время YARN поддерживает только ресурсы процессора и памяти и использует легкий механизм изоляции ресурсов Cgroups для изоляции ресурсов.
5.1.3 Рабочий процесс YARN
После понимания представленных выше концепций необходимо взглянуть на процесс выполнения Application в Yarn. Когда пользователь отправляет приложение в YARN, YARN запускает приложение в два этапа: первый этап — запуск ApplicationMaster, второй этап — создание приложения с помощью ApplicationMaster, применение к нему ресурсов и мониторинг его. Весь процесс операции, пока операция не завершена.
На следующем рисунке показан весь процесс выполнения приложения:
(1) Клиентская программа отправляет приложение в ResourceManager и запрашивает экземпляр ApplicationMaster.
(2) ResourceManager находит NodeManager, который может запускать контейнер, и запускает экземпляр ApplicationMaster в этом контейнере.
(3) ApplicationMaster регистрируется в ResourceManager.После регистрации клиент может запросить ResourceManager для получения подробной информации о своем ApplicationMaster и напрямую взаимодействовать со своим ApplicationMaster в будущем.
(4) В процессе нормальной работы ApplicationMaster отправляет запрос запроса ресурса в ResourceManager в соответствии с протоколом запроса ресурса.
(5) После того, как контейнер успешно распределен, ApplicationMaster запускает контейнер, отправляя информацию о спецификации запуска контейнера в NodeManager. Информация о спецификации запуска контейнера содержит материалы, необходимые для взаимодействия контейнера и ApplicationMaster.
(6) Код приложения запускается в запущенном контейнере и отправляет ход выполнения, состояние и другую информацию в ApplicationMaster через протокол для конкретного приложения.
(7) Во время работы приложения клиент, отправляющий приложение, активно связывается с ApplicationMaster для получения информации, такой как текущее состояние и ход выполнения приложения. Протокол связи также зависит от приложения.
(8) Как только выполнение приложения завершено и все связанные работы завершены, ApplicationMaster отменяет регистрацию в ResourceManager, а затем закрывается, и все используемые контейнеры также возвращаются в систему.
Источник: russianblogs.com
Использование Yarn в Ubuntu и других дистрибутивах Linux
Этот краткий учебник покажет вам официальный способ установки менеджера пакетов Yarn в Ubuntu и Debian Linux.
Вы также изучите некоторые базовые команды Yarn и шаги, чтобы полностью удалить Yarn.
Yarn – менеджер пакетов JavaScript с открытым исходным кодом, разработанный Facebook.
Это альтернатива или, я должен сказать, улучшение для популярного менеджера пакетов npm.
Команда разработчиков Facebook создала Yarn, чтобы преодолеть недостатки npm.
Facebook утверждает, что он быстрее, надежнее и безопаснее, чем npm.
Как и npm, Yarn предоставляет вам способ автоматизации процесса установки, обновления, настройки и удаления пакетов, извлеченных из глобального реестра.
Преимущество Yarn заключается в том, что он работает быстрее, поскольку кэширует каждый загружаемый пакет, поэтому нет необходимости загружать его снова.
Он также распараллеливает операции для максимального использования ресурсов.
Yarn также использует контрольные суммы для проверки целостности каждого установленного пакета перед выполнением его кода. Yarn также гарантирует, что установка, которая работала в одной системе, будет работать точно так же, как и в любой другой системе.
Если вы используете nodejs в Ubuntu, возможно, в вашей системе уже установлен npm.
В этом случае вы можете использовать npm для глобальной установки Yarn следующим образом:
sudo npm install yarn -g
Тем не менее, я бы рекомендовал использовать официальный способ установки Yarn в Ubuntu / Debian.
Установка Yarn на Ubuntu и Debian [Официальный путь]
Упомянутые здесь инструкции должны быть применимы ко всем версиям Ubuntu, таким как Ubuntu 18.04, 16.04 и т. д.
Тот же набор инструкций также действителен для Debian и других дистрибутивов на основе Debian.
Поскольку в руководстве используется Curl для добавления ключа GPG проекта Yarn, было бы неплохо проверить, установлен ли Curl уже или нет.
sudo apt install curl
Приведенная выше команда установит Curl, если он еще не установлен.
Теперь, когда у вас есть curl, вы можете использовать его для добавления ключа GPG проекта Yarn следующим образом:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add —
После этого добавьте репозиторий в свой список источников, чтобы вы могли легко обновить пакет Yarn в будущем с остальными обновлениями системы:
sudo sh -c ‘echo «deb https://dl.yarnpkg.com/debian/ stable main» >> /etc/apt/sources.list.d/yarn.list’
Обновите систему Ubuntu или Debian, чтобы обновить список доступных пакетов, а затем установите yarn:
sudo apt update sudo apt install yarn
Это установит Yarn вместе с nodejs.
После завершения процесса убедитесь, что программа yarn была успешно установлена.
Вы можете сделать это, проверив версию.
yarn —version
Пример вывода:
yarn —version 1.12.3
Это означает, что в моей системе установлена версия 1.12.3 Yarn.
Использование Yarn
Я предполагаю, что у вас есть некоторые базовые знания о программировании на JavaScript и о том, как работают зависимости.
Я не буду вдаваться в подробности об этом.
Я покажу вам некоторые основные команды Yarn, которые помогут вам начать работу с ним.
Создание нового проекта с помощью Yarn
Как и npm, Yarn также работает с файлом package.json.
Здесь вы добавляете свои зависимости.
Все пакеты зависимостей кэшируются в каталоге node_modules в корневом каталоге вашего проекта.
В корневом каталоге вашего проекта выполните следующую команду, чтобы сгенерировать свежий файл package.json:
Он задаст вам ряд вопросов.
Вы можете пропустить вопросы или перейти к значениям по умолчанию, нажав Enter.
yarn init yarn init v1.12.3 question name (test_yarn): test_yarn_proect question version (1.0.0): 0.1 question description: Test Yarn question entry point (index.js): question repository url: question author: abhishek question license (MIT): question private: success Saved package.json Done in 82.42s.
При этом вы получите файл package.json такого типа:
Теперь, когда у вас есть package.json, вы можете отредактировать его вручную, чтобы добавить или удалить зависимости пакета, или использовать команды Yarn (предпочтительно).
Добавление зависимостей с помощьюYarn
Вы можете добавить зависимости определенного пакета следующим образом:
yarn add
Например, если вы хотите использовать Lodash в своем проекте, вы можете добавить его с помощью Yarn следующим образом:
И вы можете увидеть, что эта зависимость была автоматически добавлена в файл package.json:
По умолчанию Yarn добавит в зависимость последнюю версию пакета. Е
сли вы хотите использовать конкретную версию, вы можете указать ее при добавлении.
Он увидит, имеет ли данный пакет более новую версию, и обновит его соответствующим образом.
Вы также можете обновить все зависимости вашего проекта до последней версии с помощью одной команды:
yarn upgrade
Он проверит версии всех зависимостей и обновит их, если появятся более новые версии.
Удаление зависимостей с помощью Yarn
Вы можете удалить пакет из зависимостей вашего проекта следующим образом:
yarn remove
Установить все зависимости проекта
Если вы внесли какие-либо изменения в файл project.json, вы должны запустить либо
yarn
yarn install
установить все зависимости сразу.
Как удалить Yarn из Ubuntu или Debian
Я завершу этот урок, упомянув шаги по удалению Yarn из вашей системы, если вы использовали вышеуказанные шаги для его установки.
Если вы когда-нибудь для себя поняли, что вам больше не нужна программа Yarn, вы сможете удалить ее.
Используйте следующую команду, чтобы удалить Yarn и его зависимости.
sudo apt purge yarn
Вам также следует удалить репозиторий Yarn из списка репозиториев:
sudo rm /etc/apt/sources.list.d/yarn.list
Необязательный следующий шаг – удалить ключ GPG, который вы добавили к доверенным ключам.
Но для этого вам нужно знать ключ.
Вы можете получить это с помощью команды apt-key:
Ключ здесь – это последние 8 символов отпечатка ключа GPG в строке, начинающейся с pub.
Итак, в моем случае ключ 86E50310, и я удалю его с помощью этой команды:
sudo apt-key del 86E50310
Вы увидите OK в выводе, и ключ GPG пакета Yarn будет удален из списка ключей GPG, которым ваша система доверяет.
Я надеюсь, что это руководство помогло вам установить Yarn в Ubuntu, Debian, Linux Mint, и т. д.
Я предоставил несколько основных команд Yarn, которые помогут вам начать работу с полным описанием действий по удалению Yarn из вашей системы.
Источник: itisgood.ru
Yarn что это за программа
Ubuntu 18.04: установка node.js, nvm и yarn
Небольшая инструкция-шпаргалка об установке node.js, nvm и yarn на Ubuntu 18.04.
Node.js, NVM
Простейший способ — установка из стандартного репозитория Ubuntu:
sudo apt install nodejs . sudo apt install npm
Это гарантирует, что Вы получите стабильную версию, однако вовсе не факт, что версия будет самой свежей. Альтернатива — ppa репозиторий. Для установки 10.х выполняем команды:
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash — sudo apt-get install -y nodejs
Есть и третий, наиболее гибкий способ — использование nvm (node version manager), который позволит установить любую версию, а также переключаться между версиями. Сначала установим менеджер:
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
Обновим среду оболочки, для чего требуется закрыть и снова открыть терминал, либо выполнить команду:
source ~/.profile
nvm —version
Получить список всех доступных версий node.js можно следующим образом:
nvm ls-remote
Ещё лучше — вывести лишь список версий с долгосрочной поддержкой:
nvm ls-remote | grep -i «latest lts» // в моём случае результат таков v4.9.1 (Latest LTS: Argon) v6.17.1 (Latest LTS: Boron) v8.15.1 (Latest LTS: Carbon) v10.15.3 (Latest LTS: Dubnium)
Теперь можно выбрать желаемый вариант и установить, например:
nvm install 10.15.3
Вывести список установленных версий:
nvm ls
Переключить на другую версию:
nvm use
Чтобы удалить версию, нужно предварительно переключиться на другую и затем выполнить:
nvm uninstall
Документацию по nvm можно найти здесь.
Yarn
Начнём с импорта GPG-ключа хранилища:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add —
Добавим Yarn apt-репозиторий в список репозиториев системы:
echo «deb https://dl.yarnpkg.com/debian/ stable main» | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
и, если Node.js не установлен, выполним следующую команду (которая заодно установит и node):
sudo apt install yarn
Если же Node.js уже есть, можно пропустить его установку командой:
sudo apt install —no-install-recommends yarn
yarn —version
Часто используемые команды
yarn init [project_name]
Установка всех зависимостей проекта:
yarn // или yarn install
yarn remove [package_name]
Источник: si-dev.com