2010年7月23日金曜日

Hadoop (1) スタンドアロン


このエントリーをはてなブックマークに追加


前回構築したPXEネットワークインストール環境で4台のCentOSを立ち上げた。
バージョンは全て共通でCentOS5.5


ノード1:hdp01(GNOMEデスクトップ)
ノード2:hdp02(Server)
ノード3:hdp03(Server)
ノード4:hdp04(Server)
()内はインストール時に選択したインストールグループ

*全てSolaris10上のVirtualBox上に構築された仮想環境です。




インストール後に、全てのノードで、開発ツールとライブラリをインストールした。
# yum -y groupinstall Development*


まずhdp01にスタンドアロンモードのHadoopを構築してみる。

教科書はこちら。このHadoop特集は構造の解説から、実際の立ち上げまでをわかりやすく網羅しており、非常に役立ちます。


(1)java環境のインストール

Hadoopの実行に必要なものはJavaのみです。推奨はSun Javaという事なので、インストールしておきます。
http://java.sun.com/javase/ja/6/download.html



(2)Hadoopユーザの作成
# useradd hadoop
# passwd hadoop

インストール後、hadoopユーザでログインしなおし、環境変数のパスとJAVA_HOMEをSun Javaに設定しておきます。
-----------------------

PATH=/usr/java/default/bin:$PATH
JAVA_HOME=/usr/java/default

export PATH JAVA_HOME

-----------------------


[hadoop@hdp01 ~]$ java -version
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) Client VM (build 17.0-b16, mixed mode, sharing)

(3)sshキーの作成
Hadoopはノート間の通信にログイン認証無しのsshを必要とするので、事前にキーを作成しておく。


