Отправьте PySpark в кластер Yarn, используя Java - PullRequest
0 голосов
/ 25 февраля 2020

Мне нужно создать Java программу, которая отправляет python сценарии (использующие PySpark) в кластер Yarn. Теперь я увидел, что использование SparkLauncher - это то же самое, что и использование YarnClient, потому что он использует встроенный клиент Yarn (писать мой собственный клиент Yarn - безумие, я пытался слишком много вещей для обработки). Итак, я написал:

 public static void main(String[] args) throws Exception {
    String SPARK_HOME = System.getProperty("SPARK_HOME");
    submit(SPARK_HOME, args);
}

static void submit(String SPARK_HOME, String[] args) throws Exception {
    String[] arguments = new String[]{
            // application name
            "--name",
            "SparkPi-Python",

            "--class",
            "org.apache.spark.deploy.PythonRunner",

            "--py-files",
            SPARK_HOME + "/python/lib/pyspark.zip,"+ SPARK_HOME +"/python/lib/py4j-0.9-src.zip",

            // Python Program
            "--primary-py-file",
            "/home/lorenzo/script.py",

            // number of executors
            "--num-executors",
            "2",

            // driver memory
            "--driver-memory",
            "512m",

            // executor memory
            "--executor-memory",
            "512m",

            // executor cores
            "--executor-cores",
            "2",

            "--queue",
            "default",

            // argument 1 to my Spark program
            "--arg",
            null,
    };
    System.setProperty("SPARK_YARN_MODE", "true");
    System.out.println(SPARK_HOME);
    SparkLauncher sparkLauncher = new SparkLauncher();
    sparkLauncher.setSparkHome("/usr/hdp/current/spark2-client");
    sparkLauncher.setAppResource("/home/lorenzo/script.py");
    sparkLauncher.setMaster("yarn");
    sparkLauncher.setDeployMode("cluster");
    sparkLauncher.setVerbose(true);
    sparkLauncher.launch().waitFor();
}

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

  1. Что я неправильно настраиваю?
  2. Если я хочу запустить этот JAR-файл с другого компьютера, где и как следует объявить IP-адрес?
...