Arhn - архитектура программирования

Локальная или удаленная банка для отправки Spark

У меня есть задание spark-submit, работающее в пряже-клиенте (драйвер на стороне клиента), которое, помимо других функций, читает и отправляет сообщения через Kafka.

В моем кластере только брокерские узлы Kafka имеют jar-файлы Kafka, и я бы предпочел не делать все мои узлы клиентами Kafka. Это означает, что мое задание Spark должно загружать (--jars) и копировать jar-файлы Kafka с клиентского сервера на все исполнители в кластере.

Мой вопрос: какова наилучшая практика в целом? Может ли копирование этих банок (~ 20 МБ) каждому исполнителю повлиять на производительность/задержку? или это классический способ работы?

Environment
RHEL7
Spark 1.6
Kafka 0.10.1
Network 10GB

Ответы:


1

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

Если вы обнаружите, что процесс отправки слишком медленный, не стесняйтесь копировать необходимые JAR-файлы Kafka Streaming (включая их зависимости) в SPARK_HOME каждого YARN NodeManager. Я считаю, что вы также можете указать путь HDFS к файлу JAR, и если вы увеличите коэффициент репликации этого файла, он амортизирует сетевой трафик.

Независимо от того, все ваши узлы должны быть клиентами Kafka. Вы не можете контролировать, где Spark запускает исполнителя. Примечание: «установить Kafka» — это не то же самое, что сделать Java-клиент доступным на сервере.

10.04.2018
  • Спасибо за Ваш ответ. Поскольку я использую Ambari и поскольку клиент Kafka не управляется им, я бы предпочел не развертывать этот клиент вручную на всех узлах (в целях обслуживания). Я знаю, что мы не можем контролировать, где будет выполняться задание Spark, поэтому я спрашиваю себя, является ли развертывание jar Kafka со стороны клиента исполнителям в кластере (при выполнении задания с сервера причала Spark) хорошей практикой или нет. мое дело. 10.04.2018
  • Даже если бы Kafka управлялась Ambari, путь к классам Kafka не содержит библиотек Spark. 10.04.2018
  • Лично я использую Puppet или Ambari для поддержки внешних систем за Ambari. Если вы настроите это, не так уж много нужно поддерживать 10.04.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..