Nutch 0.9 を Eclipse で実行する方法
これは、RunNutchInEclipse0.9 の日本語訳です。
Eclipse 上での Nutch の実行
以下の環境でテストしています
- Nutch リリース 0.9
- Eclipse 3.3 - aka Europa
- Java 1.6
- Ubuntu (まあ、ほとんどのプラットフォームでも動くはずです)
始める前に
Eclipse で Nutch を実行できるようにセットアップするのは扱いにくい場合があります。そして、Eclipse で Nutchを編集した場合、大抵はるかに早いのですが、コマンドラインからスクリプトを実行してください。しかしながら Eclipse で Nutch をデバッグできるのはとても便利ですが、一方ログ (logs/hadoop.log) を見たほうが早いかもしれません…
ステップ
Nutch をインストール
- Nutch 0.9 の最新のリリースを手に入れます - http://lucene.apache.org/nutch/version_control.html
- まだ Nutch をビルドしないでください。Nutch のディレクトリに、 .project と .classpath がないことを確認してください。
Eclipse で新規 java プロジェクトを作成
- File > New > Project > Java project > 次へ をクリック
- プロジェクトに名前を付けます (例えば Nutch_Trunk 等)
- "Create project from existing source" を選択し、ダウンロードした Nutch の場所を指定します。
- 次へをクリックし、Eclipse がフォルダをスキャンするのを待ちます。
- クラスパス(3番目のタブで、クラスフォルダを追加します)に、"conf" フォルダを追加します。
- "Order and Export" タブで、"conf" フォルダのエントリを探し、一番上へ移動させます。これは、eclipse に他の場所ではなく、"conf" フォルダから設定ファイル (nutch-default.xml, nutch-final.xml など) を使用するようにさせるのに必要です。
- Eclipse は、クラスパスに追加しなければいけないすべての java ファイルを推測するはずですが、もし違う場合、"src/java" と "src/test" と すべてのプラグインの "src/java" と "src/test" フォルダをソースフォルダに追加してください。また、"lib" とプラグインの lib フォルダの中にあるすべての jar をライブラリに追加します。
- 出力ディレクトリを "tmp_build" に設定し、必要なら作成します。
- "build" ディレクトリをクラスパスに追加しないでください。
Nutch の設定
- NutchTutorial を見てください。
- $NUTCH_HOME/conf/nutch-default.xml の "plugin.folders" を "./src/plugin" に変更してください。
- Eclipse でテストする前にNutch が正しく設定されているか確認してください。
org.farng と com.etranslate が見つかりません
parse-mp3とparse-rtf プラグインでいくつかインポートの問題が発生するでしょう(私の場合 30個のエラーがありました)。Apache ライセンスと互換性がないためこれらはソースから除外されております。以下からダウンロードできます:
- http://nutch.cvs.sourceforge.net/nutch/nutch/src/plugin/parse-mp3/lib/
- http://nutch.cvs.sourceforge.net/nutch/nutch/src/plugin/parse-rtf/lib/
それぞれ src/plugin/parse-mp3/lib と src/plugin/parse-rtf/lib に jar ファイルをコピーしてください。そして、それらをビルドパスのライブラリに追加してください(始めにワークスペースを更新し、ソースフォルダで右クリックし、Java Build Path > Libraries > Add Jars)。
Nutch のビルド
プロジェクトを正しく設定できたら、Eclipse は "tmp_build" ディレクトリに Nutch をビルドします。
Eclipse のランチャを作成する
- メニュー Run > "Run..." を選択
- "Java Application" を作成する
- Main class を
org.apache.nutch.crawl.Crawl
- Arguments タブで、Program Argument を
urls -dir crawl -depth 3 -topN 50
- VM argument を
-Dhadoop.log.dir=logs -Dhadoop.log.file=hadoop.log
- "Run" をクリックします。
- すべてうまくいけば、Nutch がクロールで忙しくなります。
Eclipse で Nutch をデバッグする (0.9 ではまだ試してません)
- ブレークポイントを設定し crawl をデバッグする
- Hadoop のジョブなので、ブレークポイントを設定する場所を探すのが大変かもしれません。ここでいくつかブレークポイントを設定するのにちょうどいい場所をあげます:
Fetcher [line: 371] - run Fetcher [line: 438] - fetch Fetcher$FetcherThread [line: 149] - run() Generator [line: 281] - generate Generator$Selector [line: 119] - map OutlinkExtractor [line: 111] - getOutlinks
もしうまく動かなかったら...
はい、NutchとEclipse はときどきうまく動かないこともあります ;)
eclipse: ワークスペースにプロジェクトコンテンツを作成できない
nutch ソースコードはワークスペースフォルダの外になければなりません。私は最初ダウンロードしたコードを私のeclipseのークスペースの下に置いていました。その時既存のソースからプロジェクトを作ろうとしたら、ワークスペースの中にあるソースコードからはプロジェクトを作成できませんでした。ワークスペースの外にソースコードを置いたらうまくいきました。
プラグインディレクトリが見つかりません
plugin.folders プロパティがちゃんと設定されているか確認してください。相対パスを使わずに、nutch-defaults.xml で絶対パスを指定してください。もしくは nutch-site.xml のほうがよいかもしれません。
<property> <name>plugin.folders</name> <value>/home/....../nutch-0.9/src/plugin</value>
Eclipse のユニットテスト中にプラグインが何もロードされません
ユニットテスト中、Eclipse は src/test/nutch-site.xml を使って、 conf/nutch-site.xml を無視します。なのでそのファイルにも同様にプラグインディレクトリの設定を追加する必要があります。
eclipse でユニットテストは動いたのですが、コマンドラインで ant を実行したときに失敗します
eclipse では完璧にユニットテストは動いたのだと思いますが、何も手を加えなくても、みんなそれぞれ ant test をコマンドラインで実行したときに失敗します。hadoop-site.xml で plugin.folders プロパティが定義されているかチェックしてみてください。あった場合、その設定をファイルから削除して、それをそのまま nutch-site.xml に追加してみてください。
もう一度 ant test を実行します。これで問題は解決したはずです。
もしまだ問題が解決しない場合、あなたがテストしているのはプラグインでしょうか? もしそうなら、テスト対象上の plugin/build.xml の中のパッケージリストの中にプラグインを追加しましたか?
classNotFound
- class を開き、右クリックします
- ビルドディレクトリを更新します
hadoop クラスのデバッグ
デバッグ中に hadoop クラスも利用できたようが役立つこともあるでしょう。そのときは Hadoop ソースコードをチェックアウトして、hadoop-xxx.jar のソースに追加することができます。別の方法として、
- クラスパスライブラリから hadoopXXX.jar を削除します
- nutch で使われている hadoop ブランチをチェックアウトします
- nutch プロジェクトと同様に hadoop プロジェクトを eclipse に作ります
- nutch プロジェクトの依存しているプロジェクトに、hadoop プロジェクトを追加します。
- これで inputformat の実装などのように hadoop クラスにもブレークポイントを設定することが出来ます。
Original credits: RenaudRichardet
last edited 2008-12-03 13:22:59 by PiotrBazan




