Подсчёт слов - компиляция стандартного пример Hadoop - WordCount.java

Перенесём исходники (а это три файла - SumReducer.java, WordCount.java и сам WordMapper.java) пример WordCount в какую-нибудь папку (скопируем ,что не испортить оригинал) ,например:

/home/training/training_materials/developer/exercises/wordcount/tryword

перейдём в неё.
в ней создадим подпапку с именем с именем:

123

- в эту директорию мы будем сваливать "продукты компиляции"
Далее нам нужно получить определения используемых в примере классов - для этого нужно подключить .jar-архив ядра а также hadoop-common.jar - пути к двум этим архивам могут быть различны, у меня они располагаются соответсвенно по адресам:

  • /usr/lib/hadoop-0.20-mapreduce/hadoop-core.jar
  • /usr/lib/hadoop/hadoop-common.jar

Мы разделяем пути двоеточием, а после последнего двоеточия ставим точку, дабы в процессе "компиляции" участвовали файлы SumReducer.java и WordCount.java - то есть все исходники из нашей папки /home/training/training_materials/developer/exercises/wordcount/tryword
Вот команда:

javac -classpath /usr/lib/hadoop/hadoop-common.jar:/usr/lib/hadoop-0.20-mapreduce/hadoop-core.jar:. -d 123  WordCount.java

Теперь соберём на основе трёх классов .jar архив:

jar cvf mywordcount.jar -C 123/ .

обратите внимание, что точка ставится через пробел после пути к папке - это позволяет включить все содержащиеся в ней файлы (у нас их три - три файла классов - .class)

Hadoop 2.2.0

Работает такая команда для компиляции:

javac -classpath $HADOOP_HOME/share/hadoop/common/hadoop-common-2.2.0.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.2.0.jar:$HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar -d wordcount_classes WordCount.java