22
Hadoop on LXC on VirtualBox カーネル /VM 勉強会 @ 関西 其の参 森 俊夫 @ 元徳島 / 現神戸 @forest1040

Hadoop on LXC

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Hadoop on LXC

Hadoop on LXC on VirtualBox

カーネル /VM 勉強会 @ 関西 其の参

森 俊夫 @ 元徳島 / 現神戸

@forest1040

Page 2: Hadoop on LXC

#

自己紹介

• Id:forest1040 です。

• 徳島でフリーランスやってましたが、1年程前に、神戸に引越しました。

• 本業は、 Web 系エンジニアです。最近は、 JavaEE(JBoss Seam) や Play Framework をよく使っています。

• 前に Node.js on Android とかやってました。

Page 3: Hadoop on LXC

#

システム構成ノート PC ( OS : Ubuntu 11.04 )CPU : Core2Duo 1.8GHz メモリ: 4GBVirtualBox ( OS : Ubuntu Server 11.04 )メモリ: 2GBIP 外側 :192.168.56.100( ホストオンリ ) IP 内側 :192.168.5.1(LXC ブリッジ )

VM0(Ubuntu)マスタ

(192.168.5.10)・ NameNode・ JobTracker

VM1(Ubuntu)スレイブ 1

(192.168.5.11)・ DataeNode

・ TaskTracker

VM2(Ubuntu)スレイブ 2

(192.168.5.12)・ DataeNode

・ TaskTracker

VM3(Ubuntu)スレイブ 3

(192.168.5.13)・ DataeNode

・ TaskTracker

Page 4: Hadoop on LXC

#

LXC のインストール (1/2)• 面倒なので、まず root になってしまう

$ sudo -i• パッケージをインストール

# apt-get update# apt-get install lxc debootstrap bridge-utils

• cgroup の作成

# mkdir /cgroup# mount -t cgroup none /cgroup# echo "none /cgroup cgroup defaults 0 0" >> /etc/fstab

Page 5: Hadoop on LXC

#

LXC のインストール (2/2)• ブリッジネットワーク設定

# vi /etc/network/interfacesauto br0iface br0 inet static address 192.168.5.1 netmask 255.255.255.0 network 192.168.5.255 post-up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE post-up sysctl -w net.ipv4.ip_forward=1 pre-down iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE pre-down sysctl -w net.ipv4.ip_forward=0 bridge_ports none bridge_stp off

Page 6: Hadoop on LXC

#

コンテナの生成• とりあえず設定ファイルを作成

• コンテナ生成

sudo lxc-create -n vm0 -t natty -f /var/lib/lxc/natty-template-network.conf

• コンテナ起動

sudo lxc-start -n vm0

# vi /var/lib/lxc/natty-template-network.conflxc.network.type = vethlxc.network.flags = uplxc.network.link = br0

Page 7: Hadoop on LXC

#

コンテナの設定 (1/2)• ネットワーク設定(ホスト側)

• ネットワーク設定(コンテナ側)

# vi /var/lib/lxc/vm0/config## 以下を追加lxc.network.ipv4 = 192.168.5.10/24

# vi /etc/network/interfacesauto eth0iface eth0 inet static address 192.168.5.10 netmask 255.255.255.0 broadcast 192.168.5.255 gateway 192.168.5.1

# vi /etc/hosts## 127.0.0.1 localhost vm0127.0.0.1 localhost

192.168.5.10 vm0192.168.5.11 vm1192.168.5.12 vm2192.168.5.13 vm3

127.0.0.1 にvm0 を設定しないこと

Page 8: Hadoop on LXC

#

コンテナの設定 (2/2)• Hadoop ユーザの作成と鍵の生成

# useradd hadoop -m -g hadoop -s /bin/bash# passwd hadoop# su – hadoop

$ ssh-keygen -t rsa -P ""$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys$ chmod 600 .ssh/authorized_keys

## マスタとスレイブの相互に鍵を送っておく$ cat ./.ssh/id_rsa.pub | ssh vm0 "cat >> ./.ssh/authorized_keys"$ cat ./.ssh/id_rsa.pub | ssh vm1 "cat >> ./.ssh/authorized_keys"

Page 9: Hadoop on LXC

#

Hadoop のインストール• JDK1.6 のインストール

• 必要なパッケージをインストール# apt-get install sudo ssh ntp rsync curl wget

• hadoop パッケージのインストール

# apt-get install python-software-properties# add-apt-repository ppa:ferramroberto/java# apt-get update# apt-get install sun-java6-jdk

# vi /etc/apt/sources.list.d/cloudera.listdeb http://archive.cloudera.com/debian maverick-cdh3 contribdeb-src http://archive.cloudera.com/debian maverick-cdh3 contrib

# wget -q http://archive.cloudera.com/debian/archive.key -O- | apt-key add -# apt-get update# apt-get install hadoop-0.20

Page 10: Hadoop on LXC

#

不要なサービスの停止• avahi-daemon• plymouth 関係

Page 11: Hadoop on LXC

#

Hadoop の設定(共通)• 設定ファイルの作成

• hadoop-env.sh

• Master & slaves

# cp -r /etc/hadoop-0.20/conf.empty /etc/hadoop-0.20/conf.my# update-alternatives --install /etc/hadoop-0.20/conf hadoop-0.20-conf /etc/hadoop-0.20/conf.my 50# update-alternatives --display hadoop-0.20-conf # 設定を確認

# vi /etc/hadoop-0.20/conf.my/hadoop-env.shexport HADOOP_OPTS=-Djava.net.preferIPv4Stack=trueを追加 ## Ubuntu はデフォルトでは、 IPv6 で待ち受けるため(らしい。。)

