Hatena::ブログ(Diary)

自然言語処理 on Mac

2011-11-07

PFI+NTTの大規模データリアルタイム分析基盤JubatusをMacで動かす

NTTPFIから、大規模データ分析基盤のJubatusオープンソースとして公開されました。
ページが見つかりませんでした | 株式会社 Preferred Infrastructure

ホームページチュートリアルには、動作環境としてLinux2.6以降とありますが、Macでも動きましたので、MacPortsとしてまとめてみました。ただし、まだ動作検証をあまりしていないので、おかしなところがあるかもしれません。

なお、Debian Linuxでのインストール手順の記事も参考になりました。
Jubatusのインストールと若干の動作確認 - kuenishi's blog

インストールにあたって必要なソフトがいくつもありますが、そのうちの pkgconfig, py-msgpack, msgpack, libzookeeper, ux-trie, mecab-utf8のportはすでにあり、今回新たに、pficommon, re2, google-glog と jubatus および py-jubatus-client を追加しました。

これらのソフトを導入するにあたり、Linuxからポーティングすることになる訳ですが、LinuxMacでは共有ライブラリに違いが結構あります。
まず、共有ライブラリ拡張子が、.soではなく.dylibとなります。

システムの基本的なライブラリが、/usr/lib/libSystem.B.dylib にまとめられています。libcやlibmなどのライブラリシンボリックリンクになっていて、コンパイル時に指定しなくても構わないのですが、libcryptはリンクが存在しないため、指定するとエラーになります。

Macの共有ライブラリは2段階の名前空間を採用していて、リンクしている共有ライブラリが参照している別の共有ライブラリ関数プログラムから参照することができないようです。Linuxと同様のことをしたい場合、ビルド時に-flat_namespace を指定することになります。
Porting UNIX/Linux Applications to Mac OS X: Compiling Your Code in Mac OS X

ライブラリを実行時に参照するときに必要なパス名がライブラリ自体に書き込まれていて、ビルド時に”-install_name <インストール先>"を指定するか、install_name_toolを利用して書き換えることができます。ところで、今回必要となるソフトのいくつかは、PythonベースのビルドツールであるWAFを利用していますが、WAFの最新版1.6では、どうやらこの-install_name指定に対応していないようです。

さて、MacPortsでのインストールサーバの起動ですが、次のようになります:

$ sudo port selfupdate
$ sudo port install jubatus py-jubatus-client
$ jubaclassifier --name test

これで、チュートリアルにしたがって動作確認ができると思います。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/hjym_u/20111107/1320647557