Исключение Hadoop.
Я пытаюсь решить проблему с количеством слов в hadoop, так как впервые работаю с ней. Я следовал инструкциям, используя видео, и даже прочитал много вещей перед запуском программы.
Но все же я столкнулся с исключением во время работы hadoop. Вот исключение, которое я получил:
aims@aims:~/hadoop/hadoop$ bin/hadoop jar '/home/aims/Desktop/WordCount.jar' wordcount /usr/hadoop/input /usr/hadoop/output
16/11/15 11:29:03 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
16/11/15 11:29:03 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
16/11/15 11:29:06 INFO mapreduce.JobSubmitter: Cleaning up the staging area /tmp/hadoop-yarn/staging/aims/.staging/job_1479184145300_0003
Exception in thread "main" org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: hdfs://localhost:9000/user/aims/wordcount
at org.apache.hadoop.mapred.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:287)
at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:229)
at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:315)
at org.apache.hadoop.mapreduce.JobSubmitter.writeOldSplits(JobSubmitter.java:328)
at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:320)
at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:196)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:1287)
at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:575)
at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:570)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:570)
at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:561)
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:870)
at WordCount.run(WordCount.java:29)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at WordCount.main(WordCount.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Сейчас я не понимаю, как решить эту проблему. Я перепробовал все ссылки в Интернете, связанные с ним, но безрезультатно.
В настоящее время я использую Ubuntu 16.04 OS и Hadoop 2.7.3
Моя версия Java:
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-8u111-b14-2ubuntu0.16.04.2-b14)
OpenJDK 64-Bit Server VM (build 25.111-b14, mixed mode)
Надеюсь услышать решение для этого исключения.
2 ответа
Я получил ответ.
aims@aims:~/hadoop/hadoop$ bin/hadoop jar '/home/aims/Desktop/WordCount.jar' wordcount /usr/hadoop/input /usr/hadoop/output
То, что я упомянул выше, является неправильным синтаксисом для выполнения jar на hadoop. Поскольку я немного подозрительно относился к wordcount
Я использовал в команде. И даже исключение возрастало, используя только это. Поэтому я удалил его и использовал каталоги Hadoop. И это побежало.
Ниже приведен правильный способ выполнения:
aims@aims:~/hadoop/hadoop$ bin/hadoop jar '/home/aims/Desktop/WordCount.jar' /myuser/inputdata /myuser/output
Так что это сработало, и я получил вывод в папке вывода.
Ну, файл не существует...
hdfs://localhost:9000/user/aims/wordcount
Один из XML-файлов hdfs-site или core-site устанавливает путь HDFS, и если вы ничего не редактировали, то нет /user
каталог в корне вашей коробки. E сть /home/aims
каталог.
Согласно вашей команде вы пытаетесь прочитать входные данные из пути HDFS /usr/hadoop/input
, но ошибка говорит /user/aims/wordcount
Это означает, что проблема в том, что входной каталог, указанный вами в коде mapreduce, неверен.