2016-06-21 4 views
0

У меня есть локальный файл доступного на все узлы Спарка в кластере ОГО со следующими разрешениями:Спарка не может читать локальный файл

-rw-rw---- 1 test_user test_group 30 Jun 21 14:20 /tmp/foo_test 

Я бег кластера, как ec2-user, используя пряжу планировщика. Для того чтобы Spark/Yarn имел доступ к файлу, я добавил test_group в качестве дополнительной группы пользователей yarn на всех узлах.

$ sudo -u yarn groups 
    yarn hadoop test_group 

В искровой оболочке, я получаю следующее сообщение об ошибке чтения файла:

scala> val rdd = sc.textFile("file:///tmp/foo_test") 
    org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 4 times, most recent failure: Lost task 0.3 in stage 0.0: 
java.io.FileNotFoundException: /tmp/foo_test (Permission denied) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:146) 
    at org.apache.hadoop.fs.RawLocalFileSystem$LocalFSFileInputStream.<init>(RawLocalFileSystem.java:111) 
    at org.apache.hadoop.fs.RawLocalFileSystem.open(RawLocalFileSystem.java:207) 
    at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSInputChecker.<init>(ChecksumFileSystem.java:141) 
    at org.apache.hadoop.fs.ChecksumFileSystem.open(ChecksumFileSystem.java:341) 
    at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:771) 
    at org.apache.hadoop.mapred.LineRecordReader.<init>(LineRecordReader.java:109) 
    at org.apache.hadoop.mapred.TextInputFormat.getRecordReader(TextInputFormat.java:67) 
    at org.apache.spark.rdd.HadoopRDD$$anon$1.<init>(HadoopRDD.scala:237) 
    at org.apache.spark.rdd.HadoopRDD.compute(HadoopRDD.scala:208) 
    at org.apache.spark.rdd.HadoopRDD.compute(HadoopRDD.scala:101) 
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306) 
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:270) 
    at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38) 
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306) 
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:270) 
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66) 
    at org.apache.spark.scheduler.Task.run(Task.scala:89) 
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 

Как читать файлы с разрешениями на уровень группы по ОМУ Спарку?

ответ

0

сменить разрешение на 770 - т. Е., chmod -R 770 /tmp и повторить попытку.

+0

Я получаю ту же ошибку, когда разрешения для файла (по всем узлам) установлены на 770. – shj

+0

попробуйте изменить разрешение 'tmp' dir также - см. Обновленную команду –

+0

Похоже, что/tmp уже имеет полный доступ rwx для пользователя, группы, другой – shj