2015-06-07 3 views
0

После выполнения инструкции по установке кластера через скрипт ec2 я не могу правильно запустить мой .jar, потому что они не находят файл данных, который я накладываю/root/persistent-hdfs/на ведущий и ведомый узлы. Я прочитал на другом посту, что мне нужно префикс местоположения файла с файлом: // но это ничего не меняет ... У меня есть эта ошибка:Доступ к данным Spark EC2

Исключение в теме "main" org.apache.hadoop .mapred.InvalidInputException: входной путь не существует: файл: //root/persistent-hdfs/data/ds_1.csv

Для запуска задания я использовал ./bin/spark-submit на главном узле, am Я правильно?

Заранее благодарю вас за поддержку.

+0

, пожалуйста, отправьте полную команду, которую вы подаете, чтобы отправить задание. Также разместите свой код работы. – vvladymyrov

+0

Я использовал эту команду: spark_submit --class "MS1" MS1.jar – KyBe

ответ

1

Есть несколько вещей, которые вы должны сделать:

  1. Конфигурация по умолчанию использует эфемерный HDFS поэтому вам нужно включить, что выключить и включить $ /root/ephemeral-hdfs/bin/stop-all.sh стойкими на $ /root/persistent-hdfs/bin/start-all.sh.
  2. Поместите свой файл в постоянный корневой каталог hdfs для простоты $ /root/persistent-hdfs/bin/hadoop fs -put /root/ds_1.csv /ds_1.csv. Теперь проверьте, есть ли на самом деле там $ /root/persistent-hdfs/bin/hadoop fs -ls.
  3. Наконец, отредактируйте конфигурационные файлы Spark в /root/spark/conf/spark-defaults.conf и /root/spark/conf/spark-env.sh и измените все, что говорит ephemeral настойчивое.

Предполагая, что вы поместите свой csv в корневую директорию постоянных hdf-файлов (как это было на шаге 2), вы можете получить к нему доступ в искры, используя val rawData = sc.textFile("/ds_1.csv").

Удачи!

+0

Большое спасибо, я сейчас пытаюсь. Могу ли я сделать эти шаги на главном и подчиненном устройствах, или просто на главном? – KyBe

+0

Просто мастер – Chris

+0

Спасибо, скрипты находятся на sbin, а не в bin. Когда я проверяю, находится ли файл в hdfs, он отвечает мне, что нет ничего, кроме как когда я вспоминаю 'hdfs/bin/hadoop fs -put /root/ds_1.csv /ds_1.csv', он говорит 'put: /ds_1.csv ': Файл существует'. У меня есть эта ошибка при запуске задания «Исключение в потоке» main »java.net.ConnectException: Call From ip-172-31-48-78.ec2.internal/172.31.48.78 to ec2-52-4- 114-103.compute-1.amazonaws.com:9000 не удалось подключить исключение: java.net.ConnectException: Connexion refusée; Для получения дополнительной информации см. Http: // wiki.apache.org/hadoop/ConnectionRefused' – KyBe

0

Увидев код вашей работы, вы получите более подробную информацию.

До сих пор похоже, что работники не могут получить доступ к файлу в локальной файловой системе драйвера. Для загрузки файла в HDFS вам необходимо использовать команду hadoop fs -put или -cp. Таким образом, работники смогут получить доступ к файлу с помощью hdfs: // uri.

Поскольку вы используете свой кластер на EC2, я бы предложил поместить файл в ведро s3 и использовать s3: // ... файл uri.