[hadoop@hdp01 ~]$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
Generating public/private dsa key pair.
Created directory '/home/hadoop/.ssh'.
Your identification has been saved in /home/hadoop/.ssh/id_dsa.
Your public key has been saved in /home/hadoop/.ssh/id_dsa.pub.
The key fingerprint is:
59:e6:64:eb:c9:ef:4f:b4:01:89:8a:19:fc:48:a2:af hadoop@hdp01
[hadoop@hdp01 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
[hadoop@hdp01 ~]$ chmod 700 ~/.ssh
[hadoop@hdp01 ~]$ chmod 611 ~/.ssh/authorized_keys
[hadoop@hdp01 ~]$ chmod 600 ~/.ssh/id_dsa




(4)Hadoopのインストール

取ってきて展開するだけ。

[hadoop@hdp01 ~]$ wget http://www.meisei-u.ac.jp/mirror/apache/dist/hadoop/core/hadoop-0.20.2/hadoop-0.20.2.tar.gz


[hadoop@hdp01 ~]$ pwd
/home/hadoop

[hadoop@hdp01 ~]$ tar zxvf hadoop-0.20.2.tar.gz



[hadoop@hdp01 ~]$ ll
合計 43584
drwxr-xr-x 12 hadoop hadoop     4096  2月 19 17:10 hadoop-0.20.2
-rw-rw-r--  1 hadoop hadoop 44575568  2月 19 17:28 hadoop-0.20.2.tar.gz


起動用ファイルにJAVAの環境変数を書いてやる。
[hadoop@hdp01 ~]$ vi hadoop-0.20.2/conf/hadoop-env.sh


# The java implementation to use.  Required.
export JAVA_HOME=/usr/java/default


(5)サンプルプログラムの実行


[hadoop@hdp01 ~]$ hadoop-0.20.2/bin/hadoop jar hadoop-0.20.2/hadoop-0.20.2-examples.jar pi 1 1000
Number of Maps  = 1
Samples per Map = 1000
Wrote input for Map #0
Starting Job
10/07/23 22:31:34 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
10/07/23 22:31:34 INFO mapred.FileInputFormat: Total input paths to process : 1
10/07/23 22:31:34 INFO mapred.JobClient: Running job: job_local_0001
10/07/23 22:31:34 INFO mapred.FileInputFormat: Total input paths to process : 1
10/07/23 22:31:35 INFO mapred.MapTask: numReduceTasks: 1
10/07/23 22:31:35 INFO mapred.MapTask: io.sort.mb = 100
10/07/23 22:31:35 INFO mapred.MapTask: data buffer = 79691776/99614720
10/07/23 22:31:35 INFO mapred.MapTask: record buffer = 262144/327680
10/07/23 22:31:35 INFO mapred.MapTask: Starting flush of map output
10/07/23 22:31:35 INFO mapred.MapTask: Finished spill 0
10/07/23 22:31:35 INFO mapred.TaskRunner: Task:attempt_local_0001_m_000000_0 is done. And is in the process of commiting
10/07/23 22:31:35 INFO mapred.LocalJobRunner: Generated 1000 samples.
10/07/23 22:31:35 INFO mapred.TaskRunner: Task 'attempt_local_0001_m_000000_0' done.
10/07/23 22:31:35 INFO mapred.LocalJobRunner:
10/07/23 22:31:35 INFO mapred.Merger: Merging 1 sorted segments
10/07/23 22:31:35 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 24 bytes
10/07/23 22:31:35 INFO mapred.LocalJobRunner:
10/07/23 22:31:35 INFO mapred.TaskRunner: Task:attempt_local_0001_r_000000_0 is done. And is in the process of commiting
10/07/23 22:31:35 INFO mapred.LocalJobRunner:
10/07/23 22:31:35 INFO mapred.TaskRunner: Task attempt_local_0001_r_000000_0 is allowed to commit now
10/07/23 22:31:35 INFO mapred.FileOutputCommitter: Saved output of task 'attempt_local_0001_r_000000_0' to file:/home/hadoop/PiEstimator_TMP_3_141592654/out
10/07/23 22:31:35 INFO mapred.LocalJobRunner: reduce > reduce
10/07/23 22:31:35 INFO mapred.TaskRunner: Task 'attempt_local_0001_r_000000_0' done.
10/07/23 22:31:35 INFO mapred.JobClient:  map 100% reduce 100%
10/07/23 22:31:35 INFO mapred.JobClient: Job complete: job_local_0001
10/07/23 22:31:35 INFO mapred.JobClient: Counters: 13
10/07/23 22:31:35 INFO mapred.JobClient:   FileSystemCounters
10/07/23 22:31:35 INFO mapred.JobClient:     FILE_BYTES_READ=311962
10/07/23 22:31:35 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=341823
10/07/23 22:31:35 INFO mapred.JobClient:   Map-Reduce Framework
10/07/23 22:31:35 INFO mapred.JobClient:     Reduce input groups=2
10/07/23 22:31:35 INFO mapred.JobClient:     Combine output records=0
10/07/23 22:31:35 INFO mapred.JobClient:     Map input records=1
10/07/23 22:31:35 INFO mapred.JobClient:     Reduce shuffle bytes=0
10/07/23 22:31:35 INFO mapred.JobClient:     Reduce output records=0
10/07/23 22:31:35 INFO mapred.JobClient:     Spilled Records=4
10/07/23 22:31:35 INFO mapred.JobClient:     Map output bytes=18
10/07/23 22:31:35 INFO mapred.JobClient:     Map input bytes=24
10/07/23 22:31:35 INFO mapred.JobClient:     Combine input records=0
10/07/23 22:31:35 INFO mapred.JobClient:     Map output records=2
10/07/23 22:31:35 INFO mapred.JobClient:     Reduce input records=2
Job Finished in 1.543 seconds
Estimated value of Pi is 3.14800000000000000000

なんかよくわからないけど動いたからOKらしい。
----------------------------------------

追記、Solarisのzoneでも問題なく動いた(javaだから当たり前か・・・




0 件のコメント:

コメントを投稿