実行環境
Ubuntu 14.04Hadoop 2.6.0
環境構築
JavaのインストールHadoopに必要なJavaを入れます。
root$ sudo apt-get update root$ sudo apt-get install openjdk-7-jdk root$ java -version java version "1.7.0_101" OpenJDK Runtime Environment (IcedTea 2.6.6) (7u101-2.6.6-0ubuntu0.14.04.1) OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)Hadoopのインストール
Hadoopの環境を構築していくにあたって、今後完全分散モードを実行する必要がある人は、Hadoop用に別のユーザを作ることをオススメします。
まずはrootユーザからhadoopユーザを作る。
root$ sudo adduser hadoop初めに聞かれるパスワードだけ設定して、あとはEnter連打。
ついでに、hadoopユーザがsudoできるようにroot権を与えておくと良いかも。
root$ sudo gpasswd -a hadoop sudo root$ sudo su - hadoop上記の下側のコマンドでhadoopユーザに入る。
hadoop側で設定を行っていく。まず、Hadoopはネットからダウンロードしてくる必要があるので、公式のミラーサイトから落としてくる。ここでは、山形大学?の2.6.0バージョンを落としてきた。
hadoop$ wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz hadoop$ tar zxvf hadoop-2.6.0.tar.gz hadoop$ sudo mv ./hadoop-2.6.0 /usr/local/hadoop hadoop$ sudo chown hadoop:hadoop -R /usr/local/hadoopHadoopのフォルダの設置は完了したので、パスを通すために.bashrcの最下部にパスを書く。
hadoop$ emacs ~/.bashrc ... export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 export HADOOP_INSTALL=/usr/local/hadoop export PATH=$HADOOP_INSTALL/bin:$JAVA_HOME/bin:$PATH export PATH=$HADOOP_INSTALL/sbin:$JAVA_HOME/bin:$PATH hadoop$ source .bashrc hadoop$ hadoop version Hadoop 2.6.0 Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r e3496499ecb8d220fba99dc5ed4c99c8f9e33bb1 Compiled by jenkins on 2014-11-13T21:10Z Compiled with protoc 2.5.0 From source with checksum 18e43357c8f927c0695f1e9522859d6a This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.6.0.jarバージョンがきちんと出力されれば、Hadoopへのパスが通っていることが確認できる。
スタンドアローンモードで実行確認
スタンドアローンモードはhdfsを使用せずにローカルファイルシステムを使います。そのため、デフォルトの設定であれば設定ファイルをいじることなく実行の確認ができます。サンプルの円周率を求めるプログラムを動かしてみます。hadoop$ hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar pi 10 10000 Number of Maps = 10 Samples per Map = 10000 Wrote input for Map #0 Wrote input for Map #1 Wrote input for Map #2 Wrote input for Map #3 Wrote input for Map #4 Wrote input for Map #5 Wrote input for Map #6 Wrote input for Map #7 Wrote input for Map #8 Wrote input for Map #9 Starting Job ... (省略) ... Job Finished in 16.526 seconds Estimated value of Pi is 3.1415844000000000どうやって円周率を求めているのかわかりませんが、モンテカルロ法を用いて計算しているようです。
piの次にある2つの引数は10がMapの数で10000がサンプル数です。このサンプル数をもっと増やせば円周率の結果の精度が高くなります。
擬似分散モード
擬似分散モードは、1台のPCでmasterとslaveを担い、hdfsを利用して擬似的に分散処理を行うことです。本来の分散処理は、他のPCとsshで接続し通信を行います。この擬似分散モードは、自身のPCにssh接続することで1台のPCで分散処理を行うことができるようにしています。
sshキーの生成
では、まず自身のPCにパスなしでssh接続するための公開鍵を生成します。
hadoop$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): /home/hadoop/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hadoop/.ssh/id_rsa. Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub. The key fingerprint is: ...-tオプションで鍵の種類を指定しています。実行するといろいろ聞かれますが、基本はそのままEnterで。一度作っていたらOverwrite?って聞かれますが、とりあえずyにして上書きしときましょう。
本当に生成されているか見てみましょう。
hadoop$ ls -la ~/.ssh/ 合計 32 drwx------ 2 hadoop hadoop 4096 6月 24 12:51 . drwxr-xr-x 26 hadoop hadoop 4096 6月 23 17:05 .. -rw------- 1 hadoop hadoop 616 6月 19 16:12 authorized_keys -rw------- 1 hadoop hadoop 1679 6月 24 12:52 id_rsa -rw-r--r-- 1 hadoop hadoop 408 6月 24 12:52 id_rsa.pub -rw-r--r-- 1 hadoop hadoop 3996 6月 23 15:35 known_hostsid_rsaとid_rsa.pubが生成されていればok。
hadoop$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys hadoop$ chmod 600 ~/.ssh/authorized_keyslocalhostにパス無しでssh接続
これで鍵の登録ができたので、ssh接続できるか試してみましょう。
hadoop$ ssh localhost Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 3.13.0-83-generic x86_64) * Documentation: https://help.ubuntu.com/ Last login: Fri Jun 24 13:30:08 2016 from localhost hadoop$ exit ログアウトパス無しで上記の表示が出されればログインできており、ssh設定完了です。exitでログアウトします。
ついでに今後のためにhostsにIPアドレスを記述しておきましょう。事前にIPを固定しているとして話を進めます。
まずは、自分のIPを確認します。
hadoop$ ifconfig ... eth0 inetアドレス:192.168.0.XXX ...このIPアドレスをPCに記憶させます。hostsファイルはLANで接続された各ホスト名とIPアドレスを記述することにより、いちいちIPアドレスを打たなくてもホスト名を用いて指定することができます。
hadoop$ sudo emacs /etc/hosts 127.0.0.1 localhost 192.168.0.XXX HOGE # The following lines are desirable for IPv6 capable hosts ...ここで用いているHOGEはホスト名であり、端末などでhadoop@@HOGE:~$とあるときの、HOGEの部分になります。
これを設定することで、以下は同じ意味になります。
hadoop$ ssh 192.168.0.XXX hadoop$ ssh HOGE
設定ファイルの編集
擬似分散モードで動作するようにHadoopの設定ファイルを書き換えます。
それぞれのファイル内の
- core-site.xml
- mapred-site.xml デフォルトではmapred-site.xml.templateとなっているので、mapred-site.xmlを作成してから編集する。
- hdfs-site.xml
- hadoop-env.sh
hadoop$ emacs /usr/local/hadoop/etc/hadoop/core-site.xmlfs.default.name hdfs://localhost:9000
hadoop$ cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml hadoop$ emacs /usr/local/hadoop/etc/hadoop/mapred-site.xmlmapred.job.tracker localhost:9001
hadoop$ emacs /usr/local/hadoop/etc/hadoop/hdfs-site.xmldfs.replication 1
hadoop$ emacs /usr/local/hadoop/etc/hadoop/hadoop-env.sh ... # The java implementation to use. #export JAVA_HOME=${JAVA_HOME} #コメントアウト export JAVA_HOME=/usr #追加記述 ...
ファイルシステムのフォーマット
設定ファイルをいじったら毎回HDFSをフォーマットする必要があります。
Nodeが停止している状態で次のコマンドでフォーマットします。
hadoop$ hdfs namenode -format 16/06/24 14:05:09 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = PC-NAME/192.168.0.XXX STARTUP_MSG: args = [-format] STARTUP_MSG: version = 2.6.0 ... (省略) ... /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at PC-NAME/192.168.0.XXX ************************************************************/
擬似分散で実行
まずは、Nodeを立ち上げます。
hadoop$ start-all.sh This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh Starting namenodes on [localhost] localhost: namenode running as process 6345. Stop it first. localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-hadoop-datanode-PC-NAME.out Starting secondary namenodes [0.0.0.0] 0.0.0.0: secondarynamenode running as process 6557. Stop it first. starting yarn daemons resourcemanager running as process 6713. Stop it first. localhost: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-hadoop-nodemanager-PC-NAME.outjpsコマンドを使って、Nodeが起動しているか確認します。
hadoop$ jps 8176 DataNode 6345 NameNode 6557 SecondaryNameNode 8651 Jps 6924 JobHistoryServer 6713 ResourceManager 8553 NodeManagerwebでも確認してみます。
アドレスバーに下記を打ってアクセスします。XXXは実行しているサーバのIPアドレスです。
192.168.0.XXX:50070
サンプルの実行
hadoop$ hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar pi 10 10000 Number of Maps = 10 Samples per Map = 10000 Wrote input for Map #0 Wrote input for Map #1 Wrote input for Map #2 Wrote input for Map #3 Wrote input for Map #4 Wrote input for Map #5 Wrote input for Map #6 Wrote input for Map #7 Wrote input for Map #8 Wrote input for Map #9 Starting Job ... (省略) ... Job Finished in 2.428 seconds Estimated value of Pi is 3.14120000000000000000HDFSの状態をチェックしてみましょう
hadoop$ hdfs dfsadmin -report Configured Capacity: 48447275008 (45.12 GB) Present Capacity: 15826509824 (14.74 GB) DFS Remaining: 15826477056 (14.74 GB) DFS Used: 32768 (32 KB) DFS Used%: 0.00% Under replicated blocks: 0 Blocks with corrupt replicas: 0 Missing blocks: 0 ------------------------------------------------- Live datanodes (1): Name: 127.0.0.1:50010 (localhost) Hostname: PC-NAME Decommission Status : Normal Configured Capacity: 48447275008 (45.12 GB) DFS Used: 32768 (32 KB) Non DFS Used: 32620765184 (30.38 GB) DFS Remaining: 15826477056 (14.74 GB) DFS Used%: 0.00% DFS Remaining%: 32.67% Configured Cache Capacity: 0 (0 B) Cache Used: 0 (0 B) Cache Remaining: 0 (0 B) Cache Used%: 100.00% Cache Remaining%: 0.00% Xceivers: 1 Last contact: Sat Jun 25 23:51:16 JST 2016また、yarnの状態は
hadoop$ yarn node -listで確認できます。
最後に、Nodeを閉じる際は
hadoop$ stop-all.shです。
以上、Hadoopでスタンドアローンと擬似分散でした。
次回は完全分散モードへ。
0 件のコメント :
コメントを投稿