Hadoop サンプルアプリ実行(メモリ不足でジョブ失敗)

Hadoopの分散処理モードで、サンプルのMapReduceプログラム「pi」を実行してみたログを記録しておきます。

結論から言うと、Hadoopを動かしているマシンのメモリが貧弱でジョブが失敗しました。AWSの無料条件で使っている稼働環境なので、リソース的に無理がありました。その様子の記録です。 Continue reading

Hadoop 疑似分散モードでの起動検証2

Hadoop検証の続きです。

Hadoopが無事起動できるようになりましたので、NameNodeとJobTrackerのWebインターフェースにアクセスしたいと思います。

NameNodeのWebインターフェース

FireWallで、TCP50070にアクセスできるようにポリシー許可します。

その後、ブラウザで、http://(対象ノード):50070/ にアクセスすると、以下の画面が表示されました。 Continue reading

Hadoop 疑似分散モードでの起動検証1

Hadoop上で、HDFSの機能を確認する為、疑似分散モードで起動検証を行いました。

書籍「Hadoop 徹底入門」を一読しておいたのですが、検証したHadoopバージョンが書籍記載のバージョンと異なっていたので、多少戸惑いましたが、無事進める事が出来ました。

以下に、実行結果を記載しておきます。 Continue reading

Hadoop スタンドアロンモードでのMapReduceサンプル検証

Hadoopがビッグデータ関連の書籍に記載されていたので実際に触ってみました。

まず、下調べとして、 Wiki を読んでから、次はクイックスタートを見ながら、実際に触ってみました。


インストール

rpmでバージョンは「1.0.2」をインストール。あとは、環境に応じて(Javaなど)。

起動準備設定

/etc/hadoop/hadoop-env.sh でJAVA_HOMEを設定する。

スタンドアロンモードで実行

スタンドアロンモードで実行してみる。しかし、OutOfMemoryが発生

java.lang.OutOfMemoryError: Java heap space
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:949)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:428)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:212)

いろいろ調べてみるが、以下で解決。

/etc/hadoop/mapred-site.xml に以下を追加。(<configuration>の間)

<property>
<name>io.sort.mb</name>
<value>30</value>
</property>

以上で、以下を実行できるようになった。

/usr/bin/hadoop jar /usr/share/hadoop/hadoop-examples-1.0.2.jar grep input output ‘dfs[a-z.]+’

検証

まず、以下の2つのテキストファイルを準備。

$ head input/test*.txt
==> input/test1.txt <==
may
sunday
monday

==> input/test2.txt <==
saturday
info
sunday
wednesday
monday
friday
$

以下のコマンドで実行する。

$ /usr/bin/hadoop jar /usr/share/hadoop/hadoop-examples-1.0.2.jar wordcount input output
12/05/07 22:54:47 INFO util.NativeCodeLoader: Loaded the native-hadoop library
~中略~
12/05/07 22:54:57 INFO mapred.JobClient:     Combine output records=9
12/05/07 22:54:57 INFO mapred.JobClient:     Physical memory (bytes) snapshot=0
12/05/07 22:54:57 INFO mapred.JobClient:     Reduce output records=7
12/05/07 22:54:57 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=0
12/05/07 22:54:57 INFO mapred.JobClient:     Map output records=9
$

結果を見てみる。

$ cat output/part-r-00000
friday  1
info    1
may     1
monday  2
saturday        1
sunday  2
wednesday       1
$

OK!