More Related Content Similar to Hadoop on LXC (20) Hadoop on LXC1. Hadoop on LXC on
VirtualBox
カーネル /VM 勉強会 @ 関西 其の参
森 俊夫 @ 元徳島 / 現神戸
@forest1040
2. 自己紹介
• Id:forest1040 です。
• 徳島でフリーランスやってましたが、1年程前
に、神戸に引越しました。
• 本業は、 Web 系エンジニアです。最近
は、 JavaEE(JBoss Seam) や Play
Framework をよく使っています。
• 前に Node.js on Android とかやってまし
た。
#
3. システム構成
ノート PC ( OS : Ubuntu 11.04 )
CPU : Core2Duo 1.8GHz メモリ: 4GB
VirtualBox ( OS : Ubuntu Server 11.04 )
メモリ: 2GB
IP 外側 :192.168.56.100( ホストオンリ )
IP 内側 :192.168.5.1(LXC ブリッジ )
VM0(Ubuntu) VM1(Ubuntu) VM2(Ubuntu) VM3(Ubuntu)
マスタ スレイブ 1 スレイブ 2 スレイブ 3
(192.168.5.10) (192.168.5.11) (192.168.5.12) (192.168.5.13)
・ NameNode ・ DataeNode ・ DataeNode ・ DataeNode
・ JobTracker ・ TaskTracker ・ TaskTracker ・ TaskTracker
#
4. 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
#
5. LXC のインストール (2/2)
• ブリッジネットワーク設定
# vi /etc/network/interfaces
auto br0
iface 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
#
6. コンテナの生成
• とりあえず設定ファイルを作成
# vi /var/lib/lxc/natty-template-network.conf
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
• コンテナ生成
sudo lxc-create -n vm0 -t natty -f
/var/lib/lxc/natty-template-network.conf
• コンテナ起動
sudo lxc-start -n vm0
#
7. コンテナの設定 (1/2)
• ネットワーク設定(ホスト側)
# vi /var/lib/lxc/vm0/config
## 以下を追加
lxc.network.ipv4 = 192.168.5.10/24
• ネットワーク設定(コンテナ側) 127.0.0.1 に
vm0 を設定しないこと
# vi /etc/network/interfaces # vi /etc/hosts
auto eth0 ## 127.0.0.1 localhost vm0
iface eth0 inet static 127.0.0.1 localhost
address 192.168.5.10
netmask 255.255.255.0 192.168.5.10 vm0
broadcast 192.168.5.255 192.168.5.11 vm1
gateway 192.168.5.1 192.168.5.12 vm2
192.168.5.13 vm3
#
8. コンテナの設定 (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"
#
9. Hadoop のインストール
• JDK1.6 のインストール
# apt-get install python-software-properties
# add-apt-repository ppa:ferramroberto/java
# apt-get update
# apt-get install sun-java6-jdk
• 必要なパッケージをインストール
# apt-get install sudo ssh ntp rsync curl wget
• hadoop パッケージのインストール
# vi /etc/apt/sources.list.d/cloudera.list
deb http://archive.cloudera.com/debian maverick-cdh3 contrib
deb-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 #
11. Hadoop の設定(共通)
• 設定ファイルの作成
# 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 # 設定を確認
• hadoop-env.sh
# vi /etc/hadoop-0.20/conf.my/hadoop-env.sh
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
を追加 ## Ubuntu はデフォルトでは、 IPv6 で待ち受けるため(らしい。。)
• Master & slaves
# 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
#
12. 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>
#
13. 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>
#
14. 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>
#
15. 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
#
17. 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
#
19. デモ
-- 円周率の計算
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
#
20. 今後の目標
• Hadoop のマークベンチ
• CEP 系分散処理ソフトウェアの評価
( Storm 、 Jubatus 、 Yahoo S4 等、)
• CloudFoundry on LXC
• 分散処理系ではありませんが、 WebRTC にも注目
しています。
#
21. 参考 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
#
22. 今後の目標
• Hadoop のマークベンチ
• CEP 系分散処理ソフトウェアの評価
( Storm 、 Jubatus 、 Yahoo S4 等、)
• CloudFoundry on LXC
• 分散処理系ではありませんが、 WebRTC にも注目
しています。
#