トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Hadoopをセットアップ のバックアップ(No.2)


Hadoopをセットアップ(疑似分散モード)

クリーンインストールしたCentOSにHadoopをセットアップし、疑似分散モードとして動作させるまでの記録です。

セットアップ対象環境は以下の通り。

CPUCore2 Duo 3G
メモリ3GB
HDD80G
OSCentOS5.4
JavaバージョンSun JDK 1.6u22
Hadoopバージョン0.20.2

大きく、手順は以下の通り。

まあ、こんな感じですわ。

javaのインストール(rootユーザ)

※この作業はrootユーザで実施します。

今回は、SunのJDK1.6u22を使いました。資材は普通にSunのサイトからDLし、インストール。

sshのパスワードなしログインの設定

※この作業はrootユーザで実施します。

sshをパスワードなしでログインするための設定をします。

編集対象のファイルは以下の通り。

  • /etc/ssh/sshd_config

以下の3行のコメントを外します。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

設定を変更したらsshdを再起動します。

service sshd restart

ちなみに、sshでログインにsshd再起動してもコネクションは切れないんだね~優秀笑

hadoopユーザ作成(rootユーザ)

※この作業もrootユーザで実施します。

まあ、単純にuseraddします。

useradd hadoop -p hadoop

造作もないですね。

hadoopユーザのssh認証鍵生成、配置(hadoopユーザ)

※この作業はhadoopユーザで実施します!

パスワードなしログイン用のRSA鍵の生成+公開鍵をauthorized_keysに流し込みます。

ssh-keygen -t rsa -P ""
cat .ssh/id_rsa.pub >> .ssh/authorized_keys

次に、生成された鍵ファイルの権限の確認します。

確認ポイントは以下の2点です。

  • .sshが700となっていること
  • 「.ssh/authorized_keys」が600となっていること

なってなかったら、さくっと権限変更してください。

chmod 600 authorized_keys

実は、小生ここではまりました笑

小生の環境では、hadoopユーザでオペレーションしたときに、「.ssh/authorized_keys」の権限が644になっていたため、NGでした。

sshのパスワードなしログインについては結構はまりどころみたいなので、参考にしたサイトのリンクを残します。

hadoopのファイルを配置、設定ファイルの変(hadoopユーザ)

まず、hadoopのバイナリをhadoopのサイトからDLします。

次に、好みの場所に展開します。

書生は

  • /opt

に展開しました。

して、展開後に、設定ファイルを編集します。

編集対象の設定ファイルは以下の4つです。それぞれ「/{hadoop-home}/conf」配下にあります。

  1. hadoop-env.sh
  2. core-site.xml
  3. hdfs-site.xml
  4. mapred-site.xml

それぞれの編集内容は以下の通り。

hadoop-env.sh

以下の3行を編集した。

export JAVA_HOME=/usr/java/latest/ ←インストールしたjavaのパスを指定
export HADOOP_HEAPSIZE=512 ← デフォルトでは1Gとなっているが、インストールするのがただのPCのため、512Mに変更
export HADOOP_OPTS=-server ← コメントアウトを外す。

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>fs.default.name</name>
    <value>hdfs://XXX.XXX.XXX.XXX:8020/</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/var/hadoop</value>
  </property>
</configuration>

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.replication</name>
    <value>1</value>
  </property>
</configuration>

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>10.68.225.115:8021</value>
  </property>
</configuration>

hdfsのフォーマット

設定が完了したら、hdfsをフォーマットします。

/{HADOOP_HOME}/bin/hadoop namenode -format

Hadoopの起動、停止、WEB管理ツール

起動、停止は以下のコマンドからできます。

起動
/{HADOOP_HOME}/bin/start-all.sh
停止
/{HADOOP_HOME}/bin/stop-all.sh

正常に起動した場合、以下のURLよりWEB管理ツールにアクセスできるはずです。

NameNode?
http://localhost:50070/
JobTracker?
http://localhost:50030/

動作確認

以下のコマンドを実行すると、hadoopに最初から入っているπを計算するサンプルプログラムを動作させることが出来ます。

cd /{HADOOP_HOME}
bin/hadoop jar hadoop-0.20.2-examples.jar pi 10 100000

以下のような出力が出れば成功!

Number of Maps  = 10
Samples per Map = 100000
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
10/12/03 11:44:17 INFO mapred.FileInputFormat: Total input paths to process : 10
10/12/03 11:44:17 INFO mapred.JobClient: Running job: job_201012031126_0001
10/12/03 11:44:18 INFO mapred.JobClient:  map 0% reduce 0%
10/12/03 11:44:25 INFO mapred.JobClient:  map 20% reduce 0%
10/12/03 11:44:28 INFO mapred.JobClient:  map 40% reduce 0%
10/12/03 11:44:31 INFO mapred.JobClient:  map 60% reduce 0%
10/12/03 11:44:35 INFO mapred.JobClient:  map 80% reduce 13%
10/12/03 11:44:38 INFO mapred.JobClient:  map 100% reduce 13%
10/12/03 11:44:47 INFO mapred.JobClient:  map 100% reduce 100%
10/12/03 11:44:49 INFO mapred.JobClient: Job complete: job_201012031126_0001
10/12/03 11:44:49 INFO mapred.JobClient: Counters: 18
10/12/03 11:44:49 INFO mapred.JobClient:   Job Counters 
10/12/03 11:44:49 INFO mapred.JobClient:     Launched reduce tasks=1
10/12/03 11:44:49 INFO mapred.JobClient:     Launched map tasks=10
10/12/03 11:44:49 INFO mapred.JobClient:     Data-local map tasks=10
10/12/03 11:44:49 INFO mapred.JobClient:   FileSystemCounters
10/12/03 11:44:49 INFO mapred.JobClient:     FILE_BYTES_READ=226
10/12/03 11:44:49 INFO mapred.JobClient:     HDFS_BYTES_READ=1180
10/12/03 11:44:49 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=826
10/12/03 11:44:49 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=215
10/12/03 11:44:49 INFO mapred.JobClient:   Map-Reduce Framework
10/12/03 11:44:49 INFO mapred.JobClient:     Reduce input groups=20
10/12/03 11:44:49 INFO mapred.JobClient:     Combine output records=0
10/12/03 11:44:49 INFO mapred.JobClient:     Map input records=10
10/12/03 11:44:49 INFO mapred.JobClient:     Reduce shuffle bytes=280
10/12/03 11:44:49 INFO mapred.JobClient:     Reduce output records=0
10/12/03 11:44:49 INFO mapred.JobClient:     Spilled Records=40
10/12/03 11:44:49 INFO mapred.JobClient:     Map output bytes=180
10/12/03 11:44:49 INFO mapred.JobClient:     Map input bytes=240
10/12/03 11:44:49 INFO mapred.JobClient:     Combine input records=0
10/12/03 11:44:49 INFO mapred.JobClient:     Map output records=20
10/12/03 11:44:49 INFO mapred.JobClient:     Reduce input records=20
Job Finished in 31.708 seconds
Estimated value of Pi is 3.14155200000000000000

あと、jobtrackerでもジョブの実行状態が見えるはずです。

JobTracker?
http://localhost:50030/

WS000001.PNG

WS000002.PNG