Hadoop が既にインストールされており、他のユーザーによって頻繁に使用およびテストされている RHEL Intel クラスターで作業しています。私はフレームワークの使い方を学ぼうとしているので、ここのチュートリアルから始めています: http://hadoop.apache.org/docs/r0.17.0/mapred_tutorial.html
そのため、WordCount.java のソース コードを上記のリンクから ~/hadooptest/ にコピーし、コンパイルの指示に従って、バージョン エラーを修正するために若干の変更を加えました。コンパイル試行の出力と関連する出力を次に示します。システムインフォメーション。
[X@X hadooptest]$ pwd
/home/X/hadooptest
[X@X hadooptest]$ javac -version
Eclipse Java Compiler v_677_R32x, 3.2.1 release, Copyright IBM Corp 2000, 2006. All rights reserved.
[X@X hadooptest]$ $JAVA_HOME/bin/java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)
[X@X hadooptest]$ hadoop version
Hadoop 0.20.2-cdh3u5
Subversion file:///data/1/tmp/topdir/BUILD/hadoop-0.20.2-cdh3u5 -r 30233064aaf5f2492bc687d61d72956876102109
Compiled by root on Fri Oct 5 18:45:42 PDT 2012
From source with checksum de1770d69aa93107a133657faa8ef467
[X@X hadooptest]$ javac -source 5.0 -classpath /usr/lib/hadoop-1.0.1/hadoop-core-1.0.1.jar -d wordcount_classes/ WordCount.java
----------
1. ERROR in WordCount.java (at line 0)
package org.myorg;
^
The type Iterator is not generic; it cannot be parameterized with arguments <V2>
----------
2. ERROR in WordCount.java (at line 29)
public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {
^^^^^^^^
The type Iterator is not generic; it cannot be parameterized with arguments <IntWritable>
----------
2 problems (2 errors)[X@X hadooptest]$
この問題はおそらく Hadoop に固有のものではないことは理解していますが、私は主に Java ユーザーではありません。Hadoop のネイティブ言語を使用することに慣れたら、おそらく C++ ライブラリーの使用に切り替えることを選択するでしょう (ただし、それはまた別の話です)。私はこの問題をグーグルで検索しましたが、通常は 1.4.X JRE を使用していることを示していることがわかりました...これも持っています:
[fraha1@intel06 hadooptest]$ java -version
java version "1.4.2"
gij (GNU libgcj) version 4.1.2 20080704 (Red Hat 4.1.2-48)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[fraha1@intel06 hadooptest]$ $JAVA_HOME/bin/java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)
~/.bash_profile を 1.6 JRE にリダイレクトするように設定しましたが、おそらく javac はデフォルトの 1.4 にリダイレクトするように構成されています。どうすればこれを修正できますか?