詳しくは、
Googleライクなオープンソースインフラストラクチャ「Hadoopプロジェクト」が弾みをつける
本家
http://hadoop.apache.org/core/
・・・遊んでみよう!
=============================
インストール&設定
Hadoop構成:
server1 : JobTracker + NameNode
server2 : SecondaryNameNode
server3 : TaskTracker + DataNode
server4 : TaskTracker + DataNode
環境:
Java
/usr/local/java
実行ユーザ: hadoop
Hadoopインストールルートディレクトリー
・・・ http://hadoop.apache.org/core/ よりダウンロード(Ver 0.16.1)
/home/hadoop/hadoop
Hadoopファイルシステム
/home/hadoop/filesystem
各サーバ間でSSH接続が出来る事。
環境構築:
server1 で パスフレーズなしのキーペアを作成。
% ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
生成されたid_dsaファイルを名前を変えてserver2 からserver4へコピー
コピー先:/home/hadoop/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys ←パーミッションを変更
設定ファイル:
ファイル:/home/hadoop/hadoop/conf/hadoop-env.sh
内容:JAVA_HOMEを設定
export JAVA_HOME=/usr/local/java
設定ファイル:
ファイル:/home/hadoop/hadoop/conf/hadoop-site.xml
内容: sever1,2,3,4共通
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>server1:9000</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>server1:9001</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/filesystem/dfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/filesystem/dfs/data</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/home/hadoop/filesystem/mapred/system</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/filesystem/mapred/local</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
ファイル:/home/hadoop/hadoop/conf/masters
内容: server1のみ
server2
ファイル:/home/hadoop/hadoop/conf/slaves
内容: server1のみ
server3
server4
ファイルシステムを構築:
#server1 上で実行
$ cd /home/hadoop/hadoop
$ bin/hadoop namenode -format
※ /home/hadoop/filesystem 配下にHadoopのファイルシステムが構築
起動:
#server1 上で起動させる。
$ cd /home/hadoop/hadoop
$ ./bin/start-all.sh (停止は、stop-all.sh)
各サーバ上で確認(Javaのjpsコマンドで確認。jps自体も表示されるが省略)
server1 :
% jps
7808 NameNode
7942 JobTracker
server2 :
% jps
8255 SecondaryNameNode
server3,4
4328 DataNode
4414 TaskTracker
=============================
ファイルを格納:
例としてインストールした hadoopを格納(hadoop_putという名前で格納)
$ cd /home/hadoop
$ ./hadoop/bin/hadoop dfs -put hadoop hadoop_put
確認
$ ./hadoop/bin/hadoop dfs -ls
Found 1 items
/user/hadoop/hadoop_put <dir> 2008-03-25 17:47
取り出し(hadoop_getという名前で取り出し)
$ ./hadoop/bin/hadoop dfs -put hadoop_put hadoop_get
ファイルシステム(NameNode )の状況を確認:
WEBブラウザより確認(server1のポート50070 へアクセス)
http://server1:50070
=============================
Jobを投入:
例1:Sudoku (サンプルデータ:puzzle1.dta を解析)
$ cd /home/hadoop/hadoop
$ ./bin/hadoop jar hadoop-0.16.1-examples.jar sudoku src/examples/org/apache/hadoop/examples/dancing/puzzle1.dta8 5 1 3 9 2 6 4 7
4 3 2 6 7 8 1 9 5
7 9 6 5 1 4 3 8 2
6 1 4 8 2 3 7 5 9
5 7 8 9 6 1 4 2 3
3 2 9 4 5 7 8 1 6
9 4 7 2 8 6 5 3 1
1 8 5 7 3 9 2 6 4
2 6 3 1 4 5 9 7 8例2:円周率
$ cd /home/hadoop/hadoop
$ ./bin/hadoop jar hadoop-0.16.1-examples.jar pi 10 10000Number of Maps = 10 Samples per Map = 10000
Wrote input for Map #0
Wrote input for Map #1
Wrote input for Map #2
Wrote input for Map #3
Wrote input for Map #4
Wrote input for Map #5
Wrote input for Map #6
Wrote input for Map #7
Wrote input for Map #8
Wrote input for Map #9
Starting Job
08/03/25 20:09:45 INFO mapred.FileInputFormat: Total input paths to process : 10
08/03/25 20:09:46 INFO mapred.JobClient: Running job: job_200803251837_0002
08/03/25 20:09:47 INFO mapred.JobClient: map 0% reduce 0%
08/03/25 20:09:50 INFO mapred.JobClient: map 20% reduce 0%
08/03/25 20:09:52 INFO mapred.JobClient: map 60% reduce 0%
08/03/25 20:09:53 INFO mapred.JobClient: map 80% reduce 0%
08/03/25 20:09:54 INFO mapred.JobClient: map 100% reduce 0%
08/03/25 20:10:01 INFO mapred.JobClient: map 100% reduce 100%
08/03/25 20:10:02 INFO mapred.JobClient: Job complete: job_200803251837_0002
08/03/25 20:10:02 INFO mapred.JobClient: Counters: 9
08/03/25 20:10:02 INFO mapred.JobClient: Job Counters
08/03/25 20:10:02 INFO mapred.JobClient: Launched map tasks=10
08/03/25 20:10:02 INFO mapred.JobClient: Launched reduce tasks=1
08/03/25 20:10:02 INFO mapred.JobClient: Data-local map tasks=7
08/03/25 20:10:02 INFO mapred.JobClient: Map-Reduce Framework
08/03/25 20:10:02 INFO mapred.JobClient: Map input records=10
08/03/25 20:10:02 INFO mapred.JobClient: Map output records=20
08/03/25 20:10:02 INFO mapred.JobClient: Map input bytes=240
08/03/25 20:10:02 INFO mapred.JobClient: Map output bytes=320
08/03/25 20:10:02 INFO mapred.JobClient: Reduce input groups=2
08/03/25 20:10:02 INFO mapred.JobClient: Reduce input records=20
Job Finished in 16.432 seconds
Estimated value of PI is 3.14412
Map/Reduce(JobTracker )の状況を確認:
WEBブラウザより確認(server1のポート50030 へアクセス)
http://server1:50030
前例の円周率は時間がかかるので、この間管理画面より状態が解る。