今回は、前回までに vSphere Big Data Extensions(BDE)で作成した
Hadoop 環境を、もう少し見てみようと思います。
そして、かるく WordCount してみます。
これまでの流れは・・・
vSphere で Hadoop してみる。(Big Data Extentions) 第1回
BDE で構築した Hadoop 環境について
Client ノードとして作成された VM に SSH でログインして確認してみます。
※Client 以外の、マスタ / スレーブ ノードも同様の構成になります。
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」をクリックすると・・・
Web ブラウザで HDFS の NameNode のページが開きます。
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」をクリックすると・・・
Web ブラウザで Map/Reduce Administration ページが開きます。
Running Jobs のあたりで、実行中のジョブを確認できたりします。
ジョブが終了すると、ワードをカウントしたファイルが作成されます。
[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 環境についてでした。
たぶん、まだ続けます・・・