$ sudo apt-get install sun-java6-*
■javaのバージョン確認
$ java -version
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode, sharing)
■sun java使う設定
$ sudo update-alternatives --config java
■phpインストール(hadoop streamingでphpを動かす場合)
$ sudo apt-get install php5 php5-cli
■ユーザー追加
$ sudo adduser hadoop
■ssh_configが変だったので修正(なぜ?)
$ sudo vi /etc/ssh/ssh_config
PermitRootLoginをコメントアウト
■hadoopユーザ設定(パスなしユーザ設定)
$su - hadoop
$ssh-keygen -t rsa -P ""
$cat .ssh/id_rsa.pub >> .ssh/authorized_keys
■パスなしログイン確認
$ ssh localhost
■hadoopダウンロード、展開
$ wget http://www.meisei-u.ac.jp/mirror/apache/dist/hadoop/core/hadoop-0.20.1/hadoop-0.20.1.tar.gz
$ tar xvzf hadoop-0.20.1.tar.gz
$ ln -s hadoop-0.20.1 hadoop
$ vi hadoop/conf/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-6-sun
$ cd hadoop
■hadoopテスト(シングルモード)
$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
$ cat output/*
■hadoopテスト(疑似分散モード)
$ cd hadoop
☆以下のファイル編集
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
conf/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
conf/mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
■フォーマット
$ bin/hadoop namenode -format
■起動
$ bin/start-all.sh
■動作確認
NameNode :http://localhost:50070/
JobTracker:http://localhost:50030/
■起動確認
$ jps
3815 DataNode
3964 JobTracker
4059 TaskTracker
3894 SecondaryNameNode
3736 NameNode
12858 Jps
■テストデータ作成
・サンプルデータ
$ cat /home/hadoop/sample/sample.txt
a b c d e f g
a b c d e f
a b c d e
a b c d
a b c
a b
a
・phpでmap処理:標準入力の文字列を空白で分割して、タブ区切りの行として出力
#!/usr/bin/php
while ( !feof(STDIN) ) {
$line = trim(fgets(STDIN));
foreach ( preg_split('/\s+/', $line) as $word ) {
if ( $word !== '' ) {
echo "${word}\t1\n";
}
}
}
?>
・phpでreduce処理:標準入力の文字列を数え上げる
$ cat /home/hadoop/sample/reduce.php
#!/usr/bin/php
$value ) {
echo "${key}\t${value}\n";
}
?>
■テスト
・テストデータ登録
$ cd hadoop
$ bin/hadoop fs -put /home/hadoop/sample/sample.txt input
・実行
$ bin/hadoop jar contrib/streaming/hadoop-0.20.1-streaming.jar \
-input input/sample.txt \
-output output_sample \
-mapper 'php /home/hadoop/sample/map.php' \
-reducer 'php /home/hadoop/sample/reduce.php'
・結果表示:単語ごとに出現回数表示
$ bin/hadoop fs -cat output_sample/*
a 7
b 6
c 5
d 4
e 3
f 2
g 1
■ストップ
$ bin/stop-all.sh
0 件のコメント:
コメントを投稿