2013年1月19日土曜日

NutchとCassandra

NutchのデータをCassandraにストアしてみる。
これまでHBaseにストアしていたが、HBaseは構成要素(プロセス)が多くてちょっと苦手なのでCassandraにしてみようと思い立つ。

  • さくらVPS
  • CentOS 6.2
  • OpenJDK 1.6.0_24
  • Ant 1.7.1
  • Apache Nutch 2.1
  • Apache Cassandra 1.2

  1. Cassandraのバイナリパッケージ取得
  2. apache-cassandra-1.2.0-bin.tar.gz
  3. 展開(ここでは/opt)
  4. # cd /opt
    # tar xvf apache-cassandra-1.2.0-bin.tar.gz
    # cd apache-cassandra-1.2.0
  5. Cassandra実行
  6. 実はノードが1台なので、設定変更はクラスタ名の変更のみ。
    (複数台の場合は、他サイト参考)

    cassandra.yaml
    cluster_name: 'Cassandra Cluster'

    実行する。
    # ./bin/cassandara

    クライアントで接続確認。
    # ./bin/cassandra-cli
    Connected to: "Cassandra Cluster" on 127.0.0.1/9160
    Welcome to Cassandra CLI version 1.2.0
    
    Type 'help;' or '?' for help.
    Type 'quit;' or 'exit;' to quit.
    
    [default@unknown] 
    [default@unknown] show cluster name;
    Cassandra Cluster
    とりあえず接続できているようなので、正常に起動している模様。

  7. Nutchのソースパッケージ取得
  8. ※現時点で公式リンクにはソースのみ。
    apache-nutch-2.1-src.tar.gz

  9. 展開(同様に/opt)
  10. # cd /opt
    # ls
    apache-nutch-2.1-src.tar.gz
    # tar xvf apache-nutch-2.1-src.tar.gz
    # cd apache-nutch-2.1

  11. 設定(Gora関連)

  12. 以下それぞれ追記。

    conf/nutch-site.xml(<configuration>タグ内)
      <property>
        <name>storage.data.store.class</name>
        <value>org.apache.gora.cassandra.store.CassandraStore</value>
      </property>

    conf/gora.properties
    gora.datastore.default=org.apache.gora.cassandra.store.CassandraStore
    gora.cassandrastore.servers=localhost:9160

    ivy/ivy.xml
    <dependency org="org.apache.gora" name="gora-cassandra" rev="0.2" conf="*->default" />

  13. コンパイル

  14. antでコンパイル。

    # ant
    <省略>

  15. 設定(Nutch関連)

  16. confディレクトリにあるnutch-default.xmlの「http.agent.name」プロパティの値に適当な文字列を記述する。
    conf/nutch-default.xml
    <property>
      <name>http.agent.name</name>
      <value>My Nutch Spider</value>
    </property>
    

    クローリングの始点となるサイトを記述したテキストファイルを任意のディレクトリに作成。
    以下の例では、インストールディレクトリ配下に作成した「urls」ディレクトリに作成。
    例)
    # mkdir urls
    urls/seed.txt
    http://nutch.apache.org/
    正規表現でクローリング対象サイトを指定する。
    ファイル「conf/regex-urlfilter.txt」を以下の通り、最下行コメントアウト+追記する。
    conf/regex-urlfilter.txt
    #+.
    +^http://([a-z0-9]*\.)*nutch.apache.org

  17. クローリング
  18. 以下のコマンドで実行。
    # nutch crawl urls -dir crawl -depth 3 -topN 20
  19. 結果参照
  20. cassandra-cliで確認してみる。
    # cassandra-cli
    Connected to: "Cassandra Cluster" on 127.0.0.1/9160
    Welcome to Cassandra CLI version 1.2.0
    
    Type 'help;' or '?' for help.
    Type 'quit;' or 'exit;' to quit.
    
    [default@unknown] use webpage;
    Authenticated to keyspace: webpage
    
    カラムファミリ「f」を全件参照。
    [default@webpage] list f limit 1000;
    <省略>
    => (column=ts, value=1358554167986, timestamp=1358554170426001)
    -------------------
    RowKey: 6f72672e6170616368652e6e757463683a687474702f617069646f63732d322e312f6f72672f6170616368652f6e757463682f70726f746f636f6c2f687474702f6170692f426c6f636b6564457863657074696f6e2e68746d6c
    => (column=fi, value=2592000, timestamp=1358554170550001)
    => (column=s, value=1.3605226E-4, timestamp=1358554170551000)
    => (column=st, value=1, timestamp=1358554170549002)
    => (column=ts, value=1358554167993, timestamp=1358554170550000)
    
    739 Rows Returned.
    Elapsed time: 1349 msec(s).
    
    カラムファミリ「p」を全件参照。
    [default@webpage] list p limit 1000;
    <省略>
       Parse Plugins org.apache.nutch.parse.headings     Indexing Filter Plugins org.apache.nutch.indexer.anchor An indexing plugin for inbound anchor text. org.apache.nutch.indexer.basic A basic indexing plugin. org.apache.nutch.indexer.feed   org.apache.nutch.indexer.metadata   org.apache.nutch.indexer.staticfield A simple plugin called at indexing that adds fields with static data. org.apache.nutch.indexer.subcollection   org.apache.nutch.indexer.tld Top Level Domain Indexing plugin. org.apache.nutch.indexer.urlmeta URL Meta Tag Indexing Plugin   Misc. Plugins org.apache.nutch.analysis.lang Text document language identifier. org.apache.nutch.collection Subcollection is a subset of an index. org.creativecommons.nutch Sample plugins that parse and index Creative Commons medadata.   Apache Nutch is an open source web-search software project. Nutch is a project of the Apache Software Foundation and is part of the larger Apache community of developers and users.   Overview   Package   Class   Use   Tree   Deprecated   Index   Help    PREV   NEXT FRAMES     NO FRAMES     All Classes Copyright © 2012 The Apache Software Foundation, timestamp=1358554162452000)
    => (column=sig, value=o�>SA-����=�Hɏ, timestamp=1358554162451000)
    => (column=t, value=Overview (apache-nutch 1.6 API), timestamp=1358554162451001)
    
    21 Rows Returned.
    Elapsed time: 18 msec(s).
    
    ちゃんとデータはストアされている模様。

おわり

0 件のコメント:

コメントを投稿