今回は、前回までに vSphere Big Data Extensions(BDE)で作成した

Hadoop 環境を、もう少し見てみようと思います。

そして、かるく WordCount してみます。


これまでの流れは・・・

vSphere で Hadoop してみる。(Big Data Extentions) 第1回

vSphere で Hadoop してみる。BDE 第2回

vSphere で Hadoop してみる。BDE 第3回

vSphere で Hadoop してみる。BDE 第4回


BDE で構築した Hadoop 環境について


Client ノードとして作成された VM に SSH でログインして確認してみます。

※Client 以外の、マスタ / スレーブ ノードも同様の構成になります。

bde-trywc-01.png

 

Hadoop クラスタに作成されたノードは、

CentOS 6.4 64bit です。

[root@192 ~]# cat /etc/centos-release

CentOS release 6.4 (Final)

[root@192 ~]# uname -r

2.6.32-358.el6.x86_64

 

IP アドレスが、そのままホスト名になっています。

[root@192 ~]# uname -n

192.168.5.124

 

Java は、Oracle (Sun)の HotSpot 1.7.0_51 でした。

[root@192 ~]# /usr/java/default/bin/java -version

java version "1.7.0_51"

Java(TM) SE Runtime Environment (build 1.7.0_51-b13)

Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

 

Apache Hadoop のバージョンは、1.2.1 です。

[root@192 ~]# hadoop version

Hadoop 1.2.1

Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152

Compiled by mattf on Mon Jul 22 15:23:09 PDT 2013

From source with checksum 6923c86528809c4e7e6f493b6b413a9a

This command was run using /usr/lib/hadoop-1.2.1/hadoop-core-1.2.1.jar

 

HDFS のマスターノード(NameNode)と

MapReduce のマスターノード(JobTracker)が

自動的に設定ファイルに記載されています。

※今回の IP アドレスは、DHCP で設定されたものです。

[root@192 ~]# grep -A1 "fs.default.name" /etc/hadoop/conf/core-site.xml

  <name>fs.default.name</name>

  <value>hdfs://192.168.5.128:8020</value>

[root@192 ~]# grep -A1 "mapred.job.tracker<" /etc/hadoop/conf/mapred-site.xml

  <name>mapred.job.tracker</name>

  <value>192.168.5.125:8021</value>

 

HDFS の操作をしてみる。

 

Client ノードから NameNode の URL を指定して HDFS を見てみます。

[root@192 ~]# hadoop fs -fs hdfs://192.168.5.128:8020 -ls /

Found 3 items

drwxrwxr-x   - hdfs hadoop          0 2014-09-17 23:11 /hadoop

drwxrwxrwx   - hdfs hadoop          0 2014-09-17 23:14 /tmp

drwxrwxrwx   - hdfs hadoop          0 2014-09-17 23:12 /user

[root@192 ~]# hadoop fs -fs hdfs://192.168.5.128:8020 -ls /tmp

Found 2 items

drwxrwxrwx   - hdfs hadoop          0 2014-09-17 23:14 /tmp/hadoop-mapred

drwxrwxrwx   - hdfs hadoop          0 2014-09-17 23:13 /tmp/hadoop-yarn

 

デフォルトの NameNode が設定してあるので、「-fs hdfs://~」は

省略しても HDFS にアクセスできます。

※ついでに HDFS にディレクトリを作成しています。

[root@192 ~]# hadoop fs -ls /tmp

Found 2 items

drwxrwxrwx   - hdfs hadoop          0 2014-09-17 23:14 /tmp/hadoop-mapred

drwxrwxrwx   - hdfs hadoop          0 2014-09-17 23:13 /tmp/hadoop-yarn

[root@192 ~]# hadoop fs -mkdir /tmp/test

[root@192 ~]# hadoop fs -mkdir /tmp/test/input

[root@192 ~]# hadoop fs -chmod -R 777 /tmp/test

[root@192 ~]# hadoop fs -lsr /tmp/test

