Apache Nutch 一般/周辺情報のまとめ

Apache Nutchについて、一般的な情報、周辺情報をまとめました。
以下の抜粋を要約すると、LuceneというApache FoundationがJavaで開発している検索エンジンのためのライブラリがあり、そこからNutchというクローラーや、Luceneを使った検索エンジンであるSolrが派生しました。
Nutchの特徴は、Hadoopという分散コンピューテイングのためのフレームワークを利用して、大規模なクロールデータを複数コンピュータ上に分散保持することができることです。これは、Googleの提唱したMapReduceという分散処理システムを採用しています。
さらに、バージョン2.xでは、Goraによるインメモリデータモデルを用いて、NoSQL/SQLデータベースを抽象化して利用することができます。
NutchもSolrも拡張性に優れ、色々とカスタマイズをすることが可能です。

以下に、ApacheのプロジェクトNutch, Lucene, Hadoop, Gora, Tika, Solrの製品説明の抜粋意訳と参考サイト、MapReduce, インメモリ, NoSQLの参考サイトを紹介します。

Apache Nutch

The Apache Foundationが開発するオープンソースのクローラー。

Apache Nutch is a highly extensible and scalable open source web crawler software project. Stemming from Apache Lucene™, the project has diversified and now comprises two codebases, namely:
Nutch 1.x: A well matured, production ready crawler. 1.x enables fine grained configuration, relying on Apache Hadoop™ data structures, which are great for batch processing.
Nutch 2.x: An emerging alternative taking direct inspiration from 1.x, but which differs in one key area; storage is abstracted away from any specific underlying data store by using Apache Gora™ for handling object to persistent mappings. This means we can implement an extremely flexibile model/stack for storing everything (fetch time, status, content, parsed text, outlinks, inlinks, etc.) into a number of NoSQL storage solutions.

意訳: Apache Nutchは、拡張性と拡大性に優れたオープンソースWebクローラーのソフトウェアプロジェクトです。
Apache Luceneから派生し、プロジェクトは分化し現在二つのコードベースに分けられています。すなわち:
Nutch 1.x: 良く成熟し、製品化準備の整ったクローラーです。1.xはとても詳細な設定が可能で、一括処理(分散/並列処理)に優れたApache Hadoopのデータ構造を用います。
Nutch 2.x: 1.xから直接的なアイデアを得て現れた代替ソフトで、一つの重要な領域で1.xと異なります。それは、Apache Goraを用いることでストレージが特定の下層のデータ保持システムから抽象化され、永続的なマッピングでオブジェクトを処理することができることです。これは、とても柔軟なモデル/スタックで、全てのもの(読み取り時間、ステータス、コンテンツ、パースしたテキスト、外部リンク、内部リンクなど)を多くのNoSQLストレージ製品で記録保持することができることを意味します。

Being pluggable and modular of course has it’s benefits, Nutch provides extensible interfaces such as Parse, Index and ScoringFilter’s for custom implementations e.g. Apache Tika™ for parsing. Additonally, pluggable indexing exists for Apache Solr™, Elastic Search, etc.

意訳: 追加用プラグがありモジュール化されているため、例えばパース、インデックスや評価フィルタなどの拡張インターフェースを提供しており、例えばApache Tikaによるパースのカスタム実装を行うことができます。さらに、Apache SolrやElastic Searchなどによりインデックス機能を追加することができます。

Nutch can run on a single machine, but gains a lot of its strength from running in a Hadoop cluster

意訳: Nutchは、一つのマシーンで実行することもできますが、Hadoopクラスター(Hadoopで構成された同一コンピュータ群)で稼動させることで多くのその強みを獲得することができます。
引用元: Welcome to Apache Nutch™, The Apache Foundation

Apache Lucene

The Apache Foundationが開発するオープンソースの検索エンジン。
Javaで開発されている。

Apache LuceneTM is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform.

意訳: Apache Luceneはハイパフォーマンスな、Javaのみで書かれた全文検索エンジンライブラリです。全文検索が必要なほぼ全てのアプリケーションに相応しいライブラリで、とりわけクラスプラットフォームなアプリケーションに有用です。
引用元: Apache Lucene Core, The Apache Foundation

