Сбой копирования HadoopToLocalFile в режиме кластера пряжи - PullRequest
0 голосов
/ 04 октября 2018

Я пытался скопировать файл в локальный файл из HDFS с помощью функции copyToLocalFile Hadoop из моего приложения Spark2.

  val hadoopConf = new Configuration()
  val hdfs = FileSystem.get(hadoopConf)

  val src = new Path("/user/yxs7634/all.txt")
  val dest = new Path("file:///home/yxs7634/all.txt")
  hdfs.copyToLocalFile(src, dest)

Приведенный выше код работает нормально, когда я отправляю свое приложение spark в режиме клиента Yarn.Но, он продолжает терпеть неудачу со следующим исключением в режиме кластера пряжи.

18/10/03 12:18:40 ERROR yarn.ApplicationMaster: User class threw exception: java.io.FileNotFoundException: /home/yxs7634/all.txt (Permission denied)

Ответы [ 4 ]

0 голосов
/ 05 октября 2018

Похоже, сервер Spark работает под одним пользователем (например, "spark") и файл в коде хранится в каталоге другого пользователя "yxs7634".В кластерном режиме пользователь «искра» не позволяет записать в «yxs7634» пользовательский каталог, и такое исключение происходит.

Требуется дополнительное разрешение для пользователя Spark на запись в "/ home / yxs7634".

В локальном режиме работало нормально, поскольку Spark работает под пользователем "yxs7634".

0 голосов
/ 04 октября 2018

В режиме пряжи задание зажигания отправляется через YARN.Драйвер будет запущен на другом узле.

Чтобы решить эту проблему, вы можете использовать распределенную файловую систему, такую ​​как HDFS, для хранения вашего файла и затем указать абсолютный путь.

например:

val src = new Path("hdfs://nameservicehost:8020/user/yxs7634/all.txt")
0 голосов
/ 04 октября 2018

У вас есть ошибка отказа в разрешении, я имею в виду, пользователь, которого вы используете для отправки задания, не может получить доступ к файлу.Каталог должен иметь как минимум разрешение на чтение для пользователя "other", что-то вроде этого: -rw-rw-r--

Можете ли вы вставить права доступа к каталогу и файлу?Команда

hdfs dfs -ls /your-directory/
0 голосов
/ 04 октября 2018

В режиме кластера пряжи драйвер также обрабатывается пряжей, и выбранный узел драйвера может быть не тем, где вы отправляете задание.Следовательно, чтобы эта работа работала в режиме кластера пряжи, я считаю, что вам нужно поместить локальный файл во все узлы искры в кластере.

...