drwxrwxrwx   - root hadoop          0 2014-09-21 23:22 /tmp/test/input

 

MapReduce ジョブ(サンプルの WordCount)を実行してみようと思うので、

HDFS にファイルをアップロードしておきます。

今回は、hadoop コマンドのヘルプを WordCount してみます。

[root@192 ~]# hadoop help > sample.txt

[root@192 ~]# head sample.txt

Usage: hadoop [--config confdir] COMMAND

where COMMAND is one of:

  namenode -format     format the DFS filesystem

  secondarynamenode    run the DFS secondary namenode

  namenode             run the DFS namenode

  datanode             run a DFS datanode

  dfsadmin             run a DFS admin client

  mradmin              run a Map-Reduce admin client

  fsck                 run a DFS filesystem checking utility

  fs                   run a generic filesystem user client

[root@192 ~]# hadoop fs -put ./sample.txt /tmp/test/input/

[root@192 ~]# hadoop fs -ls /tmp/test/input

Found 1 items

-rw-r--r--   3 root hadoop       1567 2014-09-21 23:37 /tmp/test/input/sample.txt

 

ちなみに、Web Client の BDE プラグインから、

おなじみの HDFS ステータス確認のページを表示することができます。

クラスタを右クリックして 「Open HDFS Status Page」をクリックすると・・・

bde-trywc-02.png

 

Web ブラウザで HDFS の NameNode のページが開きます。

bde-trywc-03.png

 

MapReduce ジョブの実行

 

サンプルアプリケーションの WordCount を実行してみます。

Client ノードに配置されている、

hadoop-examples-1.2.1.jar を使用します。

[root@192 ~]# ls -l /usr/lib/hadoop-1.2.1/hadoop-examples-1.2.1.jar

-rw-rw-r-- 1 hdfs hadoop 142726 Jul 22  2013 /usr/lib/hadoop-1.2.1/hadoop-examples-1.2.1.jar

 

それでは、MapResuce してみます。

先ほど、HDFS にアップロードした hadoop コマンドのヘルプを WordCount してみます。

[root@192 ~]# hadoop jar /usr/lib/hadoop-1.2.1/hadoop-examples-1.2.1.jar wordcount /tmp/test/input /tmp/test/output

14/09/21 23:38:47 INFO input.FileInputFormat: Total input paths to process : 1

14/09/21 23:38:47 INFO util.NativeCodeLoader: Loaded the native-hadoop library

14/09/21 23:38:47 WARN snappy.LoadSnappy: Snappy native library not loaded

14/09/21 23:38:49 INFO mapred.JobClient: Running job: job_201409172315_0006

14/09/21 23:38:50 INFO mapred.JobClient:  map 0% reduce 0%

14/09/21 23:39:27 INFO mapred.JobClient:  map 100% reduce 0%

14/09/21 23:39:49 INFO mapred.JobClient:  map 100% reduce 100%

14/09/21 23:39:50 INFO mapred.JobClient: Job complete: job_201409172315_0006

14/09/21 23:39:50 INFO mapred.JobClient: Counters: 29

14/09/21 23:39:50 INFO mapred.JobClient:   Job Counters

14/09/21 23:39:50 INFO mapred.JobClient:     Launched reduce tasks=1

14/09/21 23:39:50 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=28592

14/09/21 23:39:50 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0

14/09/21 23:39:50 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0

14/09/21 23:39:50 INFO mapred.JobClient:     Launched map tasks=1

14/09/21 23:39:50 INFO mapred.JobClient:     Data-local map tasks=1

14/09/21 23:39:50 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=22396

14/09/21 23:39:50 INFO mapred.JobClient:   File Output Format Counters

14/09/21 23:39:50 INFO mapred.JobClient:     Bytes Written=1081

14/09/21 23:39:50 INFO mapred.JobClient:   FileSystemCounters

14/09/21 23:39:50 INFO mapred.JobClient:     FILE_BYTES_READ=1552

14/09/21 23:39:50 INFO mapred.JobClient:     HDFS_BYTES_READ=1683