# echo vm0 > /etc/hadoop-0.20/conf.my/masters# echo vm1 > /etc/hadoop-0.20/conf.my/slaves# echo vm2 >> /etc/hadoop-0.20/conf.my/slaves# echo vm3 >> /etc/hadoop-0.20/conf.my/slaves

Page 12: Hadoop on LXC

#

Hadoop 設定ファイル( core-site.xml )

# vi /etc/hadoop-0.20/conf.my/core-site.xml

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration>

<property><name>fs.default.name</name><value>hdfs://vm0:8020</value>

</property><property>

<name>hadoop.tmp.dir</name><value>/var/lib/hadoop-0.20/cache/${user.name}</value>

</property></configuration>

各ホストに以下のファイルを作成

Page 13: Hadoop on LXC

#

Hadoop 設定ファイル( hdfs-site.xml )

# vi /etc/hadoop-0.20/conf.my/hdfs-site.xml

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration>

<property><name>dfs.replication</name><value>1</value>

</property><property>

<name>dfs.permissions</name><value>false</value>

</property></configuration>

各ホストに以下のファイルを作成

Page 14: Hadoop on LXC

#

Hadoop 設定ファイル( mapred-site.xml )

# vi /etc/hadoop-0.20/conf.my/mapred-site.xml

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration>

<property><name>mapred.job.tracker</name><value>vm0:8021</value>

</property></configuration>

各ホストに以下のファイルを作成

Page 15: Hadoop on LXC

#

HDFS の設定◇ 各ホストで以下を実行# mkdir /var/lib/hadoop-0.20/cache/hdfs# chown hdfs:hdfs /var/lib/hadoop-0.20/cache/hdfs

## ついでに hadoop ユーザのディレクトリもオーナを変更しておく# chown hadoop:hadoop /var/lib/hadoop-0.20/cache/hadoop

◇ マスタで以下を実行## NameNode のフォーマット# sudo -u hdfs hadoop namenode -format

## NameNode と JobTracker をインストール# apt-get install hadoop-0.20-namenode hadoop-0.20-jobtracker# /etc/init.d/hadoop-0.20-namenode start

◇ スレイブで以下を実行## DataNode と TaskTracker をインストール# apt-get install hadoop-0.20-datanode hadoop-0.20-tasktracker# /etc/init.d/hadoop-0.20-datanode start

Page 16: Hadoop on LXC

#

HDFS の確認• めんどくさいのでマスタに links をインストール

# apt-get install links• links http://vm0:50070/ で確認

Page 17: Hadoop on LXC

#

MapReduce の設定◇ 各ホストで以下を実行# mkdir /var/lib/hadoop-0.20/cache/mapred# chown mapred:mapred /var/lib/hadoop-0.20/cache/mapred

◇ マスタで以下を実行## mapred ディレクトリの作成# sudo -u hdfs hadoop dfs -mkdir /var/lib/hadoop-0.20/cache/mapred# sudo -u hdfs hadoop dfs -chown mapred:mapred /var/lib/hadoop-0.20/cache/mapred

◇ スレイブで以下を実行# /etc/init.d/hadoop-0.20-tasktracker start

Page 18: Hadoop on LXC

#

MapReduce の確認• links http://vm0:50030/ で確認

Page 19: Hadoop on LXC

#

デモ-- 円周率の計算hadoop jar /usr/lib/hadoop-0.20/hadoop-examples.jar pi 10 1000

-- 3MB のファイルを 10 個、書き込むhadoop jar /usr/lib/hadoop-0.20/hadoop-*-test.jar TestDFSIO -write -nrFiles 10 -fileSize 3

-- 3MB のファイルを 10 個、読み込むhdfs hadoop jar /usr/lib/hadoop-0.20/hadoop-*-test.jar TestDFSIO -read -nrFiles 10 -fileSize 3

-- RandomWriter に random-data というディレクトリへ出力を書き出させるhadoop jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar randomwriter random-data

-- Sort プログラムhadoop jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar sort random-data sorted-data

-- 確認hadoop jar /usr/lib/hadoop-0.20/hadoop-*-test.jar testmapredsort -sortInput random-data -sortOutput sorted-data

Page 20: Hadoop on LXC

#

今後の目標• Hadoop のマークベンチ

• CEP 系分散処理ソフトウェアの評価

( Storm 、 Jubatus 、 Yahoo S4 等、)

• CloudFoundry on LXC• 分散処理系ではありませんが、 WebRTC にも注目

しています。

Page 21: Hadoop on LXC

#

参考 URL• 貧乏人のための仮想環境

http://d.hatena.ne.jp/forest1040/20120306/1331021930

• 4 台構成の Hadoop を 100 分で試してみる(CentOS + Cloudera)http://saburi380.blogspot.jp/2009/11/1004hadoopcentos-cloudera.html

• 完全分散モードの Hadoop NameNode 導入( Ubuntu10.04 、 CDH3 )http://www.mwsoft.jp/programming/hadoop/namenode_install.html

• 完全分散モードの Hadoop JobTracker 導入( Ubuntu10.04 、 CDH3 )http://www.mwsoft.jp/programming/hadoop/jobtracker_install.html

Page 22: Hadoop on LXC

#

今後の目標• Hadoop のマークベンチ

• CEP 系分散処理ソフトウェアの評価

( Storm 、 Jubatus 、 Yahoo S4 等、)

• CloudFoundry on LXC• 分散処理系ではありませんが、 WebRTC にも注目

しています。