CentOS7.0にApacheNutch2.3.1をスタンドアロンで構築

ApacheSolrが出回り検索エンジンを作るための本なども数多く出版され
検索エンジンがだいぶ手頃に構築できるようになりました。

今回はApacheNutch2系の構築を書くのですが理由としては、ApacheNutch2のドキュメントが少ない!という事からでした。

さっそく構築に入っていきます。
今回使用するミドルウェアは、コンテンツ保存用にHBase+HDFS、検索用にElasticsearchとしました。
理由としては、そのうち分散していくのに楽そうな構成だったからです。

まずはコンテンツ保存用のHDFSからインストールしていきます。
JDK1.8以上をインストール。今回は専用サーバなのでprofileに書いちゃいます。

clouderaからインストールします。

HadoopごとInstallしないとNutchがエラーを吐いてしまいます。

初期化しておかないとHDFSに怒られるのでHadoopNameSpaceを作りましょう。

Hadoopを起動してみます。

HDFS上にMapReduce用のディレクトリを作っておきましょう。

MapReduceを実行するユーザのディレクトリ作成。

NutchはMapReduceでJobを追加するのでMapReduce関連のプロセス起動。

これでHDFS回りは完了です。
org.apache.hadoop.hdfs.server.namenode.NameNode
org.apache.hadoop.hdfs.server.datanode.DataNode
org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode
org.apache.hadoop.mapred.JobTracker
org.apache.hadoop.mapred.TaskTracker
の5つのプロセスが動いていれば問題ないです。

次にHBaseをインストールします。
HBaseを使ってみた感じとしてはHBaseでバックアップを取得しておけば、HadoopのNamespace回りに影響を受けないので安心できるというあたりでしょうか。

HBaseはZookeeperを使うので、Zookeeperの初期化まで行っておきます。
さっそく起動しましょう。

これだけでHBaseは完成です。
org.apache.hadoop.hbase.master.HMaster
org.apache.hadoop.hbase.regionserver.HRegionServer
org.apache.hadoop.hbase.thrift.ThriftServer
rg.apache.zookeeper.server.quorum.QuorumPeerMain
の4つのプロセスが動いていれば問題ないです。

念のためHbaseでテーブル追加&削除をテストします。

エラーが出なければ問題ないです。

次にElasticsearchをインストールします。
Repoファイルを登録します。今回は1.7系を使います。

日本語ようにKuromojiも使います。

設定を変えます。cluster.nameはNutchの方の設定でも使用します。

org.elasticsearch.bootstrap.Elasticsearch
が起動していれば問題ないです。

やっとNutchのインストールが始まります。
まずAntを使うのでインストールします。

Profileに登録します。

次にNutchです。

設定ファイルが多いので各ファイルは記事の下の方に書きました。

antでできた中身をいじりましょう。
Goraとかivyファイルの設定で解決できそうなのですが、いまいちわからなかったのでJavaライブラリをHadoopとHBaseからコピーします。

Nutchのテストをしてみましょう。
Urlを登録します。

クローリングするUrlをスコアが高い順に10件登録します。

クローリングします。

HTMLをパースします。

パースされた結果からリンクなどを抽出してHBaseを更新します。

Elasticsearchに検索用のインデックスを作成します。

Elasticsearchで検索してみましょう。

Yahooのページが出てきたと思います。

ブログを書いてみた感じなぜNutchのドキュメントがあまり出ないかがわかってきました。

  1. Hadoop+HBase+Elasticsearch(Solr)の構築を知らないとNutchにたどり着けないという敷居の高さ。
  2. Nutch公式では一昔前のHadoopとHBaseしか使えないので、ライブラリコピーをしないとClouderaのrepoが使えない点。

の2つが大きいと思います。
Nutch1系であればHbase含むパッケージがあるので気軽なのですが、Nutch2は結構ハードルが高いと思いました。

以上で構築は完了となります。

最後に設定ファイル系を載せます。
# vi /usr/local/nutch/conf/nutch-site.xml

# vi /usr/local/nutch/ivy/ivy.xml
※長いので追加部分のみ

# vi /usr/local/nutch/conf/gora.properties
※長いので追加部分のみ

# vi /usr/local/nutch/src/plugin/indexer-elastic/ivy.xml