debianでhadoopを動かしてみたときのメモ。
正直まだ全然分かってないので、間違ってるかもしれません。
debian5を5台用意してやりました。
サーバは結構古いやつ。
ソースから入れるかaptを使うか悩んでaptにしたけど、結局ソースをいじる必要があるのでaptはやめました。
master: 192.168.18.10
slave1: 192.168.18.11
slave2: 192.168.18.12
…
とする。
まずは6台とも共通の準備。
全部rootで実行してます。
なければsshなどをインストール。
# aptitude install openssh-server ssh rsync
sources.listを編集。(for jdk)
# vi /etc/apt/sources.list
変更
deb http://ftp.jp.debian.org/debian/ lenny main
→ deb http://ftp.jp.debian.org/debian/ lenny main non-free
で,更新。
# aptitude update
Sun Java6 JDKのインストール。
# aptitude install sun-java6-jdk
以下はMasterで作業
masterにて,各ノードにパスワードなしでsshログインできるようにする。
keyの生成
# ssh-keygen -t dsa -P ""
masterへ
# cat .ssh/id_dsa.pub >> .ssh/authorized_keys
各ノードにもmasterのid_dsa.pub を authorized_keysに追加 (省略)
次に、Hadoopのパッケージをダウンロードする。
から、適当なmirrorを選んで、stableなやつをダウンロード。
(今回は0.20.2をダウンロードした。)
# wget http://ftp.riken.jp/net/apache//hadoop/core/stable/hadoop-0.20.2.tar.gz
/usr/local/下に置いて、解凍して、/usr/local/hadoop にリンクを作る
# cp hadoop-0.20.2.tar.gz /usr/local/
# cd /usr/local/
# tar zxf hadoop-0.20.2.tar.gz
# ln -s hadoop-0.20.2 hadoop
# cd hadoop
Hadoopの設定
次は設定。
各種設定ファイルを編集。
まずは
conf/masters を編集。
masterのIPアドレスを書く。
192.168.18.1
conf/slaves
slaveのIPを1行に1つ書く。
192.168.18.2
192.168.18.3
....
core-site.xml
masterのIPを入れる。
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://[master IP]:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/lib/hadoop/cache/${user.name}</value>
</property>
</configuration>
hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<!-- specify this so that running 'hadoop namenode -format' formats the right dir -->
<name>dfs.name.dir</name>
<value>${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>${hadoop.tmp.dir}/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>4</value>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>[master IP]:9001</value>
</property>
</configuration>
conf/hadoop-env.sh
でJAVA_HOMEを設定。
export JAVA_HOME=/usr/lib/jvm/java-6-sun
これでたぶん設定ができたので、slaveにパッケージをコピーして配置する。
# cd /usr/local/
# tar zcf myhadoop.tar.gz hadoop-0.20.2
省略(各スレーブにmyhadoop.tar.gzを送って、/usr/local/下に展開、
/usr/local/hadoopにリンクを作る)
hadoopを動かす
※以下は自分ではやってないので、本当にあってるのか分かりません。
masterにて新規ファイルシステムをフォーマット。
# cd /usr/local/hadoop
# bin/hadoop namenode -format
Hadoop DFSの起動
# bin/start-dfs.sh
MapReduceの起動
# bin/start-mapred.sh
動いてるプロセスの確認
# jps
Hadoopデーモンの停止
# bin/stop-mapred.sh
# bin/stop-dfs.sh
参考にしたサイト
Tags:
debian,
hadoop,
linux