Hadoop が起動する Live-USBを作成する -- Slave Node 編

USBで、ブートするだけで、Hadoopの分散環境がテストできる
Live-USBを作成してみます。

今回は、マスターノードを改造して、Slaveを作成します。

Serverで、USBを使う場合ですが、接続後に、

dmesg | tail

すればデバイス名(sdb1など)が、わかるのでマウントします。

作成に使用する環境など

Mac OSX 10.6 のMacBook上に、VMWare Fusionを入れて作業します。

Hadoop が起動する Live-USBを作成する -- Master Node 分散環境 編 - Guutaraの日記
で、作成したVM環境をコピーして、Slave用のVMを作り作業します。

eth0の再設定

copyすると、eth0が消えて、eth1になってしまいます。

以下のファイルを修正して、eth0の指定行を消し、eth1をedh0にしてリブートします。

sudo -
vi /etc/udev/rules.d/70-persistent-net.rules
-- 修正
reboot

Masterの設定から、不要なものを除外/変更。

Master専用の設定を外してしまいます。

  • interfaceを、dhcpに変更します。
sudo - su
vi /etc/network/interfaces/
# The primary network interface
auto eth0
iface eth0 inet dhcp
  • dhcp3-serverを、removeします。
sudo apt-get remove dhcp3-server
update-rc.d -f dhcp3-server remove
  • netdの設定を変更します。
sudo su -
vi /etc/ntp.conf
# You do need to talk to an NTP server or two (or three).
#server ntp.ubuntu.com
server 192.168.0.1

# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
restrict 192.168.0.0 mask 255.255.255.0

終わったら、リスタートさせます。

  • /etc/init.d/ntp restart-hadoop-datanode用のJOB設定をします。host名の設定もここにいれます。
sudo su -
mv /etc/init/hadoop-namenode.conf /etc/init/hadoop-datanode.conf
vi /etc/init/hadoop-datanode.conf
description	"hadoop namenode"

start on filesystem
stop on runlevel S

pre-start script

HOST=`ifconfig eth0 | grep 'inet addr' | /usr/bin/cut -f2 -d: | /usr/bin/cut -f1 -d ' '`
COUNT=1

until [ -n "$HOST" ] 
do
  sleep 3

  HOST=`ifconfig eth0 | grep 'inet addr' | /usr/bin/cut -f2 -d: | /usr/bin/cut -f1 -d ' '`
  COUNT=`expr $COUNT + 1`

  if [ $COUNT -ge 5 ]; then
    break
  fi

done

if [ -n "$HOST" ]; then
  echo "$HOST" > /etc/hostname
  hostname "$HOST"
fi
end script

post-start script
	/etc/init.d/hadoop-0.20-datanode start
	/etc/init.d/hadoop-0.20-tasktracker start
end script

post-stop script
	/etc/init.d/hadoop-0.20-datanode stop
	/etc/init.d/hadoop-0.20-tasktracker stop
end script

Hadoopの設定

変更は、ありません。

Remastersysの設定と改造

isolinuxのメニューを変更します。

cd /etc/remastersys/
cd isolinux 
sudo vi isolinux.cfg.vesamenu 
label live 
  menu label live - Slave Node ( toram )
  kernel /casper/vmlinuz
  append  file=/cdrom/preseed/custom.seed boot=casper initrd=/casper/initrd.gz quiet splash --

動作確認

remastersysで、バックアップを作成します。

sudo su -
remastersys clean
remastersys backup

/home/remastersys/remastersys/custombackup.iso が、できます。
これを、使用して、Ubuntu Dicktopにて、Live-USBを作成します。

「スタートアップ・ディスクの作成」を使用する際には、
かならず、「シャットダウン時に、全ての変更を破棄する」にチェックしてください。

書き込みを可能(Persistenceを使用:casper-rwが、有効になっている)にすると、
HDFSに書き込む事ができませんでした。
UnionFSを、うまく扱えないのでしょうか。。。

USBで、ブートした後、

jps

にて、サービスが上がっていれば大丈夫です。

問題点(解決!)

bootした後に、hadoopユーザでコンソールからログインをしないと、
hadoopのdatanodeが立ち上がりません。

jettyが、0.0.0.0でポートをリスニングする所で、止まってしまいます。

まぁ、いいか。って、ことで放置してます。。(^^; 

原因は、JVMが、 entropy の生成を待ってしまう事のようです。

http://www.listware.net/201004/hadoop-common-user/16668-jetty-cant-start-the-selectchannelconnector.html