Upload
toshio-mori
View
3.094
Download
1
Embed Size (px)
DESCRIPTION
Citation preview
Hadoop on LXC on VirtualBox
カーネル /VM 勉強会 @ 関西 其の参
森 俊夫 @ 元徳島 / 現神戸
@forest1040
#
自己紹介
• Id:forest1040 です。
• 徳島でフリーランスやってましたが、1年程前に、神戸に引越しました。
• 本業は、 Web 系エンジニアです。最近は、 JavaEE(JBoss Seam) や Play Framework をよく使っています。
• 前に Node.js on Android とかやってました。
#
システム構成ノート 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
#
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
#
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
#
コンテナの生成• とりあえず設定ファイルを作成
• コンテナ生成
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
#
コンテナの設定 (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 を設定しないこと
#
コンテナの設定 (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"
#
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
#
不要なサービスの停止• avahi-daemon• plymouth 関係
#
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
#
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>
各ホストに以下のファイルを作成
#
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>
各ホストに以下のファイルを作成
#
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>
各ホストに以下のファイルを作成
#
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
#
HDFS の確認• めんどくさいのでマスタに links をインストール
# apt-get install links• links http://vm0:50070/ で確認
#
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
#
デモ-- 円周率の計算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
#
今後の目標• Hadoop のマークベンチ
• CEP 系分散処理ソフトウェアの評価
( Storm 、 Jubatus 、 Yahoo S4 等、)
• CloudFoundry on LXC• 分散処理系ではありませんが、 WebRTC にも注目
しています。
#
参考 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
#
今後の目標• Hadoop のマークベンチ
• CEP 系分散処理ソフトウェアの評価
( Storm 、 Jubatus 、 Yahoo S4 等、)
• CloudFoundry on LXC• 分散処理系ではありませんが、 WebRTC にも注目
しています。