読者です 読者をやめる 読者になる 読者になる

kikumotoのメモ帳

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

Hadoop 使用メモ1

HBase とか neptune といった、Hadoop をベースとした分散データベースを試してみたいので、その前に当然 Hadoop をインストールしなければならないので、そのあたりのことをメモしておく。

基本的にQuick Startをそのままなぞっただけ。

準備

あらかじめ、CentOS5.2 の環境に Java6 をインストールし、hadoop というユーザ(ホームディレクトリ:/home/hadoop)を作成しておいた。

今回利用したのは、release 0.20.0。ダウンロードした hadoop-0.20.0.tar.gz を /home/hadoop 上で(もちろん hadoop ユーザで)解凍した。以降では、/home/hadoop/hadoop-0.20.0 を 環境変数 HADOOP_HOME として表すことにする。

準備の最後として、$HADOOP_HOME/conf/hadoop-env.sh に

export JAVA_HOME=/usr/local/java6

のように、Java6 のインストール先を指定した。

単独起動

まずはデバッグに適しているとされる単一Javaプロセスでの起動を試した。

これは単に以下のように実行しただけ。

$ cd $HADOOP_HOME
$ mkdir input
$ cp conf/*.xml input
$ .bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
-- 出力省略 --
$ cat output/*
1       dfsadmin

それらしく動いたので、とりあえずOKとした。

なお、一応次の確認のために、input, output ディレクトリは消しておく。

疑似分散

次に、1台の物理ノード上で、Hadoop のデーモン群を動作させる疑似分散を試した。

まず、設定ファイルを記述した。

$HADOOP_HOME/conf/core-site.xml


  
    fs.default.name
    hdfs://localhost:9000
  

$HADOOP_HOME/conf/hdfs-site.xml


  
    dfs.replication
    1
  

$HADOOP_HOME/conf/mapred-site.xml


  
    mapred.job.tracker
    localhost:9001
  

次に、localhost にパスワードなしで ssh ログインできるようにしておいた。

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

さらにフォーマットということが必要みたいなので、それを実行。

$ cd $HADOOP_HOME
$ ./bin/hadoop namenode -format

以上OKなら、開始できるので、以下を実行した。

$ ./bin/start-all.sh

ログは、hadoop-env.sh で指定される HADOOP_LOG_DIR に出力される。

起動できれば、NameNode と JobTracker は Web から状況を確認できるようになっているので、それぞれ、http://localhost:50070/http://localhost:50030/ にアクセスすればよい。

動作確認は以下のように行った。

$ .bin/hadoop fs -put conf input
$ ./bin/hadoop jar hadoop-0.20.0-examples.jar grep input output 'dfs[a-z.]+'
$ ./bin/hadoop fs -get output output
$ cat output/*

データはデフォルトでは /tmp/hadoop-xxxx とかといったディレクトリが作られ、そこに配置されていた。また、最後2つのコマンドの代わりに

$ ./bin/hadoop fs -cat output/*

としても確認できるらしいので、確認した。

最後に、

$ ./bin/stop-all.sh

として停止した。

Quick Startの通りで特にハマルこともなくここまで確認できた。

一旦ここまでとする。