Можно обойтись без искры - представить в java?

Мне сказали, что на "remote-host-num1: 7077" работает искровой кластер с несколькими узлами на "remote-host-num2: 7077" "remote-host-num3: 7077".

Если я пишу программу, которая выполняет следующие действия:

    SparkConf conf = new SparkConf().setAppName("org.sparkexample.TestCount").setMaster("spark://remote-host-num1:7077");
    JavaSparkContext sc = new JavaSparkContext(conf);

и создайте JavaRDD "myrdd" из sc.textFile и выполните операцию, например, получите свои подсчеты с помощью "myrdd.count()". Используется ли эта операция для всех машин в удаленном кластере?

Я хочу убедиться, что я не хочу использовать spark-submit "myjarfile", если я могу его избежать. Если я должен, что мне делать? Если мне нужно использовать spark-submit, чтобы воспользоваться распределенной природой искры на нескольких машинах, есть ли способ сделать это программно в Java?

Ответ 1

Да, в spark-1.4.x добавлена ​​поддержка для отправки приложений scala/java spark в качестве дочернего процесса. Вы можете проверить более подробную информацию в javaDocs для класса org.apache.spark.launcher. Ниже приведена ссылка на ссылку, содержащуюся в документации по искровому обеспечению.

https://spark.apache.org/docs/latest/programming-guide.html#launching-spark-jobs-from-java--scala

Ответ 2

Вопрос 1: Используется ли эта операция для всех машин в удаленном кластере?

Перейдите к http://remote-host-num2:8080... Эта страница поможет вам узнать распределенный характер вашего искрового кластера... Сколько рабочих работает? Сколько работников в настоящее время работает? и т.д.

Вы даже можете отправить задание и проверить эту страницу, чтобы проверить, делегировано ли задание всем работникам. * Ибо и операция, подобная счету, скорее всего, будет распространена. Искра разбивает работу на этапы и дает им рабочие узлы для обработки. *

И похоже, что в кластере, размещенном на удаленном хосте-num2: 7077, есть два источника искры, а remote-host-num3: 7077 Один из них будет выбран в качестве лидера. Управление кластерами не разделяется между ними. Если текущий лидер опускается, другой становится лидером.

Вопрос 2: Если мне нужно использовать spark-submit, чтобы воспользоваться распределенной природой искры на нескольких машинах, есть ли способ сделать это программно в Java?

Вы отправляете задание в кластер. Поскольку Spark работает с RDD, которые неизменны по своей природе, операции над ними могут быть легко распараллелены. Как я сказал ранее, отправьте задание и посмотрите, обрабатывается ли работа всеми работниками.

см. документацию по искро-подаче для всех параметров. Например: - свойство -executor-core позволяет предлагать числовые ядра для задания.

Вопрос 3: Можно ли подключиться к полноценному искровому кластеру с отсутствием искра-submit?

В основном методе вашего искрового приложения, заполните конфигурацию искровой конфигурации полностью мастер-url, deploymode, конфигурацию исполнителя, конфигурацию драйвера и т.д. И просто запустите свой класс.

Я бы посоветовал вам пойти с искрами. Spark поддерживается для работы с несколькими менеджерами кластеров (искровой кластер, мезо и пряжа в настоящее время)... Все дело в том, что разработайте приложение, которое содержит только вашу бизнес-логику. Затем вы можете отправить его в среду своего выбор.