2016-03-31 9 views
3

Я пытаюсь запустить искрообразование на мезо, используя DCOS cli. Я могу начать работу. Моя программа ожидает, что файл конфигурации будет передан как параметр cli. Как достичь этого с помощью dcos spark run --submit-args?Spark submit, используя mesos dcos cli

Я попробовал --files http://server/path/to//file надеясь, что он будет загружать файлы, но это не сработало. Драйвер запускается, но не работает, потому что отсутствует файл конфигурации.

Я также попытался свернуть банку и файл конфигурации как tar и отправил его. Я вижу в журналах Мезоса, что смола была извлечена и разворачивается. Оба файла конфигурации и jar отображаются в рабочем каталоге. Но работа заканчивается с ClassNotFoundException. Я подозреваю, что что-то не так, как началось искра-подача.

dcos spark run --submit-args="--supervise --deploy-mode cluster --class package.name.classname http://file-server:8000/Streaming.tar.gz Streaming.conf" 

Любой намек на то, как действовать дальше? Кроме того, в каком файле журнала я могу увидеть основную команду spark-submit, используемую DCOS?

ответ

3

Вот пример команды, вы должны начать, чтобы заставить его работать:

dcos spark run --submit-args='--conf spark.mesos.uris=https://s3-us-west-2.amazonaws.com/andrey-so-36323287/pi.conf --class JavaSparkPiConf https://s3-us-west-2.amazonaws.com/andrey-so-36323287/sparkPi_without_config_file.jar /mnt/mesos/sandbox/pi.conf'

Где

--conf spark.mesos.uris=... Список URI, разделенный запятыми, который будет загружен в песочницу при запуске драйвера или исполнителя Mesos. Это касается как крупнозернистого, так и мелкозернистого режима.

/mnt/mesos/sandbox/pi.conf Путь к загружаемому файлу, который ваш основной класс получает как 0-й параметр (см. Ниже фрагмент кода). /mnt/mesos/sandbox/ - это стандартный путь внутри контейнера, который сопоставляется с изолированной песочницей заданной мезосферной задачи.

public final class JavaSparkPiConf { 

    public static void main(String[] args) throws Exception { 
    SparkConf sparkConf = new SparkConf().setAppName("JavaSparkPi"); 
    JavaSparkContext jsc = new JavaSparkContext(sparkConf); 

    Scanner scanner = new Scanner(new FileInputStream(args[0])); 
    int slices; 
    if (scanner.hasNextInt()) { 
     slices = scanner.nextInt(); 
    } else { 
     slices = 2; 
    } 
    int n = 100000 * slices; 
    List<Integer> l = new ArrayList<>(n); 
    for (int i = 0; i < n; i++) { 
     l.add(i); 
    } 

    JavaRDD<Integer> dataSet = jsc.parallelize(l, slices); 

    int count = dataSet.map(new Function<Integer, Integer>() { 
     @Override 
     public Integer call(Integer integer) { 
     double x = Math.random() * 2 - 1; 
     double y = Math.random() * 2 - 1; 
     return (x * x + y * y < 1) ? 1 : 0; 
     } 
    }).reduce(new Function2<Integer, Integer, Integer>() { 
     @Override 
     public Integer call(Integer integer, Integer integer2) { 
     return integer + integer2; 
     } 
    }); 

    System.out.println("Pi is roughly " + 4.0 * count/n); 

    jsc.stop(); 
    } 
} 
+0

Вот и все. Отсутствие части было искать загруженные файлы в/mnt/mesos/sandbox. – Cheeko

2

Streaming.conf - это просто строка, которая будет передана вашему драйверу. Ваш водитель должен уметь это видеть. Самый простой способ сделать это - разместить его в доступном месте, указать, что вы хотите, чтобы он был загружен в песочницу через spark.mesos.uris [1]. Вы можете поочередно писать приложение для поддержки чтения из удаленного места и просто передать местоположение в CLI.

--files предназначен для размещения файлов у исполнителей, но вы пытаетесь передать файл драйверу, чтобы он не работал.

[1] http://spark.apache.org/docs/latest/running-on-mesos.html

Майкл Gummelt
Мезосферы

+0

Я знаю параметры строки, передаваемые в программу :) драйвера уже сказано, что файл. Я пытаюсь сделать это доступным. Я попробую ваше предложение. В какой момент загружаются ссылки, указанные в URI? Я прочитал файл conf перед запуском контекста искры. – Cheeko

+0

еще один, если мне нужно разместить дополнительные файлы (- файлы) или банки (- баннеры) у исполнителей, как мне это достичь? – Cheeko

+0

spark.mesos.uris действительно загружает файл. Я вижу это в журналах fescher mesos. Но это не в текущем каталоге или classpath. Я не могу «видеть» файл в моем коде. Я прибегал к чтению напрямую из общего местоположения, но будет хорошо знать, как управлять и обмениваться ресурсами. – Cheeko