Я обнаружил, что мне нужно добавить это в пример приложения, чтобы Hadoop знал, в каком банке находятся мои файлы классов.
diff --git a/src/org/myorg/WordCount.java b/src/org/myorg/WordCount.java
index 912311a..8cc1b93 100644
--- a/src/org/myorg/WordCount.java
+++ b/src/org/myorg/WordCount.java
@@ -43,7 +43,8 @@ public class WordCount {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = new Job(conf, "wordcount");
+ job.setJarByClass(WordCount.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
Я не уверен, является ли это новым для hadoop или нет, но setJarByClass сообщит hadoop использовать весь jar-файл, основанный на одном классе, который содержится в этом jar-файле. Баночка все еще должна быть в вашем классе. Это команда, которую я выполнил:
hadoop jar wordcount.jar org.myorg.WordCount /usr/$USER/wordcount/input /usr/$USER/wordcount/output
И я ранее скопировал файлы примеров в HDFS, используя эту команду:
hadoop dfs -copyFromLocal input/file01 /usr/$USER/wordcount/input/file01
hadoop dfs -copyFromLocal input/file02 /usr/$USER/wordcount/input/file02
hadoop dfs -ls /usr/$USER/wordcount/input
где input / file01:
Hello World Bye World
и input / file02:
Hello Hadoop Goodbye Hadoop
Я выставил github repo с инструкциями о том, что мне удалось получить.