Hadoop が起動する Live-USBを作成する -- Master Node 分散環境 編

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

今回は、マスターノードとなるUSBの基礎の部分に、Hadoop(CDH3)を
インストールし分散環境の設定で、Live-USBを動かします。

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

dmesg | tail

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

作成に使用する環境など

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

Hadoop が起動する Live-USBを作成する -- Master Node 疑似分散 編 - Guutaraの日記
で、作成したVM環境で作業します。

Hadoopの設定

構成ですが、スレーブを10ノードまで登録しておきます。

まずは、confを変更します。
分散環境のconfは、conf.destとします。

sudo cp -r /etc/hadoop-0.20/conf.empty /etc/hadoop-0.20/conf.dist
update-alternatives --display hadoop-0.20-conf
sudo update-alternatives --install /etc/hadoop-0.20/conf hadoop-0.20-conf /etc/hadoop-0.20/conf.dist 40

起動スクリプトで、ERRがでるのが気になる場合は、以下の設定をいれます。

/etc/default/hadoop-0.20

HADOOP_PID_DIR=/tmp
HADOOP_IDENT_STRING=hadoop

各種、設定ファイルを作成します。

 cd /etc/hadoop-0.20/conf.dist
   sudo su
   echo hadoopmst > masters
   cat << EOF > slaves
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6
192.168.0.7
192.168.0.8
192.168.0.9
192.168.0.10
192.168.0.11
EOF

core-site.xml での定義をします。

<configuration>

  <property>
    <name>fs.default.name</name>
    <value>hdfs://hadoopmst:54310</value>
  </property>

</configuration>

hdfs-site.xml での定義をします。

<configuration>

  <property>
    <name>dfs.replication</name>
    <value>2</value>
    <description>Default block replication</description>
  <property>

</configuration>

mapred-site.xml での MapReduce jobtracker の定義をします。

<configuration>

  <property>
    <name>mapred.job.tracker<name>
    <value>hadoopmst:54311<value>
  <property>

<configuration>

FireWallの設定

停止してしまいます。

sudo ufw status

enableなら、無効にしてしまいます。

sudo ufw disable
sudo reboot

起動スクリプトの設定と改修

起動時に、Master Nodeとして、サービスを起動します。

/etc/init.d/hadoop-0.20-namenode
/etc/init.d/hadoop-0.20-jobtracker

LIVE-USBの場合、起動時に全ての情報がクリアされるため、namenodeの
スクリプトに修正をいれます。

/usr/bin/hadoop-0.20 namenode -format が、必ず、実行されるようにします。

#ADD
format() {
    rm -rf /tmp/hadoop-hadoop
    su -s /bin/sh hadoop -c "/usr/bin/hadoop-0.20 namenode -format "
}
case "$1" in
  start)
        echo -n "Starting Format $DESC: "
        format
        echo -n "Starting $DESC: "
        start

Upstartにジョブとして登録します。

sudo su -
cd /etc/init
vi hadoop-namenode.conf
description	"hadoop namenode"

start on filesystem
stop on runlevel S

post-start script
	/etc/init.d/hadoop-0.20-namenode start
	/etc/init.d/hadoop-0.20-jobtracker start
end script

post-stop script
	/etc/init.d/hadoop-0.20-namenode stop
	/etc/init.d/hadoop-0.20-jobtracker stop
end script

いらない、ジョブを止めておきます。

vi avahi-daemon 
description	"mDNS/DNS-SD daemon"

#start on (filesystem
#	  and started dbus)
stop on stopping dbus

起動、停止は、start,stopコマンドで行えます。
initctl list などで、全てのJOBの状態を確認できます。

ntpのインストール

時刻を同じにする為に、ntpdをインストールします。
インストールの際には、インターネットに抜けられるように
固定IPを解除するなどしてから行います。

sudo su -
apt-get install ntp -y

設定ファイルを以下のようにします。

vi /etc/ntp.conf
# You do need to talk to an NTP server or two (or three).
#server ntp.ubuntu.com
server 127.127.1.0
fudge 127.127.1.0 stratum 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

動作確認は、以下のコマンドなどで行います。

ntpq -p
ntpdate -q localhost

動作確認

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

sudo su -
remastersys clean
remastersys backup

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

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

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

USBで、ブートした後、

jps

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

w3cなどでWebUIは確認できます。

w3m http://hadoopmst:50070/
w3m http://hadoopmst:50030/

問題点(解決!)

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