付録についていた count_word.pl

日経 Linux 2011-05 を参考に Hadoop を実験してみましたが
なぜかエラーになるので
一度ソースを見てみました
結果、付録DVDに入っていたスクリプトには
#!/usr/bin/perl
#use strict;
my %words;
while () {
chomp $_;
undef %words;
my @words = split ( /\s+/, $_ );
foreach $s ( @words ) {
$s =~ tr/A-Z/a-z/;
$s =~ s/\W+//g;
$s =~ s/([\w\d]+)/$1/g;
unless ( $s =~ /\w{4,}/ ) { next; }
print ($s . “\t” . 1 . “\n” );
}
}
となっていましたが
書籍のページでは
#!/usr/bin/perl
use strict;
my $s;
while () {
chomp $_;
my @words = split ( /\s+/, $_ );
foreach $s ( @words ) {
$s =~ tr/A-Z/a-z/;
$s =~ tr/a-z//cd;
if ( $s =~ /[a-z]{4,}/ ) {
print ($s . “\t” . 1 . “\n” );
}
}
}
となっています
コマンドで書き換えたような記憶はないので、
ソースそのものが違っているような気がします….
count_word.pl*
となっているので、他にも要因があるのかもしれません

Pig の実験

引き続き、Pig の実験です
続いて、データ処理の実験のためのファイルをダウンロードします
http://131.193.40.52/data/
へアクセスし、
reviewsNew.rar
というファイルをダウンロードします
このファイルは。
.rar という形式なので、解凍するために
sudo apt-get -y install unrar
で必要なソフトをインストールします
解凍するには
unrar e reviewsNew.rar
を実行します
続いて解析の準備です
まず
hadoop dfs -mkdir amazon
hadoop dfs -copyFromLocal reviewsNew.txt amazon
を実行し
pig
で起動し、無事に起動成功すると
grunt>
という端末になります
本来、JobTracker へのアクセス成功などのメッセージが
でるようですが、なぜかこのあたりはエラーになりました
とりあえず、今回の実験では問題がなかったのですが
残念ながら、次の実験には使えませんでした
とりあえず、今回のログをメモしてみました
A = LOAD ‘amazon/reviewsNew,txt’;
A = LOAD ‘amazon/reviewsNew.txt’ as(mem_id:chararray,pro_id:chararray,date:chararray,
date:chararray,num_hf:int,num_f:int,
rating:double,title:chararray,body:chararray);
AG = GROUP A ALL;
A2 = FOREACH AG GENERATE COUNT(A),AVG(A.rating),MAX(A.rating),MIN(A.rating);
DUMP A2;
を実行すると
データ集計ができます
今回の設定は、ソースから行っていますが、
ubuntu の場合、apt-get でインストール、設定が可能のようです
[Hadoop][Pig]Pigのインストール
1台構成のHadoopを30分で試してみる(Ubuntu + Cloudera)
を参考に、一度 apt-get で環境を構築してみます

Pig の設定をスクリプトで実行

前回、Hadoop の設定をスクリプトで実行できるようにしたので
今回は Pig を設定してみます
Pig はすべての hadoop インストール済みのマシンにいれる
必要性はなく、どれか1つでよいようなので
別のスクリプトにしました
まず
vi setup_pig.sh
でファイルを作成し、内容を以下のようにします

#/bin/bash
sudo tar zxvf pig-0.8.0.tar.gz -C /opt
cd /opt/
sudo ln -s ./pig-0.8.0 pig
echo -e ‘export PIG_INSTALL=/opt/pig/’ >> $HOME/.bashrc
echo -e ‘export PIG_CLASSPATH=/opt/hadoop/hadoop-0.21.0/conf/’ >> $HOME/.bashrc
echo -e ‘export PATH=$PIG_INSTALL/bin:$PATH’ >> $HOME/.bashrc
source ~/.bashrc

保存したら
sh vi setup_pig.sh
を実行します
これで設定完了です

Hadoop の設定をスクリプトで実行

ディスク容量が足りなかったため
再度 設定することにしました
今度は、容量を大きめにつくってみました
前回、20GBで足りないので、今回の Vmware で作成した容量は
50GB 割当てしました
また、再度設定することも考えて、
セットアップスクリプトの作成をしてみます
vi setup_hadoop.sh
でファイルを作成し。内容を以下のようにしました

#!/bin/bash
./jdk-6u24-linux-i586.bin
sudo mv jdk1.6.0_24 /opt/
tar zxvf hadoop-0.21.0.tar.gz
sudo mkdir -p /opt/hadoop
sudo mv hadoop-0.21.0 /opt/hadoop/
echo -e ‘export JAVA_HOME=/opt/jdk1.6.0_24/’ >> $HOME/.bashrc
echo -e ‘export HADOOP_INSTALL=/opt/hadoop/hadoop-0.21.0’ >> $HOME/.bashrc
echo -e ‘export PATH=$HADOOP_INSTALL/bin:$JAVA_HOME/bin:$PATH’ >> $HOME/.bashrc
source ~/.bashrc
sudo apt-get -y install openssh-server
ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

これで、
ssh localhost
でログインできれば成功です
ちなみに、このスクリプトを実行する場合
jdk-6u24-linux-i586.bin
hadoop-0.21.0.tar.gz
をスクリプトと同じディレクトリにおいておくことが必要です

Hadoop でエラーの意味

