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の通りで特にハマルこともなくここまで確認できた。
一旦ここまでとする。