LoginSignup
63
63

More than 5 years have passed since last update.

Macでhadoopをちょっとだけ動かしてみる

Posted at

環境

Mac OSX 10.9.2で試した。

$ java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)

インストール

homebrew使う。v2.4.0がインストールされた。

$ brew install hadoop
$ brew info hadoop
hadoop: stable 2.4.0
http://hadoop.apache.org/
/usr/local/Cellar/hadoop/2.4.0 (5592 files, 236M) *
  Built from source
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/hadoop.rb
==> Caveats
In Hadoop's config file:
  /usr/local/Cellar/hadoop/2.4.0/libexec/etc/hadoop/hadoop-env.sh,
  /usr/local/Cellar/hadoop/2.4.0/libexec/etc/hadoop/mapred-env.sh and
  /usr/local/Cellar/hadoop/2.4.0/libexec/etc/hadoop/yarn-env.sh
$JAVA_HOME has been set to be the output of:
  /usr/libexec/java_home

スタンドアロンで動かす

『Hadoopファーストガイド』読みながら進めてる。

hadoopがインストールされてるディレクトリまで移動

$ cd /usr/local/Cellar/hadoop/2.4.0

Hadoop組み込みの、ワードカウントを動かす。

入力ファイルを用意。

$ mkdir input
a b c
a a b c c c

計算を実行。

$ hadoop jar libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.0.jar wordcount input output

(出力用のoutputディレクトリは勝手にできる)

output/part-r -00000というファイルが生成されている。

a   3
b   2
c   4

ちゃんとワードカウントが動いたことが分かる。

擬似分散モードで動かす

localhostにSSHログインできるようにする

localhostにパスワード無しでSSHログインできるようにする必要があるらしい。

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ ssh localhost

これでログインできればOK。
Macのシステム環境設定で、「共有」のリモートログインのところにチェックを入れておく必要がある。

設定ファイル追記、フォーマット

$ cd /usr/local/Cellar/hadoop/2.4.0

core-site.xml, hdfs-site.xmlを編集。

libexec/etc/hadoop/core-site.xml
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>
libexec/etc/hadoop/hdfs-site.xml
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

Hadoopの分散ファイルシステム、HDFSのフォーマット。

$ hdfs namenode -format

これで、/tmp/hadoop-<ユーザー名>/dfs/name以下に、HDFSの管理ファイルが作られる。

起動

hadoopのパッケージに付いてるシェルスクリプトを使う。

$ sbin/start-dfs.sh

シェルが実行されると、Javaのプロセス (namenodeやdatanodeなど) が起動する。

起ち上がっているのは以下のプロセスたち。

$ jps
26353 Jps
26172 DataNode
26278 SecondaryNameNode
26084 NameNode

http://localhost:50070にアクセスすると、こんな感じの画面が見れる。

スクリーンショット 2014-05-03 18.51.53.png

YARN

YARN (Yet-Another-Resource-Negotiator) に関する設定。

libexec/etc/hadoop/yarn-site.xml
<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>
libexec/etc/hadoop/mapred-site.xml
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

起動のシェルスクリプトを実行。

$ sbin/start-yarn.sh

先ほどのプロセスに加え、ResourceManager, NodeManagerが起動している。

$ jps
26172 DataNode
26609 ResourceManager
26278 SecondaryNameNode
26084 NameNode
26745 Jps
26703 NodeManager

http://localhost:8088にアクセスすると、こんな感じの画面が見れる。
まだ見方はよくわかってない。。

スクリーンショット 2014-05-03 18.59.28.png

sbin/stop-dfs.sh, sbin/stop-yarn.shで上記プロセスは停止できる。

処理の実行

$ hdfs dfs -mkdir /hadoop

HDFS上に(仮想)ディレクトリを作成。
hdfs dfsコマンドのオプションはLinuxぽい感じ。

スタンドアロンモードの時に使ったinputディレクトリをHDFS上に置く。

$ hdfs dfs -put input /hadoop/input

先ほどと同様、wordcountの計算実行。

$ hadoop jar libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.0.jar wordcount /hadoop/input /hadoop/output
$ hdfs dfs -cat /hadoop/output/part-r-00000
(中略)
a   3
b   2
c   4

擬似分散モードでもちゃんと動いた。

63
63
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63
63