14/09/21 23:39:50 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=139783

14/09/21 23:39:50 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=1081

14/09/21 23:39:50 INFO mapred.JobClient:   File Input Format Counters

14/09/21 23:39:50 INFO mapred.JobClient:     Bytes Read=1567

14/09/21 23:39:50 INFO mapred.JobClient:   Map-Reduce Framework

14/09/21 23:39:50 INFO mapred.JobClient:     Map output materialized bytes=1552

14/09/21 23:39:50 INFO mapred.JobClient:     Map input records=30

14/09/21 23:39:50 INFO mapred.JobClient:     Reduce shuffle bytes=1552

14/09/21 23:39:50 INFO mapred.JobClient:     Spilled Records=234

14/09/21 23:39:50 INFO mapred.JobClient:     Map output bytes=1999

14/09/21 23:39:50 INFO mapred.JobClient:     Total committed heap usage (bytes)=200806400

14/09/21 23:39:50 INFO mapred.JobClient:     CPU time spent (ms)=4120

14/09/21 23:39:50 INFO mapred.JobClient:     Combine input records=192

14/09/21 23:39:50 INFO mapred.JobClient:     SPLIT_RAW_BYTES=116

14/09/21 23:39:50 INFO mapred.JobClient:     Reduce input records=117

14/09/21 23:39:50 INFO mapred.JobClient:     Reduce input groups=117

14/09/21 23:39:50 INFO mapred.JobClient:     Combine output records=117

14/09/21 23:39:50 INFO mapred.JobClient:     Physical memory (bytes) snapshot=270094336

14/09/21 23:39:50 INFO mapred.JobClient:     Reduce output records=117

14/09/21 23:39:50 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=1282797568

14/09/21 23:39:50 INFO mapred.JobClient:     Map output records=192

 

ちなみに、Web Client の BDE プラグインから、

おなじみの MapReduce ステータス確認のページも表示することができます。

クラスタを右クリック → 「Open MapReduce Status Page」をクリックすると・・・

bde-trywc-04.png

 

Web ブラウザで Map/Reduce Administration ページが開きます。

bde-trywc-05.png

 

Running Jobs のあたりで、実行中のジョブを確認できたりします。

bde-trywc-06.png

 

ジョブが終了すると、ワードをカウントしたファイルが作成されます。

[root@192 ~]# hadoop fs -ls /tmp/test/output

Found 3 items

-rw-r--r--   3 root hadoop          0 2014-09-21 23:39 /tmp/test/output/_SUCCESS

drwxrwxrwx   - root hadoop          0 2014-09-21 23:38 /tmp/test/output/_logs

-rw-r--r--   3 root hadoop       1081 2014-09-21 23:39 /tmp/test/output/part-r-00000

[root@192 ~]# hadoop fs -get /tmp/test/output/part-r-00000 ./sample_wc.txt

[root@192 ~]# wc -l sample_wc.txt

117 sample_wc.txt  ★117ワードありました。

[root@192 ~]# head -n 20 sample_wc.txt

-archiveName    1

-format 1

-p      1

2       1

<dest>  1

<desturl>       2

<jar>   1

<parent 1

<src>*  1

<srcurl>        2

CLASSNAME       2

COMMAND 2

DFS     6

DistCp  1

Hadoop  1

JobQueues       1

Map-Reduce      1

MapReduce       3

Most    1

NAME    1

 

ちなみに、ヘルプには run というワードが多いですね。

[root@192 ~]# sort -k2 -n -r sample_wc.txt | head -n 20

run     14

the     12

a       12

DFS     6

namenode        4

job     4

version 3

jar     3

filesystem      3

client  3

MapReduce       3

utility 2

to      2

print   2

or      2

node    2

hadoop  2

get     2

fsimage 2

file    2

 

以上、BDE で構築した Hadoop 環境についてでした。

たぶん、まだ続けます・・・

vSphere で Hadoop してみる。BDE 第6回(Serengeti CLI)