Apache™ Hadoop®! のインストールとスタンドアロンモードでの実行方法についてです。
Hadoopのインストール
公式のドキュメントは Hadoop: Setting up a Single Node Cluster. を参考にしています。
Downloads ページから該当するバージョンのバイナリ tarball を選択してパッケージをダウンロードします。
# cd /usr/local/lib/ # wget http://ftp.riken.jp/net/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz # tar zxf hadoop-2.7.2.tar.gz # rm hadoop-2.7.2.tar.gz # ln -s hadoop-2.7.2 hadoop
HADOOP_HOME の環境変数と、Hadoop のバイナリがあるディレクトリに PATH を通しておきます。
# echo 'export HADOOP_HOME=/usr/local/lib/hadoop' >> /etc/profile.d/hadoop.sh # echo 'export PATH="$HADOOP_HOME/bin:$PATH"' >> /etc/profile.d/hadoop.sh # source /etc/profile
JDK も必要になるのでインストールしてください。サポートされているバージョンは コチラ を参照。
CentOSにJava(JDK)をRPMでインストール+バージョン変更について
MacでHomebrewを使用して複数バージョンのJava (JDK) をインストールして切り替える方法
Hadoop を開始する前に JAVA_HOME を設定します。設定されていないとエラーになります。
# hadoop version Error: JAVA_HOME is not set and could not be found.
etc/hadoop/hadoop-env.sh
を編集して JAVA_HOME を設定します。~/.bash_profile
や~/.bashrc
でも問題ありません。
# The java implementation to use. export JAVA_HOME=/usr/java/default
以上で、スタンドアロンモードで使用するための準備が整いました。
# hadoop version Hadoop 2.7.2 Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b165c4fe8a74265c792ce23f546c64604acf0e41 Compiled by jenkins on 2016-01-26T00:08Z Compiled with protoc 2.5.0 From source with checksum d0fda26633fa762bff87ec759ebe689c This command was run using /usr/local/lib/hadoop-2.7.2/share/hadoop/common/hadoop-common-2.7.2.jar
スタンドアロンモードの実行方法
Hadoop のデフォルトではデーモンを一切動作させず、単一のJavaプロセスとして、非分散モードで実行するように構成されています。 これをスタンドアロンモード(またはローカルモード)といいます。 各種設定ファイルに対するプロパティの設定も、デフォルト値はスタンドアロンモードにあわせて設定されているので、これ以上の設定は不要です。
実際に試してみましょう。HDFS はスタンドアロンモードの場合、単純にローカルのファイルシステムが使用されます。
# hadoop fs -ls /usr/local/lib/ 16/02/13 18:52:51 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Found 10 items drwxr-xr-x - 10011 10011 4096 2016-01-26 09:20 /usr/local/lib/hadoop drwxr-xr-x - 10011 10011 4096 2016-01-26 09:20 /usr/local/lib/hadoop-2.7.2
MapReduce を実行してみます。入力データはローカルのファイルを参照します。
# mkdir input # cp etc/hadoop/*.xml input # hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+' ... # cat output/part-r-00000 1 dfsadmin
サンプルプログラムは他にもあり、引数無しで実行すると一覧が出力されます。
# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar An example program must be given as the first argument. Valid program names are: aggregatewordcount: An Aggregate based map/reduce program that counts the words in the input files. aggregatewordhist: An Aggregate based map/reduce program that computes the histogram of the words in the input files. bbp: A map/reduce program that uses Bailey-Borwein-Plouffe to compute exact digits of Pi. dbcount: An example job that count the pageview counts from a database. distbbp: A map/reduce program that uses a BBP-type formula to compute exact bits of Pi. grep: A map/reduce program that counts the matches of a regex in the input. ...
Hadoop を始めようとすると分散環境を構築したりと大変なイメージがあると思いますが、 このようにスタンドアロンモードであればデバッグも容易ですし気軽に Hadoop を試す事が可能です。
CDH5を使用したインストール
CDH5 を使用した Hadoop のインストール方法についてです。まずは CDH5のインストール をしてください。
Yum から YARN や HDFS も依存関係をまとめてインストールします。
# yum install hadoop
インストール先や作成されるディレクトリは次の通りです。
/usr/lib
以下に各コンポーネント毎にホームディレクトリが作成されていて、設定ファイル関連は/etc/hbase/conf
にまとまってます。ただしhadoop-env.sh
が何故か無くなっているので必要な場合は別途作成します。JAVA_HOME は設定していなくても内部で設定されるので必須ではありません。
/etc/hadoop /usr/lib/hadoop /usr/lib/hadoop-0.20-mapreduce /usr/lib/hadoop-hdfs /usr/lib/hadoop-yarn /usr/lib/hadoop-mapreduce /var/run/hadoop-0.20-mapreduce /var/run/hadoop-hdfs /var/run/hadoop-yarn /var/run/hadoop-mapreduce /var/lib/hadoop /var/lib/hadoop-hdfs /var/lib/hadoop-yarn /var/lib/hadoop-mapreduce /var/log/hadoop-0.20-mapreduce /var/log/hadoop-hdfs /var/log/hadoop-yarn /var/log/hadoop-mapreduce
スタンドアロンモードの場合は特に設定も変更しなくて良いので、そのまま使用できます。
# hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.5.1.jar grep /etc/hadoop/conf output 'dfs[a-z.]+' ... # cat output/* 4 dfs.class 3 dfs.server.namenode. 2 dfs.period