Hadoop が起動する Live-USBを作成する -- Master Node 基礎準備 編

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

まずは、マスターノードとなるUSBの基礎の部分を作成します。
Hadoopのインストールは、まだ、行いません。

固定IP
DHCPサーバ
hosts

などの設定を有効にして、Live-USBが出来上がるまでです。

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

dmesg | tail

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

作成に使用する環境など

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

VMWare への、Ubuntu Server 10.04のインストール

簡易インストールは、使用せずに、インストールしました。
キーボードは

Generic 101-Key  PC
Japan
Japan

を、選択。

ユーザは、hadoop/hadoopです。
ホスト名は、hadoopmstです。

OpenSSHサーバのパッケージだけ追加します。

インストールが終わったら、ロケールの変更をします。

sudo su -
update-locale LANG=

あとは、aptで最新の状況に。

sudo apt-get update
sudo apt-get -y upgrade

Remastersysのインストール

いつものように。

/etc/apt/source.listに以下を追加して、インストールします。

deb http://www.geekconnection.org/remastersys/repository karmic/

sshdの設定

あくまで、プライベートな環境で使うので、設定はとくに弄りません。

もし、

sudo sshd -t 

Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_dsa_key

がでたら、作成しておきます。

sudo /usr/bin/ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N
sudo /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N 
sudo /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N

DHCP3 Serverのインストールと設定

Slaveノードは、マスターにあるDHCPから、IPを貰う事にします。
まずは、インストールします。

sudo apt-get install dhcp3-server

インストール後に、サービスの起動には失敗しますが、問題はありません。

次に、設定をします。

マスターサーバは、192.168.0.1の固定アドレスを持つ事にします。
スレーブは、2から、254の間とします。

/etc/dhcp3/dhcpd.conf

#
# Sample configuration file for ISC dhcpd for Debian
#
# Attention: If /etc/ltsp/dhcpd.conf exists, that will be used as
# configuration file instead of this file.
#
# $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $
#

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;

authoritative;

log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.2 192.168.0.254;
  option routers 192.168.0.1;
}

固定アドレスにして、サービスの起動テストをします。

/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.1 

rng-toolsのインストール

namenode,datanodeなどが立ち上がる際に、jettyが、とまってしまう原因が、
JVMがrandom number を作成する際に使用するentropy が足りない事dだと判明しました。

sudo su -
update-alternatives --list java

Javaの場所を確認して、

less /usr/lib/jvm/java-6-sun/jre/lib/security/java.security

を確認しましたが、
securerandom.source=file:/dev/urandom になっています。

これならば、待たないはずですが、実際には、待ってしまいます。

なので、rngdを導入する事にしました。

apt-get install rng-tools -y
vi /etc/default/rng-tools
# Configuration for the rng-tools initscript
# $Id: rng-tools.default,v 1.1.2.5 2008-06-10 19:51:37 hmh Exp $

# This is a POSIX shell fragment

# Set to the input source for random data, leave undefined
# for the initscript to attempt auto-detection.  Set to /dev/null
# for the viapadlock and tpm drivers.
#HRNGDEVICE=/dev/hwrng
#HRNGDEVICE=/dev/null
HRNGDEVICE=/dev/urandom

Upstartにジョブを設定します。

vi /etc/init/rng-tools.conf
description	"rng-tools"

start on filesystem
stop on runlevel S

post-start script
	/etc/init.d/rng-tools start
end script

post-stop script
	/etc/init.d/rng-tools stop
end script

Casperの改造

AutoLoginを無効にします。

sudo su -
cd  /usr/share/initramfs-tools/scripts/casper-bottom/
vi 25configure_init

以下の行を

23:# Arrange for shells on virtual consoles, rather than login prompts                   
24:                                                                                      
25:if [ -n "$USERNAME" ]; then     

以下のように変更します。

25:if [ -n "" ]; then     

IPの名前解決を、hostsで行う為、hostsを作成するスクリプトを改造します。
remastersysのbackupオプションでは、1000番のユーザを/etc/casper.confの、
HOSTに入れてしまい、HOST名を変えるのが面倒なので、決めうちにしてます。

cd  /usr/share/initramfs-tools/scripts/casper-bottom/
vi 18hostname
#! /bin/sh

PREREQ=""
DESCRIPTION="Setting hostname..."

prereqs()
{
       echo "$PREREQ"
}

case $1 in
# get pre-requisites
prereqs)
       prereqs
       exit 0
       ;;
esac

. /scripts/casper-functions

log_begin_msg "$DESCRIPTION"

HOST="hadoopmst"

echo "$HOST" > /root/etc/hostname

echo "127.0.0.1 localhost" > /root/etc/hosts

echo "192.168.0.1	hadoopmst" >> /root/etc/hosts
count=2
prefix="192.168.0."

while [ $count -le 254 ]
do
  echo "$prefix$count   $prefix$count" >> /root/etc/hosts

  count=`expr $count + 1 `

done

cat >> /root/etc/hosts <<EOF

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

EOF
hostname "$HOST"

log_end_msg

Remastersysの設定と改造

isolinuxのメニューを変更します。
メディアにあるinterfaceの内容(固定IP)で立ち上げる IP=frommedia、
ram起動の toram をつけ加えます。

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

sshdを使えるようにする為に、以下の部分から、削除をコメントにします。

sudo vi /usr/bin/remastersys
rm -rf $WORKDIR/dummysys/etc/ssh/ssh_host_rsa_key
rm -rf $WORKDIR/dummysys/etc/ssh/ssh_host_dsa_key.pub
rm -rf $WORKDIR/dummysys/etc/ssh/ssh_host_dsa_key
rm -rf $WORKDIR/dummysys/etc/ssh/ssh_host_rsa_key.pub

コメントにする。

# comment out 
#rm -rf $WORKDIR/dummysys/etc/ssh/ssh_host_rsa_key
#rm -rf $WORKDIR/dummysys/etc/ssh/ssh_host_dsa_key.pub
#rm -rf $WORKDIR/dummysys/etc/ssh/ssh_host_dsa_key
#rm -rf $WORKDIR/dummysys/etc/ssh/ssh_host_rsa_key.pub
# end

終了

ここまでで、基本はできました。次は、これにHadoop(CHD3)を、インストールします。
テストをかねて、remastersys backupと、Ubuntu Desktopの
「スタートアップ作成」を使い、USBで、ブートさせて動作を確認しておきます。