Где же спровоцировать чтение локального файла при запуске приложения в режиме клиента - PullRequest
0 голосов
/ 05 июля 2018

Я развернул искру Автономный кластер.172.16.133.15 - мастер с двумя рабочими на одной машине, и он развернут в Ubuntu14.10.

Как сказано в документе, я могу запускать приложения как в «режиме клиента», так и в «режиме кластера».

Мои вопросы:

1) Где загрузить файл при запуске приложения в режиме клиента (на компьютере с Windows) ??

SparkConf conf = new SparkConf().setAppName("Test")
                                .setMaster("172.16.133.15")
                                .set("spark.submit.deployMode", "client");
JavaSparkContext sc = new JavaSparkContext(conf);
String path = "file:///C:\\Users\\Me\\Desktop\\demo\\1530699196271";
JavaPairRDD<String, String> rdd = sc.wholeTextFiles(path);

 JavaPairRDD<String, String> transformed = rdd.mapToPair(tuple2 ->{
       String fname = tuple2._1();
       String content = tuple2._2();
       content = YUVSimpleTrans.transform(content);
       return new Tuple2<>(fname, content);
 });
 transformed.saveAsTextFile("file:///C:/Users/Me/Desktop/demo/out");

когда я запускаю коды, я получаю исключение:

Caused by: java.lang.RuntimeException: Error while running command to get 
file permissions : java.io.IOException: (null) entry in command string: null ls -F C:\Users\Me\Desktop\demo\1530699196271\split_0.yuv
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:762)
....
test.sparker4m.Sparker4mApplication.main(Sparker4mApplication.java:51)
...

Я не знаю, почему он использует "ls -F".

Итак, я создаю каталог cifs с samba в 172.16.133.15, и загружаю все файлы в директорию "/ usr / local / test / 1530699196271", и изменяю переменную "путь", затем она выдает исключение:

Caused by: org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/usr/local/test/1530699196271
at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:321)
... 31 more

Я очень запутался, что, черт возьми, "клиентский режим" работает.


  1. Загружает ли "jar-файл" файл jar в Master при использовании "spark-submit"?

если это правда, если я запускаю свой код, используйте «spark-submit» в режиме кластера (загрузка файлов Мастеру (172.16.133.15), у которого есть два работника) это сработает?

1 Ответ

0 голосов
/ 05 июля 2018

С того же места, что и в любом другом режиме. Он разрешается на каждом узле (узле драйвера и каждом узле исполнителя).

Поэтому, если вы используете локальный путь, каждый исполнитель будет пытаться прочитать локальный файл в своей файловой системе по заданному пути. Очевидно, что на ваших узлах Ubuntu нет "file:///C:\\Users\\Me\\Desktop\\demo\\1530699196271", поэтому поведение при сбое ожидается.

Либо используйте распределенную файловую систему или однородный кластер с копией входных данных на каждом узле по одному и тому же пути (явно не применимо для смешанных узлов Windows и Linux).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...