山本?
raspberrypiをwifiでインターネットに接続する場合研究室内のwifi(AirMacpro)に接続,パスワードはbasestation
なお, ホスト名とIPアドレスは,
master, 192.168.0.60
slave1, 192.168.0.61
...
slave7, 192.168.0.67
のように設定するものとして説明する.
1. 基本設定
パスワードの変更
$ passwd
(必須ではないが, 警告がでないようにする. )
2. パッケージリストを更新する.
$ sudo apt-get update
3. 設定ファイルを編集していくので, 必要であればテキストエディタをインストールする.
$ sudo apt-get install emacs
4. /etc/hostnameの内容(ホスト名)を
$ sudo emacs /etc/hostname
により編集する(1行にホスト名を記述する).
5. 固定IPの設定のために /etc/dhcpcd.confを編集する. ファイル内の下部に#It is possible to fall.....と記述されているところがあるので,そこの3行下に
#static ip_address=初期設定のIPアドレス
と記述されているので初期設定のIPアドレスをそれぞれのラズパイのIPに書き換える.その後左の#を消去.
6. 名前解決のために/etc/hostsを編集する.
192.168.0.60 master
192.168.0.61 slave1
...
192.168.0.67 slave7
を追記する.
7. ネットワークを再起動する(RasPi自体を再起動してもよい).
8. ping ホスト名, ping IPアドレスがそれぞれのノードに正常に通るか確認する.
9. 各RasPiでsshを有効にするための設定を行う.
$ sudo raspi-config
を押して, sshをenableに設定する.
10. ssh-keygen -t rsaを実行する. いくつか聞かれるが, 全てEnterで処理してよい.
11. 公開鍵を全てのマシンに送信する.
$ ssh-copy-id master
$ ssh-copy-id slave1
...
$ ssh-copy-id slave7
上記をすべてのラズパイで行う. ※同じラズパイで重複して行うと暗号化キーが複数できてめんどくさいことになるので注意!
以降では, リモートで各マシンにssh接続して設定を行う.
11. Hadoopを実行するために必要となるjavaをインストールする.
$ sudo apt-get install oracle-java8-jdk
※用いてるラズパイによってはすでにインストールされている場合がある
12. Hadoopをダウンロードし解凍する.
$ cd ~pi/
$ wget http://ftp.jaist.ac.jp/pub/apache/hadoop/common/hadoop-3.0.2/hadoop-3.0.2.tar.gz
※hadoopのバージョンはその都度インストールできバージョンを確認する
$ tar zxvf hadoop-3.0.2.tar.gz
13. Hadoopの環境変数 + 設定ファイルを修正する.
本ページ下部にあるzipファイルを以下の配置に置く bashrcというファイルは配置した後に隠しファイルとするためファイル名の先頭に.をつけて.bashrcとする
pi/.bashrc
pi/hadoop-3.0.2/etc/hadoop/hadoop-env.sh
pi/hadoop-3.0.2/etc/hadoop/core-site.xml
pi/hadoop-3.0.2/etc/hadoop/hdfs-site.xml
pi/hadoop-3.0.2/etc/hadoop/mapred-site.xml
pi/hadoop-3.0.2/etc/hadoop/yarn-site.xml
14. Hadoopネームノードの初期設定
$hdfs namenode -format
※masterのみで実行
15. masterのサービスの起動
$hdfs --daemon start namenode
ブラウザで, master:9870,にアクセスできるか確認
$yarn --daemon start resourcemanager
ブラウザで, master:8088,にアクセスできるか確認しておく.
masterで
$jps
により現在動いているサービスが確認できる
※jpsの画像
16. slave1~7のサービスの起動
slave1~7で以下のコマンドを実行
$hdfs --daemon start datanode
$yarn --daemon start nodemanager
$jps
により動いているサービスの確認をmasterと同様に行う
全てのslaveでdatanodeとnodemanagerを立ち上げるたらmaster:9870のLive Nodesが7になっていることと,master:8088のActive Nodesの数が7になっていることを確認する.
17. Hadoopのサンプルプログラムの実行(masterで作業).
円周率のサンプルプログラム
$hadoop jar /home/pi/hadoop-3.0.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.2.jar pi 10 10000
を実行,以下実行結果
円周率のサンプルプログラムではラズパイの台数を変えても差が出ないことが分かった。 なのでwordcountというファイル内の文字数を数えるプログラムを実行する.
wordcountの実行手順
1.テキストファイルの用意
http://www.textfiles.com/etext/AUTHORS/ARISTOTLE/ 上記のサイトから適当なものをダウンロードしてmasterの/home/piにいれておく. ファイルの名前はword.txtに変更しておく. ※word.txtはそのままでは容量が小さいので以下の手順を行う
$cat word.txt word.txt word.txt > word1.txt $cat word1.txt word1.txt word1.txt > word2.txt $cat word2.txt word2.txt word2.txt > word3.txt $cat word3.txt word3.txt word3.txt > word4.txt . . .
というように繰り返しファイルのサイズを大きくする(目安としては500MBくらいまでファイルを大きくする) この作業を終えたら改めてファイル名をword.txtに変えておく.
2.ファイルの保存先(HDFS)となるディレクトリを作成
$ hadoop fs -mkdir /input
3.テキストファイルを、/inputの下にコピー
$ hadoop fs -put word.txt /input
4.コピーされたことを確認
$ hadoop fs -ls /input
5.実行
$ hadoop jar /home/pi/hadoop-3.0.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.2.jar wordcount /input /output07