kikumotoのメモ帳

インフラ・ミドル周りを中心に、興味をもったことを適当な感じで。twitter : @takakiku

CloudStoreをバックエンドにしてMapReduce

CloudStore は Hadoop と組み合わせることができ、MapReduce のデータ保持先として利用できる。
Using KFS with Hadoopを参考に試して見た。
Hadoop MapReduce をインストールした場合のサーバの役割は以下のようにした。

ノード名 CloudSotre での役割 Hadoop での役割
kfs0 metaserver JobTracker
kfs1 chunkserver TaskTracker
kfs2 chunkserver TaskTracker
kfs3 chunkserver TaskTracker

CloudStore については、これまでの設定ですでに動作しているので、これに Hadoop の環境を用意していく。Hadoop のインストールについては、以前のエントリ「http://d.hatena.ne.jp/kikumoto/20090607/1244389139」とほぼ同様であるが、いくつか修正しなければならない。

まず、/home/hadoop 配下に kfs0:/home/kfs/cloudstore をそのままコピーしておく。

hadoop-0.20.0/bin/hadoop では、/home/hadoop/hadoop-0.20.0/lib/native/Linux-i386-32 に java.library.path を設定するので、このディレクトリに libkfs_access.so のシンボリックリンクを作成する。

$ cd /home/hadoop/hadoop-0.20.0/lib/native/Linux-i386-32
$ ln -s ../../../../cloudstore/lib/libkfs_access.so .

さらに、libkfs_access.so は同ディレクトリのライブラリを必要としているため、conf/hadoop-env.sh に、以下を追記しておく。

export LD_LIBRARY_PATH=/home/hadoop/cloudstore/lib

そして、core-site.xml を以下のように設定することで、CloudStore を認識させる。


  
    hadoop.tmp.dir
    /home/${user.name}/hadoop_tmp
  
  
    fs.kfs.metaServerHost
    kfs0
  
  
    fs.kfs.metaServerPort
    20000
  
  
    fs.default.name
    kfs://kfs0:20000
  

以上で、

$ ./bin/hadoop fs -ls /

とすれば、CloudStore 上のファイル・ディレクトリが表示される。

そして、kfs0 にて

$ ./bin/start-mapred.sh

とすることで、JobTracker, TaskTracker が起動するので、後は以前のエントリ「http://d.hatena.ne.jp/kikumoto/20090607/1244389139」と同じ方法で MapReduce の動作を確認することができる。