У меня уже есть некоторая картина архитектуры пряжи, а также искровой архитектуры. Но когда я пытаюсь понять их вместе (вот что происходит
когда задание apark выполняется на YARN в качестве мастера) в кластере Hadoop, я сталкиваюсь с некоторыми недоразумениями. Сначала я скажу свое понимание на примере ниже, а затем
приходите в замешательство
Скажем, у меня есть файл "orderitems", хранящийся в HDFS с некоторым коэффициентом репликации.
Сейчас я обрабатываю данные, считывая этот файл в RDD-искру (скажем, для расчета дохода по заказу).
Я написал код и настроил подачу искры, как указано ниже
spark-submit \
--master yarn \
--conf spark.ui.port=21888 \
--num-executors 2 \
--executor-memory 512M \
src/main/python/order_revenue.py
Предположим, что я создал СДР с разделом 5 и выполнил его в режиме клиента пряжи.
Теперь Согласно моему пониманию, как только я отправлю искровую работу на YARN,
- Запрос отправляется в Диспетчер приложений, который является компонентом ресурса.
менеджер.
- Диспетчер приложений найдет один диспетчер узлов и попросит его запустить
контейнер.
- Это первый контейнер приложения, и мы будем называть его
Мастер приложений.
- Мастер приложений берет на себя ответственность за выполнение и мониторинг
работа.
Поскольку я отправил в режиме клиента, программа драйвера будет работать на моем пограничном узле / узле шлюза.
Я предоставил num-executors как 2 и executor memory как 512 mb
Также я предоставил 5 разделов для СДР как 5, что означает, что он создаст 5 разделов для чтения данных.
и распределить по 5 узлам.
Теперь вот мои несколько недоразумений по поводу этого
Я прочитал в руководстве пользователя, что разделы rdd будут распределены по разным узлам. Являются ли эти узлы такими же, как
«Узлы данных» кластера HDFS? Я имею в виду здесь 5 разделов, делает
это означает, что в 5 узлах данных?
Я упомянул num-executors как 2. Так что для этих 5 разделов данных будет использоваться 2 executors (CPU). Так что мой следующий вопрос, откуда
это 2 исполнителя (CPU) будут выбраны? Я имею в виду 5 разделов в 5 узлах
верно, так эти 2 исполнителя также находятся в любом из этих узлов?
- Планировщик отвечает за распределение ресурсов между различными запущенными приложениями с учетом ограничений возможностей,
очереди и т. д. А также Контейнер - это Linux Control Group, которая
функция ядра Linux, которая позволяет пользователям распределять
Процессор, память, дисковый ввод-вывод и пропускная способность для пользовательского процесса. Итак, мой финал
Вопрос: Контейнеры на самом деле предоставляются "планировщиком"?
Я запутался здесь. Я упомянул архитектуру, документацию к выпуску и некоторые видео и запутался.
Здесь ожидают помощи.