Hadoop/Atom-Server
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
]
開始行:
[[Hadoop]]~
#contents
* Hadoop/Atom-Server [#yc73dcc4]
~
Atom Serverを使用し、Hadoopを完全分散モード(クラスタ)で...
・Hadoopについて
・Atom Serverのマシンスペック
・CentOS5.5-x86_64のインストールと各設定
・CDH3beta4のインストール
・Hadoopの設定と各ノードの起動
・サンプルプログラムの実行
・Ganglia(サーバ監視ソフトウェア)の導入
#ref(atomcloud.jpg,,30%);~
(使用するAtom-Server。Atom-Serverの詳細な写真は[[こちら:h...
:Note|本手順では社内でHadoop完全分散モードを構築しHDFS、M...
* Hadoop について [#u4c3fd3b]
Hadoopは大規模分散システムのOpen Source Projectの1つです...
~
またMapReduceはMap処理、Shuffle&Sort処理、Reduce処理に分...
~
ただし大量の小さいファイルの書き込みやファイルの更新には...
~
HadoopのソフトウェアはCommon、HDFS、MapReduceから構成され...
|名称|役割|Master|Slave|h
|HDFS|Hadoop Distributed File System の略称、分散、複製の...
|MapReduce|大規模分散システム上でのプロセス並列化のフレー...
~
HDFS、MapReduceそれぞれのノードについての名称と概略を以下...
- HDFS~
|名称|概略|Master or Slave|h
|NameNode|DataNode上の情報をメタデータで管理、複製の配置...
|DataNode|実データの保存、状態の報告|Slave|
|Secondarynamenode|障害対策の1つ、一定の間隔でNamenodeの...
~
:Note|本手順では実行していませんがHadoopではMasterが単一...
~
- MapReduce~
|名称|概略|Master or Slave|h
|JobTracker|jobの受付、処理の割当、管理|Master|
|TaskTracker|JobTrackerから割当てられた処理を実行するワー...
~
それぞれの詳細については[[Common>http://hadoop.apache.org...
~
また動作モードとしてローカルモード、擬似分散モード(pseudo...
|名称|概略|h
|ローカルモード|1台での実行、Hadoopとしての機能は使わずJa...
|擬似分散モード|1台でMasterとSlaveの実行|
|完全分散モード|複数台でMasterとSlaveの実行|
各動作モードの詳細については[[Getting Started>http://hado...
** CDHについて [#vce83e19]
CDHはCloudera社提供されている『Cloudera Distribution for ...
~
本手順ではCDH3beta4(2011年4月1日当時の最新)で記載してい...
*** Hadoopのバージョンについて [#c390c224]
CDH3beta4に含まれるhadoop-0.20.2を使用しています。また[[h...
~
* Hadoopサーバについて[#uab5ce76]
AtomServerの各マシンにCentOS5.5-x86_64をインストールし設...
:Note|本手順でのHadoopと主要コンポーネントとはCommon、HDF...
** Atom Server構成 [#pf78a073]
今回使用しているマシンの構成は、同型Atomボード8枚1組で構...
- Atom Server~
&ref(atomcloud.jpg,,25%); &ref(atomcloud2.jpg,,25%);~
~
(このAtomサーバは東京エレクトロンデバイス様のご好意によ...
様々な角度からAtom Serverを撮影しました。[[Atom-Serverの...
~
- スペック(Atomボード1枚)~
CPU:Atom D510 1.66GHz(Core 2個,HT Enable ,64bit Enable)
Chipset :NM10
Memory:2GB
Hard Disk容量: 160GB
Ethernet:1個(static IPを個別に設定)
OS: CentOS-5.5-x86_64
** CentOS-5.5-x86_64の設定 [#o971c4a6]
インストールはCentOS-5.6-x86_64-LiveCD.isoを使用します。i...
*** CentOS-5.5-x86_64のインストール[#m738e5e9]
インストールパッケージの選択は以下のとおりです。
- Server
- Server GUI(CUIのみ使用の場合は不必要です)
- 追加パッケージ
-- BASEから開発ツール、開発ライブラリ
- 削除パッケージ
-- Serverからsendmail、newsサーバ
*** アカウント設定 [#f4cf6cf4]
root のパスワードは『beatcraft』に設定しています。また一...
ユーザ名:beat
パスワード:beatcraft
*** その他のインストール時の設定 [#ce282a4e]
Firewall SELinux は共にDisableに設定しています。その他の...
** ネットワーク設定 [#edffc5a2]
Hadoop完全分散モードでの動作確認のため各Atomボードに固定I...
:Note|Hadoopのクラスタリングではマシン間の通信はFQDNが解...
- 固定IPの設定 ~
固定IPの設定は/etc/sysconfig/network-scripts/ifcfg-eth0に...
-- 設定例~
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
...<略>
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.0.212
GATEWAY=192.168.0.xxx
...<略>
- ホスト名の設定~
使用するAtomボードは8枚あるので8台分の設定を記載します。...
-- 設定例~
# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.0.211 atomcloud1.beatcraft.co.jp atomcloud1
192.168.0.212 atomcloud2.beatcraft.co.jp atomcloud2
...<略>
192.168.0.218 atomcloud8.beatcraft.co.jp atomcloud8
設定完了後、再起動し自マシン(ここではatomcloud2)のホスト...
# ping atomcloud2
PING atomcloud2.beatcraft.co.jp (192.168.0.212) 56(84) b...
64 bytes from atomcloud2.beatcraft.co.jp (192.168.0.212)...
64 bytes from atomcloud2.beatcraft.co.jp (192.168.0.212)...
64 bytes from atomcloud2.beatcraft.co.jp (192.168.0.212)...
:Note|ping実行時にlocalhost.localdomainで応答がある場合、...
** sshdの設定 [#ad0ea5ad]
Hadoopの完全分散モードでのマシン同士の通信はsshを用いて行...
# vi /etc/ssh/sshd_config
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
設定完了後sshdを再起動します。~
# /etc/init.d/sshd restart
** ntpの設定 [#l6d47b36]
時刻を確認し日本ntpサーバと時刻あわせをします。またその情...
# date
# ntpdate -s ntp.nict.jp
# clock -w
ntp/step-tickersに以下の3つの国内ntpサーバを追加します。~
# vi /etc/ntp/step-tickers
ntp.nict.jp
ntp.jst.mfeed.ad.jp
ntp.ring.gr.jp
完了後ntpを再起動し、時刻の確認をします。~
# /etc/init.d/ntpd restart
# date
:Note|標準インストールで日本時間を選んでも正しい時刻を取...
** 環境変数設定 [#q9bfcb32]
予めJAVA_HOME,HADOOP_HOME、hadoopへのPATH、/sbinと/usr/sb...
# cat /etc/bashrc | tail -n 5 -f
# vim:ts=4:sw=4
export JAVA_HOME=/usr/java/latest
export HADOOP_HOME=/usr/lib/hadoop
export PATH=/sbin:/usr/sbin:$HADOOP_HOME/bin:$PATH
設定完了後、環境変数設定を再度読み込みます。
# source /etc/bashrc
:Note|JAVAの実行時およびHadooのサービス起動時および実行時...
~
** 不要なサービスの停止 [#ld524810]
- runlevel~
runlevelはデフォルトで5(GUI起動)に設定しています。
- サービス~
使用しないサービスを停止します。以下chkconfigコマンドで登...
# chkconfig --list
NetworkManager 0:off 1:off 2:off 3:off 4:off ...
acpid 0:off 1:off 2:on 3:on 4:on ...
...<略>
- sendmail~
この手順ではsendmailは使用しないのでsendmailの停止とサー...
# /etc/init.d/sendmail stop
sm-client を停止中: [ OK ]
sendmail を停止中: [ OK ]
# chkconfig sendmail off
# chkconfig --list | grep sendmail
sendmail 0:off 1:off 2:off 3:off 4:off ...
**JDKのインストール [#l36907f3]
以下のサイトから最新のJDK-64bit版 (jdk-6u24-linux-x64-rpm...
http://www.oracle.com/technetwork/java/javase/downloads/i...
# cd /home/beat/
# ls
Desktop jdk-6u24-linux-x64-rpm.bin
# chmod u+x jdk-6u24-linux-x64-rpm.bin
# ./jdk-6u24-linux-x64-rpm.bin
# ls -l /usr/java/
合計 4
lrwxrwxrwx 1 root root 16 3月 22 20:30 default -> /usr/j...
drwxr-xr-x 9 root root 4096 3月 22 20:30 jdk1.6.0_24
lrwxrwxrwx 1 root root 21 3月 22 20:30 latest -> /usr/ja...
上記で設定したJAVA_HOMEとディレクトリ位置があっているかを...
以上でCentOS上での基本的な設定は完了です。
** CentOS-5.5-x86_64設定の制限事項 [#idc0d456]
- 今回のテストでは意識してセキュリティに関する事象を除外...
~
* CDH3beta4のリポジトリ追加 [#n16b2d43]
CDH3beta4のHadoopバージョンは0.20.2です。またCDH2およびst...
~
CDH3beta4に含まれるHadoopをインストールするためCDH3beta4...
# vi /etc/yum.repos.d/cloudera-cdh3.repo
[cloudera-cdh3]
name=Cloudera's Distribution for Hadoop, Version 3
mirrorlist=http://archive.cloudera.com/redhat/cdh/3/mirr...
gpgkey = http://archive.cloudera.com/redhat/cdh/RPM-GPG-...
gpgcheck = 0
追加したリポジトリを含めるようyumの更新をします。~
# yum update yum
:Note|2011年4月14日にCDH3がリリースされました。詳細につい...
~
* Hadoopのインストール [#kab7f5a2]
先ほど更新したyumを使用しHadoop(hadoop-0.20)をインスト...
# yum search hadoop-
...<略>
============================================ Matched: ha...
hadoop-0.20.noarch : Hadoop is a software platform for p...
hadoop-0.20-conf-pseudo.noa
...<略>
# yum install hadoop-0.20 -y
** 主要コンポーネントのインストール [#fbecc104]
yum searchコマンドを使って、Hadoop-0.20.2に対応する主要コ...
|名称|HDFS or MapReduce|Master or Slave|概略|h
|hadoop-0.20-namenode|HDFS|Master|DataNode上の情報をメタ...
|hadoop-0.20-datanode|HDFS|Slave|実データの保存、Namenode...
|hadoop-0.20-secondarynamenode|HDFS|Master|障害対策の1つ...
|hadoop-0.20-jobtracker|MapReduce|Master|jobの受付、処理...
|hadoop-0.20-tasktracker|MapReduce|Slave|JobTrackerから割...
~
# yum install hadoop-0.20-namenode hadoop-0.20-datanode
hadoop-0.20-secondarynamenode hadoop-0.20-jobtracker
hadoop-0.20-tasktracker -y
注:文書では改行していますが、実コマンドはyumから-yまで1...
:Note|本手順ではsecondarynamenodeのインストールはしていま...
~
Hadoopインストール完了後、mapred,hdfsユーザが追加されてい...
# cat /etc/passwd
<略>
beat:x:500:500:xxxxx:/home/beat:/bin/bash
mapred:x:101:107:Hadoop MapReduce:/usr/lib/hadoop-0.20:/...
hdfs:x:102:106:Hadoop HDFS:/usr/lib/hadoop-0.20:/bin/bash
:Note|事前にhadoopユーザを作成していた場合CDH3beta4ではha...
~
*** その他のコンポーネント [#g3d60327]
本手順では使用しませんが、設定参考のため擬似分散モード用...
# yum install hadoop-0.20-conf-pseudo -y
また端末上でのブラウジングのためテキストブラウザをインス...
# yum install w3m -y
その他CDH3 beta4から入手できるコンポーネントとインストー...
|コンポーネント名|パッケージ名|概略|参照URL|h
|Flume|Flume|データローディングインフラ|http://archive.cl...
|Sqoop|Sqoop|MySQLからHadoopへのデータインポートツール|ht...
|Hue|Hue|Hadoop User Experience(HadoopのUI)|http://archiv...
|Pig|hadoop-pig|データセットを探索するための対話的インタ...
|Hive|hadoop-hive|SQLライクな言語|http://hive.apache.org/|
|HBase|hadoop-hbase|Bigtable Storage System。HDFSとは逆に...
|ZooKeeper|hadoop-zookeeper|設定情報、名前付けなどの設定...
|Oozie server|Oozie|ワークフローエンジン|http://archive.c...
|Oozie client|oozie-client|ワークフローエンジン|http://ar...
|Whirr|Whirr|AmazonEC2のようなクラウドとの連携API|http://...
~
* Hadoopの設定 [#j1377439]
Hadoopのモードは完全分散モード(クラスタ)設定を使用しま...
~
** hadoop-0.20-conf.bc_clusterの設定 [#i10a8f15]
完全分散モードに必要な設定ディレクトリをconf.bc_clusterと...
# cp -r /etc/hadoop-0.20/conf.empty hadoop-0.20/conf.bc_...
:Note|conf.emptyは設定が記載されていないテンプレートです...
- core-site.xml ~
core-site.xmlにはHadoopの共通設定を記載します。hadoop.tmp...
# cat /etc/hadoop-0.20/conf.bc_cluster/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl...
<!-- Put site-specific property overrides in this file. ...
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://atomcloud2:8020</value>
<description>The name and URI of the default FS.</de...
</property>
</configuration>
~
- hdfs-site.xml ~
hdfs-site.xmlにはHDFSに関する設定を記載します。ここではdf...
# cat /etc/hadoop-0.20/conf.bc_cluster/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl...
<!-- Put site-specific property overrides in this file. ...
<configuration>
<property>
<name>dfs.name.dir</name>
<value>${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>${hadoop.tmp.dir}/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
:Note|replicationは実データを複製する数です。Slaveが1台の...
~
- mapred-site.xml ~
mapred-site.xmlはMapReduceに関する設定を記載しています。m...
ポート番号は変更する必要はありません。~
# cat /etc/hadoop-0.20/conf.bc_cluster/mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl...
<!-- Put site-specific property overrides in this file. ...
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>atomcloud2:8021</value>
</property>
</configuration>
:Note|core-site.xml、hdfs-site.xml、mapred-site.xmlの詳細...
~
- masters ~
mastersにはMasterの役割をもつホスト名を明記します。本手順...
# cat /etc/hadoop-0.20/conf.mycluster/masters
atomcloud2
- slaves ~
slavesにはSlaveの役割をもつホスト名を明記します。本手順で...
# cat /etc/hadoop/conf.bc_cluster/slaves
atomcloud1
atomcloud3
...<略>
atomcloud8
** hadoo-0.20-confの設定 [#r3045818]
hadoo-0.20-confの優先順位設定は/usr/sbin/alternativesを使...
:Note| 使用法は『 alternatives --install <リンク> <名前> ...
hadoop-0.20-confの現在の設定の確認をします。~
# alternatives --display hadoop-0.20-conf
hadoop-0.20-conf -ステータスは自動です。
リンクは現在 /etc/hadoop-0.20/conf.pseudo を指しています。
/etc/hadoop-0.20/conf.empty - 優先項目 10
/etc/hadoop-0.20/conf.pseudo - 優先項目 30
現在の「最適」バージョンは /etc/hadoop-0.20/conf.pseudo ...
hadoop-0.20-confの優先度を変更します。conf.bc_clusterに優...
# alternatives --install /etc/hadoop-0.20/conf hadoop-0....
/etc/hadoop/conf.bc_cluster 60
注:上記コマンドには改行が含まれていますが1行で実行しま...
# alternatives --display hadoop-0.20-conf
hadoop-0.20-conf -ステータスは自動です。
リンクは現在 /etc/hadoop/conf.bc_cluster を指しています。
/etc/hadoop-0.20/conf.empty - 優先項目 10
/etc/hadoop-0.20/conf.pseudo - 優先項目 30
/etc/hadoop/conf.bc_cluster - 優先項目 60
現在の「最適」バージョンは /etc/hadoop/conf.bc_cluster ...
これでhadoop-0.20-confに/etc/hadoop/conf.bc_clusterを反映...
** /hadoopディレクトリ [#a37f64f5]
hadoopディレクトリを作成し、HDFS、MapReduceが動作する状態...
~
core-site.xmlのhadoop.tmp.dirの設定で/hadoopを指定してい...
# mkdir /hadoop
# mkdir /hadoop/dfs
# mkdir /hadoop/mapred
# chown -R hdfs:hadoop /hadoop/dfs/
# chown -R mapred:hadoop /hadoop/mapred/
# ls -l /hadoop/
合計 8
drwxr-xr-x 3 hdfs hadoop 4096 3月 31 09:44 dfs
drwxr-xr-x 3 mapred hadoop 4096 3月 31 09:44 mapred
:Note|namenode、jobtrackerの起動時に所有者に対するエラー...
~
~
* 完全分散モードでの起動・停止 [#q7883122]
** Hadoopの各ノードの停止 [#b88c15b6]
Hadoopの各ノードの起動する前に必要のないHadoopの各サービ...
# for service in /etc/init.d/hadoop-0.20-*; do $service ...
** hdfsのフォーマット [#w4b811b9]
Master、Slaveともにhdfsのフォーマットをhdfsユーザで実行し...
# sudo -u hdfs hadoop-0.20 namenode -format
11/03/30 22:26:16 INFO namenode.NameNode: STARTUP_MSG:
/*******************************************************...
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = atomcloud2/192.168.0.212
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 0.20.2-CDH3B4
<略>
11/03/30 22:26:19 INFO common.Storage: Storage directory...
11/03/30 22:26:19 INFO namenode.NameNode: SHUTDOWN_MSG:
/*******************************************************...
SHUTDOWN_MSG: Shutting down NameNode at atomcloud2/192.1...
********************************************************...
** 各ノードの起動と停止 [#c28e99d7]
各ノードの起動順は大きくHDFS->MapReduceの順で起動します。...
Master(namenode)->Slave(datanode)->Master(jobtracker)->S...
Master(atomcloud2)のnamenode起動後に各Slave(atomcloud1、3...
~
Slaveのdatanode起動後、Masternにて/mapred/systemを作成し...
- 各ノードの起動順~
- Masster :namenodeを以下のコマンドで起動します。~
# /etc/init.d/hadoop-0.20-namenode start
- 各Slave :datanodeを以下のコマンドで起動します。~
# /etc/init.d/hadoop-0.20-datanode start
- Master :hdfsユーザに切り替えて/mapred/systemの作成しま...
# hadoop-0.20 fs -mkdir /mapred/system
# su hdfs
% hadoop-0.20 fs -chown -R mapred:supergroup /mapred
:Note|hdfsユーザで/mapred/systemをhdfs上に作成しないとrep...
~
- Master :jobtrackerを以下のコマンドで起動します。~
# /etc/init.d/hadoop-0.20-jobtracker start
- 各slave :tasktrackerを以下のコマンドで起動します。~
# /etc/init.d/hadoop-0.20-tasktracker start
- 各ノードの停止順~
- Masterのノードをを以下のコマンドで停止します。~
# /etc/init.d/hadoop-0.20-jobtracker stop
# /etc/init.d/hadoop-0.20-namenode stop
- 各Slaveのノードを以下のコマンドで停止します。~
# /etc/init.d/hadoop-0.20-tasktracker stop
# /etc/init.d/hadoop-0.20-datanode stop
各ノードが起動するとNameNodeとMap/Reduce Administrationの...
NameNode:http://atomcloud2:50070
Map/Reduce Administration:http://atomcloud2:50030
- NameNodeのスクリーンショット~
#ref(namenode.jpg,,40%);~
~
- Map/Reduce Administrationのスクリーンショット~
#ref(mapreduce.jpg,,40%);~
~
* Examples and Test [#f377b761]
HadoopにはHDFS、Map/Reduceの動作確認用のExamplesとHadoop...
のサンプルが含まれています。以下のコマンドを実行するとよ...
- Examples~
# hadoop jar /usr/lib/hadoop-0.20/hadoop-0.20.2-CDH3B4-e...
An example program must be given as the first argument.
...<略>
pi: A map/reduce program that estimates Pi using monte-...
randomtextwriter: A map/reduce program that writes 10GB...
...<略>
- Test~
# hadoop jar /usr/lib/hadoop-0.20/hadoop-0.20.2-CDH3B4-t...
An example program must be given as the first argument.
Valid program names are:
DFSCIOTest: Distributed i/o benchmark of libhdfs.
DistributedFSCheck: Distributed checkup of the file sys...
MRReliabilityTest: A program that tests the reliability...
TestDFSIO: Distributed i/o benchmark.
...<略>
ここではExamplesのpiとTestに含まれるTestDFSIOのwrite、rea...
- piの実行例~
hadoop jar /usr/lib/hadoop-0.20/hadoop-examples-0.20.2-C...
Number of Maps = 10
Samples per Map = 1000
Wrote input for Map #0
...<略>
11/04/11 19:29:39 INFO mapred.FileInputFormat: Total inp...
11/04/11 19:29:40 INFO mapred.JobClient: Running job: jo...
11/04/11 19:29:41 INFO mapred.JobClient: map 0% reduce 0%
...<略>
11/04/11 19:30:09 INFO mapred.JobClient: Reduce inpu...
Job Finished in 30.142 seconds
Estimated value of Pi is 3.14080000000000000000
- TestDFSIO~
write、read、cleanを一度でテストするために以下のようなス...
#!/bin/sh
echo "--- Nr:10 FS:10M(10*10MB:100MB)---" > TestDFSIO_re...
hadoop jar /usr/lib/hadoop-0.20/hadoop-test-0.20.2-CDH3B...
sleep 1
hadoop jar /usr/lib/hadoop-0.20/hadoop-test-0.20.2-CDH3B...
sleep 1
echo "---- clean ----" >> TestDFSIO_results.log
hadoop jar /usr/lib/hadoop-0.20/hadoop-test-0.20.2-CDH3B...
echo "---- clean ----" >> TestDFSIO_results.log
TestDFSIO_results.logは以下のように出力されます。
--- Nr:10 FS:10M(10*10MB:100MB)---
----- TestDFSIO ----- : write
Date & time: Sun Apr 10 22:57:02 JST 2011
Number of files: 10
Total MBytes processed: 10
Throughput mb/sec: 2.1867483052700636
Average IO rate mb/sec: 2.351172685623169
IO rate std deviation: 0.661258472040145
Test exec time sec: 29.263
----- TestDFSIO ----- : read
Date & time: Sun Apr 10 22:57:36 JST 2011
Number of files: 10
Total MBytes processed: 10
Throughput mb/sec: 4.050222762251924
Average IO rate mb/sec: 4.336997032165527
IO rate std deviation: 1.0029312896197553
Test exec time sec: 29.292
---- clean ----
TestDFSIO.0.0.4
11/04/10 22:57:40 INFO fs.TestDFSIO: nrFiles = 1
11/04/10 22:57:40 INFO fs.TestDFSIO: fileSize (MB) = 1
11/04/10 22:57:40 INFO fs.TestDFSIO: bufferSize = 1000000
11/04/10 22:57:41 INFO fs.TestDFSIO: Cleaning up test fi...
---- clean ----
以上で、完全分散モードの動作確認は完了です。以下のGanglia...
* Gangliaの設定 [#cd694ea3]
HDFS、Map/Reduce AdministrationにWebUIがありますが、クラ...
** Gangliaのインストール [#n71639df]
atomcloud2でrpmforge(サードパーティリポジトリ)からx86_6...
# wget http://packages.sw.be/rpmforge-release/rpmforge-r...
# rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
GangliaのDownload頁からganglia monitor coreの最新版3.17を...
# wget http://sourceforge.net/projects/ganglia/files/gan...
ダウンロード後rpmパッケージ化するためにrpmbuildを行うと以...
# rpmbuild -tb --target noarch,x86_64 ganglia-3.1.7.tar.gz
ビルド対象プラットフォーム: noarch,x86_64
ターゲット noarch 用にビルド中
エラー: ビルド依存性の失敗:
libconfuse-devel は ganglia-3.1.7-1.noarch に必...
pcre-devel は ganglia-3.1.7-1.noarch に必要とさ...
rrdtool-devel は ganglia-3.1.7-1.noarch に必要と...
apr-devel > 1 は ganglia-3.1.7-1.noarch に必要と...
表示されている必要な依存パッケージをインストールします。~
# yum install libconfuse-devel pcre-devel rrdtool-devel ...
再度rpmbuildを実行すると/usr/src/redhat/RPMS/以下にgangli...
# rpmbuild -tb --target noarch,x86_64 ganglia-3.1.7.tar.gz
# cd /usr/src/redhat/RPMS/x86_64/
# ls
ganglia-debuginfo-3.1.7-1.x86_64.rpm ganglia-gmetad-3.1...
ganglia-devel-3.1.7-1.x86_64.rpm ganglia-gmond-3.1....
# ls ../noarch/
ganglia-web-3.1.7-1.noarch.rpm
Gangliaのインストール先のMaster(atomcloud2)とSlave(atomcl...
~
またMonitor(atomcloud2)にはganglia-gmetad-3.1.7-1.x86_64....
~
また、atomcloud2以外のマシンではrpmforgeがインストールさ...
- Master(atomclod2)~
# yum install libconfuse -y
# rpm -ivh libganglia-3_1_0-3.1.7-1.x86_64.rpm
# rpm -ivh ganglia-gmond-3.1.7-1.x86_64.rpm
- Slave(atomcloud1、atomcloud3〜8)~
# wget http://packages.sw.be/rpmforge-release/rpmforge-r...
# rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
# yum install libconfuse -y
# rpm -ivh libganglia-3_1_0-3.1.7-1.x86_64.rpm
# rpm -ivh ganglia-gmond-3.1.7-1.x86_64.rpm
- Monitor(atomcloud2)~
Monitorにはganglia-gmetad、ganglia-webgmetad、httpdとphp...
# rpm -ivh ganglia-gmetad-3.1.7-1.x86_64.rpm
# yum install php php-gd
# rpm -ivh ganglia-web-3.1.7-1.noarch.rpm
# cd /etc/ganglia/
# ls
conf.d gmetad.conf gmond.conf
** Master gmond.conf設定 [#td75a6c1]
Gangliaの設定ファイルgmond.confを記載します。clusterのnam...
# vi /etc/ganglia/gmond.conf
...<略>
cluster {
name = "Master Servers"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
...<略>
udp_send_channel {
bind_hostname = yes
#bind_hostname = yes # Highly recommended, soon to be ...
# This option tells gmond to use ...
# that resolves to the machine's ...
# this, the metrics may appear to...
# interface and the DNS names ass...
# those IPs will be used to creat...
mcast_join = 239.2.11.71
port = 8649
ttl = 1
}
/* You can specify as many udp_recv_channels as you like...
udp_recv_channel {
mcast_join = 239.2.11.71
port = 8649
bind = 239.2.11.71
}
** Slave gmond.conf設定 [#n6b1b82e]
Masterと同様にSlaveのgmond.confを以下のように記載します。...
# vi /etc/ganglia/gmond.conf
...<略>
cluster {
name = "Slave Servers"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
/* The host section describes attributes of the host, li...
host {
location = "unspecified"
}
/* Feel free to specify as many udp_send_channels as you...
used to only support having a single channel */
udp_send_channel {
bind_hostname = yes # Highly recommended, soon to be d...
# This option tells gmond to use ...
# that resolves to the machine's ...
# this, the metrics may appear to...
# interface and the DNS names ass...
# those IPs will be used to creat...
mcast_join = 239.2.11.72
port = 8649
ttl = 1
}
/* You can specify as many udp_recv_channels as you like...
udp_recv_channel {
mcast_join = 239.2.11.72
port = 8649
bind = 239.2.11.72
}
** Master、Slave のGangliaサービスの起動 [#w69f6c4d]
各マシンでGangliaサービスのgmondを起動します。~
# /etc/init.d/gmond start
** Monitor gmetad.conf設定 [#vccdeb04]
MonitorのGangliaの設定ファイルgmetad.confを以下に記載しま...
# vi /etc/ganglia/gmetad.conf
#data_source "my cluster" localhost
data_source "Master Servers" atomcloud2
data_source "Slave Servers" atomcloud1 atomcloud3 atomcl...
** MonitorのGangliaサービスの起動 [#n8cafbb5]
Monitorマシン上でhttpdのサービスを登録します。サービスレ...
# chkconfig --list | grep httpd
httpd 0:off 1:off 2:off 3:off 4:off ...
# chkconfig httpd on
# chkconfig --list | grep httpd
httpd 0:off 1:off 2:on 3:on 4:on ...
httpdとMonitorのGangliaサービスgmetadを起動します。~
# /etc/init.d/httpd start
# /etc/init.d/gmetad start
GanliaのWebUIをatomcloud2に設定していますので以下のURLで...
http://atomcloud2/ganglia/ ~
- Gangliaのスクリーンショット~
#ref(ganglia.jpg,,40%)~
以上でGangliaの設定は完了です。~
* 参考URL [#yf483e42]
- Hadoop による分散データ処理: 第 1 回 導入編
-- http://www.ibm.com/developerworks/jp/linux/library/l-h...
終了行:
[[Hadoop]]~
#contents
* Hadoop/Atom-Server [#yc73dcc4]
~
Atom Serverを使用し、Hadoopを完全分散モード(クラスタ)で...
・Hadoopについて
・Atom Serverのマシンスペック
・CentOS5.5-x86_64のインストールと各設定
・CDH3beta4のインストール
・Hadoopの設定と各ノードの起動
・サンプルプログラムの実行
・Ganglia(サーバ監視ソフトウェア)の導入
#ref(atomcloud.jpg,,30%);~
(使用するAtom-Server。Atom-Serverの詳細な写真は[[こちら:h...
:Note|本手順では社内でHadoop完全分散モードを構築しHDFS、M...
* Hadoop について [#u4c3fd3b]
Hadoopは大規模分散システムのOpen Source Projectの1つです...
~
またMapReduceはMap処理、Shuffle&Sort処理、Reduce処理に分...
~
ただし大量の小さいファイルの書き込みやファイルの更新には...
~
HadoopのソフトウェアはCommon、HDFS、MapReduceから構成され...
|名称|役割|Master|Slave|h
|HDFS|Hadoop Distributed File System の略称、分散、複製の...
|MapReduce|大規模分散システム上でのプロセス並列化のフレー...
~
HDFS、MapReduceそれぞれのノードについての名称と概略を以下...
- HDFS~
|名称|概略|Master or Slave|h
|NameNode|DataNode上の情報をメタデータで管理、複製の配置...
|DataNode|実データの保存、状態の報告|Slave|
|Secondarynamenode|障害対策の1つ、一定の間隔でNamenodeの...
~
:Note|本手順では実行していませんがHadoopではMasterが単一...
~
- MapReduce~
|名称|概略|Master or Slave|h
|JobTracker|jobの受付、処理の割当、管理|Master|
|TaskTracker|JobTrackerから割当てられた処理を実行するワー...
~
それぞれの詳細については[[Common>http://hadoop.apache.org...
~
また動作モードとしてローカルモード、擬似分散モード(pseudo...
|名称|概略|h
|ローカルモード|1台での実行、Hadoopとしての機能は使わずJa...
|擬似分散モード|1台でMasterとSlaveの実行|
|完全分散モード|複数台でMasterとSlaveの実行|
各動作モードの詳細については[[Getting Started>http://hado...
** CDHについて [#vce83e19]
CDHはCloudera社提供されている『Cloudera Distribution for ...
~
本手順ではCDH3beta4(2011年4月1日当時の最新)で記載してい...
*** Hadoopのバージョンについて [#c390c224]
CDH3beta4に含まれるhadoop-0.20.2を使用しています。また[[h...
~
* Hadoopサーバについて[#uab5ce76]
AtomServerの各マシンにCentOS5.5-x86_64をインストールし設...
:Note|本手順でのHadoopと主要コンポーネントとはCommon、HDF...
** Atom Server構成 [#pf78a073]
今回使用しているマシンの構成は、同型Atomボード8枚1組で構...
- Atom Server~
&ref(atomcloud.jpg,,25%); &ref(atomcloud2.jpg,,25%);~
~
(このAtomサーバは東京エレクトロンデバイス様のご好意によ...
様々な角度からAtom Serverを撮影しました。[[Atom-Serverの...
~
- スペック(Atomボード1枚)~
CPU:Atom D510 1.66GHz(Core 2個,HT Enable ,64bit Enable)
Chipset :NM10
Memory:2GB
Hard Disk容量: 160GB
Ethernet:1個(static IPを個別に設定)
OS: CentOS-5.5-x86_64
** CentOS-5.5-x86_64の設定 [#o971c4a6]
インストールはCentOS-5.6-x86_64-LiveCD.isoを使用します。i...
*** CentOS-5.5-x86_64のインストール[#m738e5e9]
インストールパッケージの選択は以下のとおりです。
- Server
- Server GUI(CUIのみ使用の場合は不必要です)
- 追加パッケージ
-- BASEから開発ツール、開発ライブラリ
- 削除パッケージ
-- Serverからsendmail、newsサーバ
*** アカウント設定 [#f4cf6cf4]
root のパスワードは『beatcraft』に設定しています。また一...
ユーザ名:beat
パスワード:beatcraft
*** その他のインストール時の設定 [#ce282a4e]
Firewall SELinux は共にDisableに設定しています。その他の...
** ネットワーク設定 [#edffc5a2]
Hadoop完全分散モードでの動作確認のため各Atomボードに固定I...
:Note|Hadoopのクラスタリングではマシン間の通信はFQDNが解...
- 固定IPの設定 ~
固定IPの設定は/etc/sysconfig/network-scripts/ifcfg-eth0に...
-- 設定例~
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
...<略>
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.0.212
GATEWAY=192.168.0.xxx
...<略>
- ホスト名の設定~
使用するAtomボードは8枚あるので8台分の設定を記載します。...
-- 設定例~
# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.0.211 atomcloud1.beatcraft.co.jp atomcloud1
192.168.0.212 atomcloud2.beatcraft.co.jp atomcloud2
...<略>
192.168.0.218 atomcloud8.beatcraft.co.jp atomcloud8
設定完了後、再起動し自マシン(ここではatomcloud2)のホスト...
# ping atomcloud2
PING atomcloud2.beatcraft.co.jp (192.168.0.212) 56(84) b...
64 bytes from atomcloud2.beatcraft.co.jp (192.168.0.212)...
64 bytes from atomcloud2.beatcraft.co.jp (192.168.0.212)...
64 bytes from atomcloud2.beatcraft.co.jp (192.168.0.212)...
:Note|ping実行時にlocalhost.localdomainで応答がある場合、...
** sshdの設定 [#ad0ea5ad]
Hadoopの完全分散モードでのマシン同士の通信はsshを用いて行...
# vi /etc/ssh/sshd_config
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
設定完了後sshdを再起動します。~
# /etc/init.d/sshd restart
** ntpの設定 [#l6d47b36]
時刻を確認し日本ntpサーバと時刻あわせをします。またその情...
# date
# ntpdate -s ntp.nict.jp
# clock -w
ntp/step-tickersに以下の3つの国内ntpサーバを追加します。~
# vi /etc/ntp/step-tickers
ntp.nict.jp
ntp.jst.mfeed.ad.jp
ntp.ring.gr.jp
完了後ntpを再起動し、時刻の確認をします。~
# /etc/init.d/ntpd restart
# date
:Note|標準インストールで日本時間を選んでも正しい時刻を取...
** 環境変数設定 [#q9bfcb32]
予めJAVA_HOME,HADOOP_HOME、hadoopへのPATH、/sbinと/usr/sb...
# cat /etc/bashrc | tail -n 5 -f
# vim:ts=4:sw=4
export JAVA_HOME=/usr/java/latest
export HADOOP_HOME=/usr/lib/hadoop
export PATH=/sbin:/usr/sbin:$HADOOP_HOME/bin:$PATH
設定完了後、環境変数設定を再度読み込みます。
# source /etc/bashrc
:Note|JAVAの実行時およびHadooのサービス起動時および実行時...
~
** 不要なサービスの停止 [#ld524810]
- runlevel~
runlevelはデフォルトで5(GUI起動)に設定しています。
- サービス~
使用しないサービスを停止します。以下chkconfigコマンドで登...
# chkconfig --list
NetworkManager 0:off 1:off 2:off 3:off 4:off ...
acpid 0:off 1:off 2:on 3:on 4:on ...
...<略>
- sendmail~
この手順ではsendmailは使用しないのでsendmailの停止とサー...
# /etc/init.d/sendmail stop
sm-client を停止中: [ OK ]
sendmail を停止中: [ OK ]
# chkconfig sendmail off
# chkconfig --list | grep sendmail
sendmail 0:off 1:off 2:off 3:off 4:off ...
**JDKのインストール [#l36907f3]
以下のサイトから最新のJDK-64bit版 (jdk-6u24-linux-x64-rpm...
http://www.oracle.com/technetwork/java/javase/downloads/i...
# cd /home/beat/
# ls
Desktop jdk-6u24-linux-x64-rpm.bin
# chmod u+x jdk-6u24-linux-x64-rpm.bin
# ./jdk-6u24-linux-x64-rpm.bin
# ls -l /usr/java/
合計 4
lrwxrwxrwx 1 root root 16 3月 22 20:30 default -> /usr/j...
drwxr-xr-x 9 root root 4096 3月 22 20:30 jdk1.6.0_24
lrwxrwxrwx 1 root root 21 3月 22 20:30 latest -> /usr/ja...
上記で設定したJAVA_HOMEとディレクトリ位置があっているかを...
以上でCentOS上での基本的な設定は完了です。
** CentOS-5.5-x86_64設定の制限事項 [#idc0d456]
- 今回のテストでは意識してセキュリティに関する事象を除外...
~
* CDH3beta4のリポジトリ追加 [#n16b2d43]
CDH3beta4のHadoopバージョンは0.20.2です。またCDH2およびst...
~
CDH3beta4に含まれるHadoopをインストールするためCDH3beta4...
# vi /etc/yum.repos.d/cloudera-cdh3.repo
[cloudera-cdh3]
name=Cloudera's Distribution for Hadoop, Version 3
mirrorlist=http://archive.cloudera.com/redhat/cdh/3/mirr...
gpgkey = http://archive.cloudera.com/redhat/cdh/RPM-GPG-...
gpgcheck = 0
追加したリポジトリを含めるようyumの更新をします。~
# yum update yum
:Note|2011年4月14日にCDH3がリリースされました。詳細につい...
~
* Hadoopのインストール [#kab7f5a2]
先ほど更新したyumを使用しHadoop(hadoop-0.20)をインスト...
# yum search hadoop-
...<略>
============================================ Matched: ha...
hadoop-0.20.noarch : Hadoop is a software platform for p...
hadoop-0.20-conf-pseudo.noa
...<略>
# yum install hadoop-0.20 -y
** 主要コンポーネントのインストール [#fbecc104]
yum searchコマンドを使って、Hadoop-0.20.2に対応する主要コ...
|名称|HDFS or MapReduce|Master or Slave|概略|h
|hadoop-0.20-namenode|HDFS|Master|DataNode上の情報をメタ...
|hadoop-0.20-datanode|HDFS|Slave|実データの保存、Namenode...
|hadoop-0.20-secondarynamenode|HDFS|Master|障害対策の1つ...
|hadoop-0.20-jobtracker|MapReduce|Master|jobの受付、処理...
|hadoop-0.20-tasktracker|MapReduce|Slave|JobTrackerから割...
~
# yum install hadoop-0.20-namenode hadoop-0.20-datanode
hadoop-0.20-secondarynamenode hadoop-0.20-jobtracker
hadoop-0.20-tasktracker -y
注:文書では改行していますが、実コマンドはyumから-yまで1...
:Note|本手順ではsecondarynamenodeのインストールはしていま...
~
Hadoopインストール完了後、mapred,hdfsユーザが追加されてい...
# cat /etc/passwd
<略>
beat:x:500:500:xxxxx:/home/beat:/bin/bash
mapred:x:101:107:Hadoop MapReduce:/usr/lib/hadoop-0.20:/...
hdfs:x:102:106:Hadoop HDFS:/usr/lib/hadoop-0.20:/bin/bash
:Note|事前にhadoopユーザを作成していた場合CDH3beta4ではha...
~
*** その他のコンポーネント [#g3d60327]
本手順では使用しませんが、設定参考のため擬似分散モード用...
# yum install hadoop-0.20-conf-pseudo -y
また端末上でのブラウジングのためテキストブラウザをインス...
# yum install w3m -y
その他CDH3 beta4から入手できるコンポーネントとインストー...
|コンポーネント名|パッケージ名|概略|参照URL|h
|Flume|Flume|データローディングインフラ|http://archive.cl...
|Sqoop|Sqoop|MySQLからHadoopへのデータインポートツール|ht...
|Hue|Hue|Hadoop User Experience(HadoopのUI)|http://archiv...
|Pig|hadoop-pig|データセットを探索するための対話的インタ...
|Hive|hadoop-hive|SQLライクな言語|http://hive.apache.org/|
|HBase|hadoop-hbase|Bigtable Storage System。HDFSとは逆に...
|ZooKeeper|hadoop-zookeeper|設定情報、名前付けなどの設定...
|Oozie server|Oozie|ワークフローエンジン|http://archive.c...
|Oozie client|oozie-client|ワークフローエンジン|http://ar...
|Whirr|Whirr|AmazonEC2のようなクラウドとの連携API|http://...
~
* Hadoopの設定 [#j1377439]
Hadoopのモードは完全分散モード(クラスタ)設定を使用しま...
~
** hadoop-0.20-conf.bc_clusterの設定 [#i10a8f15]
完全分散モードに必要な設定ディレクトリをconf.bc_clusterと...
# cp -r /etc/hadoop-0.20/conf.empty hadoop-0.20/conf.bc_...
:Note|conf.emptyは設定が記載されていないテンプレートです...
- core-site.xml ~
core-site.xmlにはHadoopの共通設定を記載します。hadoop.tmp...
# cat /etc/hadoop-0.20/conf.bc_cluster/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl...
<!-- Put site-specific property overrides in this file. ...
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://atomcloud2:8020</value>
<description>The name and URI of the default FS.</de...
</property>
</configuration>
~
- hdfs-site.xml ~
hdfs-site.xmlにはHDFSに関する設定を記載します。ここではdf...
# cat /etc/hadoop-0.20/conf.bc_cluster/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl...
<!-- Put site-specific property overrides in this file. ...
<configuration>
<property>
<name>dfs.name.dir</name>
<value>${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>${hadoop.tmp.dir}/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
:Note|replicationは実データを複製する数です。Slaveが1台の...
~
- mapred-site.xml ~
mapred-site.xmlはMapReduceに関する設定を記載しています。m...
ポート番号は変更する必要はありません。~
# cat /etc/hadoop-0.20/conf.bc_cluster/mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl...
<!-- Put site-specific property overrides in this file. ...
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>atomcloud2:8021</value>
</property>
</configuration>
:Note|core-site.xml、hdfs-site.xml、mapred-site.xmlの詳細...
~
- masters ~
mastersにはMasterの役割をもつホスト名を明記します。本手順...
# cat /etc/hadoop-0.20/conf.mycluster/masters
atomcloud2
- slaves ~
slavesにはSlaveの役割をもつホスト名を明記します。本手順で...
# cat /etc/hadoop/conf.bc_cluster/slaves
atomcloud1
atomcloud3
...<略>
atomcloud8
** hadoo-0.20-confの設定 [#r3045818]
hadoo-0.20-confの優先順位設定は/usr/sbin/alternativesを使...
:Note| 使用法は『 alternatives --install <リンク> <名前> ...
hadoop-0.20-confの現在の設定の確認をします。~
# alternatives --display hadoop-0.20-conf
hadoop-0.20-conf -ステータスは自動です。
リンクは現在 /etc/hadoop-0.20/conf.pseudo を指しています。
/etc/hadoop-0.20/conf.empty - 優先項目 10
/etc/hadoop-0.20/conf.pseudo - 優先項目 30
現在の「最適」バージョンは /etc/hadoop-0.20/conf.pseudo ...
hadoop-0.20-confの優先度を変更します。conf.bc_clusterに優...
# alternatives --install /etc/hadoop-0.20/conf hadoop-0....
/etc/hadoop/conf.bc_cluster 60
注:上記コマンドには改行が含まれていますが1行で実行しま...
# alternatives --display hadoop-0.20-conf
hadoop-0.20-conf -ステータスは自動です。
リンクは現在 /etc/hadoop/conf.bc_cluster を指しています。
/etc/hadoop-0.20/conf.empty - 優先項目 10
/etc/hadoop-0.20/conf.pseudo - 優先項目 30
/etc/hadoop/conf.bc_cluster - 優先項目 60
現在の「最適」バージョンは /etc/hadoop/conf.bc_cluster ...
これでhadoop-0.20-confに/etc/hadoop/conf.bc_clusterを反映...
** /hadoopディレクトリ [#a37f64f5]
hadoopディレクトリを作成し、HDFS、MapReduceが動作する状態...
~
core-site.xmlのhadoop.tmp.dirの設定で/hadoopを指定してい...
# mkdir /hadoop
# mkdir /hadoop/dfs
# mkdir /hadoop/mapred
# chown -R hdfs:hadoop /hadoop/dfs/
# chown -R mapred:hadoop /hadoop/mapred/
# ls -l /hadoop/
合計 8
drwxr-xr-x 3 hdfs hadoop 4096 3月 31 09:44 dfs
drwxr-xr-x 3 mapred hadoop 4096 3月 31 09:44 mapred
:Note|namenode、jobtrackerの起動時に所有者に対するエラー...
~
~
* 完全分散モードでの起動・停止 [#q7883122]
** Hadoopの各ノードの停止 [#b88c15b6]
Hadoopの各ノードの起動する前に必要のないHadoopの各サービ...
# for service in /etc/init.d/hadoop-0.20-*; do $service ...
** hdfsのフォーマット [#w4b811b9]
Master、Slaveともにhdfsのフォーマットをhdfsユーザで実行し...
# sudo -u hdfs hadoop-0.20 namenode -format
11/03/30 22:26:16 INFO namenode.NameNode: STARTUP_MSG:
/*******************************************************...
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = atomcloud2/192.168.0.212
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 0.20.2-CDH3B4
<略>
11/03/30 22:26:19 INFO common.Storage: Storage directory...
11/03/30 22:26:19 INFO namenode.NameNode: SHUTDOWN_MSG:
/*******************************************************...
SHUTDOWN_MSG: Shutting down NameNode at atomcloud2/192.1...
********************************************************...
** 各ノードの起動と停止 [#c28e99d7]
各ノードの起動順は大きくHDFS->MapReduceの順で起動します。...
Master(namenode)->Slave(datanode)->Master(jobtracker)->S...
Master(atomcloud2)のnamenode起動後に各Slave(atomcloud1、3...
~
Slaveのdatanode起動後、Masternにて/mapred/systemを作成し...
- 各ノードの起動順~
- Masster :namenodeを以下のコマンドで起動します。~
# /etc/init.d/hadoop-0.20-namenode start
- 各Slave :datanodeを以下のコマンドで起動します。~
# /etc/init.d/hadoop-0.20-datanode start
- Master :hdfsユーザに切り替えて/mapred/systemの作成しま...
# hadoop-0.20 fs -mkdir /mapred/system
# su hdfs
% hadoop-0.20 fs -chown -R mapred:supergroup /mapred
:Note|hdfsユーザで/mapred/systemをhdfs上に作成しないとrep...
~
- Master :jobtrackerを以下のコマンドで起動します。~
# /etc/init.d/hadoop-0.20-jobtracker start
- 各slave :tasktrackerを以下のコマンドで起動します。~
# /etc/init.d/hadoop-0.20-tasktracker start
- 各ノードの停止順~
- Masterのノードをを以下のコマンドで停止します。~
# /etc/init.d/hadoop-0.20-jobtracker stop
# /etc/init.d/hadoop-0.20-namenode stop
- 各Slaveのノードを以下のコマンドで停止します。~
# /etc/init.d/hadoop-0.20-tasktracker stop
# /etc/init.d/hadoop-0.20-datanode stop
各ノードが起動するとNameNodeとMap/Reduce Administrationの...
NameNode:http://atomcloud2:50070
Map/Reduce Administration:http://atomcloud2:50030
- NameNodeのスクリーンショット~
#ref(namenode.jpg,,40%);~
~
- Map/Reduce Administrationのスクリーンショット~
#ref(mapreduce.jpg,,40%);~
~
* Examples and Test [#f377b761]
HadoopにはHDFS、Map/Reduceの動作確認用のExamplesとHadoop...
のサンプルが含まれています。以下のコマンドを実行するとよ...
- Examples~
# hadoop jar /usr/lib/hadoop-0.20/hadoop-0.20.2-CDH3B4-e...
An example program must be given as the first argument.
...<略>
pi: A map/reduce program that estimates Pi using monte-...
randomtextwriter: A map/reduce program that writes 10GB...
...<略>
- Test~
# hadoop jar /usr/lib/hadoop-0.20/hadoop-0.20.2-CDH3B4-t...
An example program must be given as the first argument.
Valid program names are:
DFSCIOTest: Distributed i/o benchmark of libhdfs.
DistributedFSCheck: Distributed checkup of the file sys...
MRReliabilityTest: A program that tests the reliability...
TestDFSIO: Distributed i/o benchmark.
...<略>
ここではExamplesのpiとTestに含まれるTestDFSIOのwrite、rea...
- piの実行例~
hadoop jar /usr/lib/hadoop-0.20/hadoop-examples-0.20.2-C...
Number of Maps = 10
Samples per Map = 1000
Wrote input for Map #0
...<略>
11/04/11 19:29:39 INFO mapred.FileInputFormat: Total inp...
11/04/11 19:29:40 INFO mapred.JobClient: Running job: jo...
11/04/11 19:29:41 INFO mapred.JobClient: map 0% reduce 0%
...<略>
11/04/11 19:30:09 INFO mapred.JobClient: Reduce inpu...
Job Finished in 30.142 seconds
Estimated value of Pi is 3.14080000000000000000
- TestDFSIO~
write、read、cleanを一度でテストするために以下のようなス...
#!/bin/sh
echo "--- Nr:10 FS:10M(10*10MB:100MB)---" > TestDFSIO_re...
hadoop jar /usr/lib/hadoop-0.20/hadoop-test-0.20.2-CDH3B...
sleep 1
hadoop jar /usr/lib/hadoop-0.20/hadoop-test-0.20.2-CDH3B...
sleep 1
echo "---- clean ----" >> TestDFSIO_results.log
hadoop jar /usr/lib/hadoop-0.20/hadoop-test-0.20.2-CDH3B...
echo "---- clean ----" >> TestDFSIO_results.log
TestDFSIO_results.logは以下のように出力されます。
--- Nr:10 FS:10M(10*10MB:100MB)---
----- TestDFSIO ----- : write
Date & time: Sun Apr 10 22:57:02 JST 2011
Number of files: 10
Total MBytes processed: 10
Throughput mb/sec: 2.1867483052700636
Average IO rate mb/sec: 2.351172685623169
IO rate std deviation: 0.661258472040145
Test exec time sec: 29.263
----- TestDFSIO ----- : read
Date & time: Sun Apr 10 22:57:36 JST 2011
Number of files: 10
Total MBytes processed: 10
Throughput mb/sec: 4.050222762251924
Average IO rate mb/sec: 4.336997032165527
IO rate std deviation: 1.0029312896197553
Test exec time sec: 29.292
---- clean ----
TestDFSIO.0.0.4
11/04/10 22:57:40 INFO fs.TestDFSIO: nrFiles = 1
11/04/10 22:57:40 INFO fs.TestDFSIO: fileSize (MB) = 1
11/04/10 22:57:40 INFO fs.TestDFSIO: bufferSize = 1000000
11/04/10 22:57:41 INFO fs.TestDFSIO: Cleaning up test fi...
---- clean ----
以上で、完全分散モードの動作確認は完了です。以下のGanglia...
* Gangliaの設定 [#cd694ea3]
HDFS、Map/Reduce AdministrationにWebUIがありますが、クラ...
** Gangliaのインストール [#n71639df]
atomcloud2でrpmforge(サードパーティリポジトリ)からx86_6...
# wget http://packages.sw.be/rpmforge-release/rpmforge-r...
# rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
GangliaのDownload頁からganglia monitor coreの最新版3.17を...
# wget http://sourceforge.net/projects/ganglia/files/gan...
ダウンロード後rpmパッケージ化するためにrpmbuildを行うと以...
# rpmbuild -tb --target noarch,x86_64 ganglia-3.1.7.tar.gz
ビルド対象プラットフォーム: noarch,x86_64
ターゲット noarch 用にビルド中
エラー: ビルド依存性の失敗:
libconfuse-devel は ganglia-3.1.7-1.noarch に必...
pcre-devel は ganglia-3.1.7-1.noarch に必要とさ...
rrdtool-devel は ganglia-3.1.7-1.noarch に必要と...
apr-devel > 1 は ganglia-3.1.7-1.noarch に必要と...
表示されている必要な依存パッケージをインストールします。~
# yum install libconfuse-devel pcre-devel rrdtool-devel ...
再度rpmbuildを実行すると/usr/src/redhat/RPMS/以下にgangli...
# rpmbuild -tb --target noarch,x86_64 ganglia-3.1.7.tar.gz
# cd /usr/src/redhat/RPMS/x86_64/
# ls
ganglia-debuginfo-3.1.7-1.x86_64.rpm ganglia-gmetad-3.1...
ganglia-devel-3.1.7-1.x86_64.rpm ganglia-gmond-3.1....
# ls ../noarch/
ganglia-web-3.1.7-1.noarch.rpm
Gangliaのインストール先のMaster(atomcloud2)とSlave(atomcl...
~
またMonitor(atomcloud2)にはganglia-gmetad-3.1.7-1.x86_64....
~
また、atomcloud2以外のマシンではrpmforgeがインストールさ...
- Master(atomclod2)~
# yum install libconfuse -y
# rpm -ivh libganglia-3_1_0-3.1.7-1.x86_64.rpm
# rpm -ivh ganglia-gmond-3.1.7-1.x86_64.rpm
- Slave(atomcloud1、atomcloud3〜8)~
# wget http://packages.sw.be/rpmforge-release/rpmforge-r...
# rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
# yum install libconfuse -y
# rpm -ivh libganglia-3_1_0-3.1.7-1.x86_64.rpm
# rpm -ivh ganglia-gmond-3.1.7-1.x86_64.rpm
- Monitor(atomcloud2)~
Monitorにはganglia-gmetad、ganglia-webgmetad、httpdとphp...
# rpm -ivh ganglia-gmetad-3.1.7-1.x86_64.rpm
# yum install php php-gd
# rpm -ivh ganglia-web-3.1.7-1.noarch.rpm
# cd /etc/ganglia/
# ls
conf.d gmetad.conf gmond.conf
** Master gmond.conf設定 [#td75a6c1]
Gangliaの設定ファイルgmond.confを記載します。clusterのnam...
# vi /etc/ganglia/gmond.conf
...<略>
cluster {
name = "Master Servers"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
...<略>
udp_send_channel {
bind_hostname = yes
#bind_hostname = yes # Highly recommended, soon to be ...
# This option tells gmond to use ...
# that resolves to the machine's ...
# this, the metrics may appear to...
# interface and the DNS names ass...
# those IPs will be used to creat...
mcast_join = 239.2.11.71
port = 8649
ttl = 1
}
/* You can specify as many udp_recv_channels as you like...
udp_recv_channel {
mcast_join = 239.2.11.71
port = 8649
bind = 239.2.11.71
}
** Slave gmond.conf設定 [#n6b1b82e]
Masterと同様にSlaveのgmond.confを以下のように記載します。...
# vi /etc/ganglia/gmond.conf
...<略>
cluster {
name = "Slave Servers"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
/* The host section describes attributes of the host, li...
host {
location = "unspecified"
}
/* Feel free to specify as many udp_send_channels as you...
used to only support having a single channel */
udp_send_channel {
bind_hostname = yes # Highly recommended, soon to be d...
# This option tells gmond to use ...
# that resolves to the machine's ...
# this, the metrics may appear to...
# interface and the DNS names ass...
# those IPs will be used to creat...
mcast_join = 239.2.11.72
port = 8649
ttl = 1
}
/* You can specify as many udp_recv_channels as you like...
udp_recv_channel {
mcast_join = 239.2.11.72
port = 8649
bind = 239.2.11.72
}
** Master、Slave のGangliaサービスの起動 [#w69f6c4d]
各マシンでGangliaサービスのgmondを起動します。~
# /etc/init.d/gmond start
** Monitor gmetad.conf設定 [#vccdeb04]
MonitorのGangliaの設定ファイルgmetad.confを以下に記載しま...
# vi /etc/ganglia/gmetad.conf
#data_source "my cluster" localhost
data_source "Master Servers" atomcloud2
data_source "Slave Servers" atomcloud1 atomcloud3 atomcl...
** MonitorのGangliaサービスの起動 [#n8cafbb5]
Monitorマシン上でhttpdのサービスを登録します。サービスレ...
# chkconfig --list | grep httpd
httpd 0:off 1:off 2:off 3:off 4:off ...
# chkconfig httpd on
# chkconfig --list | grep httpd
httpd 0:off 1:off 2:on 3:on 4:on ...
httpdとMonitorのGangliaサービスgmetadを起動します。~
# /etc/init.d/httpd start
# /etc/init.d/gmetad start
GanliaのWebUIをatomcloud2に設定していますので以下のURLで...
http://atomcloud2/ganglia/ ~
- Gangliaのスクリーンショット~
#ref(ganglia.jpg,,40%)~
以上でGangliaの設定は完了です。~
* 参考URL [#yf483e42]
- Hadoop による分散データ処理: 第 1 回 導入編
-- http://www.ibm.com/developerworks/jp/linux/library/l-h...
ページ名:
BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。