Hadoopのインストール
Hadoopのインストールに手間取ったので、備忘録。
ゲストOSのインストール(CentOS)
KVM上で動作するCentOSのイメージを一つ作成します。各ノードはこのイメージのコピーを使用します。
再起動後の最初の設定では、FirewallとSELinuxを無効にしておきます。
その他のCentOSのインストール自体の説明はここでは省略しますので、あしからず。
ログイン後、ホスト側から扱い易いように、コンソールの設定をしておきます。/etc/inittabに、"co:2345:respawn:/sbin/agetty ttyS0 115200 vt100-nav"を追加しておけば良いです。これでホスト側から「virsh console <ホスト名>」でアクセスできます。
また、OSをアップデートしておきましょう。
共通項目のインストール・設定
マスターノードの設定
マスターノード用の仮想マシンの準備
まずホスト上で、作成した仮想マシンイメージをコピーしてマスターノード用の仮想マシンイメージを作成します。次のコマンドを使います。
virt-clone -o 元のゲスト名 -n 新しいゲスト名 -f ディスクイメージ名
例えば、
$ sudo virt-clone -o centos54 -n hmaster -f /var/lib/libvirt/images/hmaster.img
とします。
その後、マスターノードの仮想マシンを起動し、コンソールで接続します。
$ virsh start hmaster $ sudo virsh console hmaster
一般ユーザでログインした後、suコマンドでrootにスイッチします。
ネットワークの設定
まず、ネットワーク関連を設定します。
仮想マシンをコピーした際に作成される ifcfg-eth0.bak は削除し、ifcfg-eth0 に、ダイナミックDNSにホスト名を登録するための設定をします。
# rm /etc/sysconfig/network-scripts/ifcfg-eth0.bak # echo 'DHCP_HOSTNAME=hmaster' >> /etc/sysconfig/network-scripts/ifcfg-eth0
また、/etc/sysconfig/network に書かれたホスト名を編集します。
# cat /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=hmaster #
あと、/etc/hosts 内の127.0.0.1は、「localhost.localdomain localhost」だけになるようにします。
(インストール時にホスト名を設定したりすると、ここに追記されたりするので)
ここで一旦ネットワークを再起動しましょう。
# /etc/init.d/network restart
Hadoopの設定
ここでは、/etc/hadoop/conf/ 以下のファイルを編集します。
- core-site.xml
fs.default.name hdfs://hmaster:8020
← スレーブノードの数(ここでは3つ) dfs.replication 3
- mapred-site.xml
mapred.job.tracker hmaster:8021
- masters
hmaster
- slaves
hslave1 hslave2 hslave3
次にHDFSのフォーマットを行います。
# sudo -u hadoop hadoop-0.20 namenode -format
最後に、起動時にHadoopのデーモンを開始出来るように設定します。
# chkconfig --add hadoop-0.20-namenode # chkconfig --add hadoop-0.20-jobtracker
スレーブノードの設定
ここではhslave1のスレーブノードについて説明します。他のhslave2, hslave3は、ホスト名を変更して作業してください。
マスターノードと同様、仮想マシンイメージをコピーします。
$ sudo virt-clone -o centos54 -n hslave1 -f /var/lib/libvirt/images/hslave1.img
その後、スレーブノードの仮想マシンを起動し、コンソールで接続します。
$ virsh start hslave1 $ sudo virsh console hslave1
一般ユーザでログインした後、suコマンドでrootにスイッチし、マスターノードと同じようにネットワーク関連を設定します。
# rm /etc/sysconfig/network-scripts/ifcfg-eth0.bak # echo 'DHCP_HOSTNAME=hslave1' >> /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network に書かれたホスト名を修正します。
# cat /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=hslave1 #
そして一旦ネットワークを再起動します。
# /etc/init.d/network restart