Perl、Python、C++、.NET をはじめ、他の多くのプログラミング言語に移植されています。

引用元: Apache Lucene を使ったテキスト検索, Amol Sonawane, IBM developerWorks, 2009年8月18日

参考サイト

検索とOSSで起業、技術者は全員コミッター – Apache Lucene/Solr コミッター 関口宏司氏, 高橋 信頼, ITpro, 2013/09/13

Apache Hadoop

The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models.

意訳: Apache Hadoopは、複数コンピュータ上で大規模データを分散処理するためのフレームワークです。

Hadoopのモジュール抜粋

Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.

意訳:Hadoop Distributed File System (HDFS™): データに高速アクセス可能な分散ファイルシステム。

Hadoop YARN: A framework for job scheduling and cluster resource management.

意訳: Hadoop YARN: ジョブ管理とリソース群管理のフレームワーク。

Hadoop MapReduce: A YARN-based system for parallel processing of large data sets

意訳: Hadoop MapReduce: YARNをベースにした大規模データ集合の並列処理。

Hadoop上のデータベース抜粋

Cassandra™やHBase™など。
引用元: Welcome to Apache™ Hadoop®!, The Apache Foundation

MapReduce 参考サイト

MapReduce, Wekipedia
MapReduceにチャレンジしよう, 清田 陽司, ITpro, 2012年3月15日

Apache Gora

The Apache Gora open source framework provides an in-memory data model and persistence for big data. Gora supports persisting to column stores, key value stores, document stores and RDBMSs, and analyzing the data with extensive Apache Hadoop™ MapReduce support.

意訳: The Apache Goraはインメモリデータモデルとビッグデータへの永続性を提供するフレームワークです。Goraはコラム型、キーバリュー型、文書型、RDBMSとApache Hadoop™ MapReduceの拡張によるデータ解析をサポートします。
引用元: Welcome to the Apache Gora project!, The Apache Foundation

インメモリ技術 参考サイト

世界を変える超高速処理の実現へ~インメモリ技術~, コベルコシステム株式会社, 2012年8月

NoSQLデータベース 参考サイト

ビッグデータを扱うために開発されたのRDBMSではないデータベースの総称。

数年ほど前から、分散KVS(Key-Value Store)や列指向(Column-Oriented)データベース、ドキュメント指向(Document-Oriented)データベースなどの新しいデータベース技術が注目を集めています。これらの新しいデータベース技術は、リレーショナルデータベース管理システム(RDBMS)とは異なる考えに基づいているので、よく「NoSQL」データベース(注1)と総称されています。

引用元: NoSQLはRDBMSに取って代わるものなのか?, 渡辺俊史, @IT, 2011年2月24日
連載記事 「RDB開発者におくるNoSQLの常識」, @IT

Apache Tika

The Apache Tika™ toolkit detects and extracts metadata and structured text content from various documents using existing parser libraries.

意訳: The Apache Tika™ツールキットは、様々な文書から既存のパーサーライブラリを用いて、メタデータや構造化テキストを見つけたり抜き出したりできます。
Apache Tika, The Apache Foundation

Apache Solr

SolrTM is the popular, blazing fast open source enterprise search platform from the Apache LuceneTM project.

意訳: Solrは、Apache Luceneから生まれた、有名で、とても速いオープンソースの企業向け検索プラットフォームです。

Solr is written in Java and runs as a standalone full-text search server within a servlet container such as Jetty. Solr uses the Lucene Java search library at its core for full-text indexing and search, and has REST-like HTTP/XML and JSON APIs that make it easy to use from virtually any programming language. Solr’s powerful external configuration allows it to be tailored to almost any type of application without Java coding, and it has an extensive plugin architecture when more advanced customization is required.

意訳: Solrは、Javaで書かれていて、Jettyのようなサーバレットコンテナの中で、独立した全文検索サーバとして稼動します。Solrは、Luceneを全文インデキシングと検索のコア技術として使っています。そして、RESTのようなHTTP/XML形式とJSON形式のAPIを持ち、どのようなプログラミング言語からも仮想的に使うことができます。Solrの強力な外部設定機能は、どのような非Javaアプリケーションにも適合し、さらに高度なカスタマイズのために拡張プラグイン機能もあります。
引用元: Apache Solr, The Apache Foundation