hadoop を使うため、
pig を実行したところ、エラーになりました
原因を探したところ、どうやらディスク容量が足りないのが
原因のようです
前回、VMware Player で容量を増やしたのですが
たしかに容量は増えたのですが、未使用領域が増えただけでした
実際のマシンに例えると
HDDがいっぱいになりかけているところに
外付けHDDを追加しただけに近い状態です
このため、根本的な解決にはなっていませんでした
Windwos の VMware の場合、コマンドを使うことで
領域の拡張などを行えるようですが、Linux 版の
Vmware Player の場合、この管理コマンドがありません
どうやら、Vmware Server が必要になりそうです
また、今回、VMのディスクを何も考えずに
2GBに分割していたため、
もしこれを拡張するのであるなら、
一度統合して、拡張する必要性がありそうです
おそらく、外付けHDDが FAT32のときのことを
考えての機能なのかもしれません
FAT32 のフォーマットの場合、最大4GB程度のファイルまでしか
取扱いができませんので
次回からは、仮想ディスクを分割しないこと
そして、
次の対処に備えて、VMware Server の導入を検討中です
なお、今回の原因究明には
Hadoop/インストール
参考にさせていただきました
また、仮想環境の容量拡張に関しては
VMware Player(Workstation)のメモ
分割仮想ディスクを結合する(by vmware-vdiskmanager)
【CentOS】LVMでディスク容量を拡張(VMwareのHDD容量を増やす)
を参考にさせていただきました

Pig でデータ処理

準備がほぼ整ったので、Pig でデータ処理してみました
しかし、雑誌のとおりにやったところエラーになります
原因は、Pig のクラスパスにありました
port PIG_CLASSPATH=/opt/hadoop/confとなっていました
これを
export PIG_CLASSPATH=/opt/hadoop/hadoop-0.21.0/conf
とすればエラーが消えました
仮想環境で構築していますが
失敗したときに、再度ダウンロードするのは時間がかかるので
一度、scp コマンドで取得したファイルをバックアップしておきます
scp wiki@192.168.10.218:/home/wiki/hado* pig* jdk* count* .
を実行し、ゲストOSへバックアップしておきます
コマンドを使ってファイルコピーするときには
* を使って文字をすべて書き込まないようにすれば時間短縮になります

VMware Player の仮想マシンの容量拡張

Vmware Player では、仮想マシンに割り当てたHDDの容量を拡張できます
作成した仮想マシンを選択し
Edit virtual machine settings
をクリック
hard Disk(SISI) をクリックし
Utils をクリックして Expand を選択
Maxium Disk size の容量を調整して、expand を
クリックすれば容量の拡張ができます
(数値をキーボードで変更してもなぜか保存できません)
今回、容量を拡張するのは、
Hadoop の実験のために仮想マシンを20GB 割り当てしたのですが
足りなくなったため、倍の容量へ増やすことにしました

.rar ファイルの解凍

日経 Linux 2011-05 を参考に、Hadoop の実験を開始しています
しかし、.rar 拡張子の解凍方法が載っていないので
検索してみました
unrar コマンドで解凍できるようなのですが
ubuntu 10.10 にはインストールされていないため、
sudo apt-get install unrar
でインストールしました
使い方は
Ubuntu: rar圧縮ファイルの操作(unrar コマンド) (メモ)
を参考にさせていただきました
unrar e reviewsNew.rar
でファイルを解凍します
ちなみに、 e オプションは、カレントディレクトリに解凍すると
いう意味になります

Pig の導入

前回、分散処理技術 Hadoop
で hadoop をインストールし
パスフレーズなしのSSHでSSH公開鍵認証で
ログインできるようになったので、今度は
Pig をインストールします
Pig は。大容量データの集計処理などに使うようです
Pig の使用例としては
米Yahoo! がログデータ解析に使ったということがあるようです
ほかにも、Pig の使用例を調べると
いろいろとでてきそうです
それでは、インストール開始です
今回もダウンロードの手間を省くため
日経 Linux 2011-05 の付録DVDに収録されているものを使います
cp /media/LIN201105/article/rensai_pighive/pig-0.8.0.tar.gz $HOME
でファイルをコピー
sudo tar zxvf pig-0.8.0.tar.gz -C /opt/
で/opt へディレクトリ展開
作業効率化のため
cd /opt
sudo ln -s ./pig-0.8.0 pig
でシンボリックリンク作成
環境変数の追加のため
vi $HOME/.bashrc
でファイルを開き
最終行へ
export PIG_INSTALL=/opt/pig/
export PIG_CLASSPATH=/opt/hadoop/conf/
export PATH=$PIG_INSTALL/bin:$PATH
を追記
設定内容を反映するために
source $HOME/.bashrc
を実行
ここまでで、Pig の準備完了です
続いて、データ処理の実験のためのファイルをダウンロードします
http://131.193.40.52/data/
へアクセスし、
reviewsNew.rar
というファイルをダウンロードします
容量は約1.7GB あるので、続きは明日以降になります

AppWidget概要

Appwidget は、ホームボタン長押しででるウィジェットを作成する
エミュレータでウィジェットを画面に
追加し、実際の動作確認をしたいのなら
menu と書いてあるボタンをクリックし
Add をクリック
次に
Widget をクリックすれば
自作アプリのウィジェットのテストができる
AppWidget は、ホーム画面に常駐するけど
実際には更新処理我ないかぎり、同じイメージを表示し続けるあぷり
なので、そこまで電池消費はないらしい
更新を頻繁にするなら話はべつみたいだけど
ただ、仕組みについては複雑で
原因は、常駐アプリゆえの省電力設計
動作はしていないので
更新が必要なときにイベントが発行されるという仕組みらしい
更新処理の仲介には
Provider クラスを経由してイベントを処理しているらしい