Apache Hadoop入門

提供: omotenashi-mind
移動先: 案内検索


Hadoopとは、巨大なサイズのデータを高速に処理することを目的に作成された分散ファイル管理システムです。

Hadoopのコアライブラリは分散ファイルシステムと汎用的なI/Oのみを提供する抽象度の高いサービスとなっていて、
HBaseを組み合わせることで列指向データベースとして利用したり、Hiveと組み合わせることでRDBのように利用するなど自由度の高い
データ管理ができるようになっています。

Hadoop導入

ここでは簡単なHadoopのインストール手順をご説明します。
まず、Hadoopは次の3つのモードを持っています。

  1. スタンドアローン(Standalone)モード
  2. 擬似分散(Psedo-Distributed)モード
  3. 完全分散(Fully-Disributed)モード



ここでは、スタンドアローンモードと擬似分散モードの設定手順について触れていきます。

前提

Hadoopを利用するためにはJDKもしくはJREが必要です。

スタンドアローンモード

まずはHadoopのダウンロードサイトから、Hadoopをダウンロードしてきます。
2015年4月時点の最新バージョンは2.6なので、2.6を選択してダウンロードします。

wget http://ftp.kddilabs.jp/infosystems/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz


展開後のフォルダ配下にある起動用シェル「etc/hadoop/hadoop-env.sh」を編集し、JAVA_HOMEのパスを必要に応じて
適切なものに書き換えてください。変更後に以下のコマンドを実行してHadoopのUsageが出力されれば設定完了です。

bin/hadoop


次に、実際にMapReduceを実行して処理結果を得るところまでを検証していきます。

Hadoopはデフォルトでスタンドアローンモード起動用の設定ファイル一式を保持しています。
それら設定を使えば簡単に起動できるようになっています。以下、簡単なテスト実行手順です。

(展開後に作成されたhadoopフォルダ内にて)

mkdir input
cp etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'


outputフォルダに処理結果が出力されていれば、無事に導入完了です。

擬似分散モード

分散モード利用にはsshとrsyncが必要です。まずは導入しましょう。

必要環境設定

sudo apt-get install ssh
sudo apt-get install rsync


続いて、擬似分散モードではlocalhostへのssh接続が必要となるため、パスワード無しでssh接続できるように設定を加えます。

ssh-keygen -t dsa -P  -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys


ssh localhost

と入力して、パスワード無しでssh接続できれば完了です。

擬似分散モード用設定ファイルの準備

展開したhadoopフォルダ配下にある2つのファイルに設定を加えていきます。

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


サービス起動

設定まで完了したら、いよいよHadoopサービスの起動です。
最初に実行を行う前に、ファイルシステムのフォーマットを実施します。

bin/hdfs namenode -format


フォーマットが完了したらサービスの起動を行います。

sbin/start-dfs.sh


サービス起動後、「http://localhost:50070/」にアクセスして管理コンソールが表示されたら無事にHadoopサービスの起動完了です。

ジョブ実行

最後にジョブの実行です。
ジョブを実行するためには、まずMapReduceが利用するHDFS上のフォルダが必要です。次のコマンドで必要なフォルダを作成します。

bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/<username>

<username>にはHadoopでジョブを実行するユーザーの名前を指定するようにしてください。

HDFS上に作業用フォルダが作成できたら、入力ファイルをHDFS上に配置します。

bin/hdfs dfs -put etc/hadoop input

これで「put/hadoop」フォルダの内容がHDFS上のinputフォルダに配置されました。

次にMapReduceジョブの実行です。

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'


実行後の結果もHDFS上に配置されているため、確認するためには

bin/hdfs dfs -cat output/*

と実行するか、一度HDFSからローカルファイルシステムに結果を出力してから確認するようにしてください。

bin/hdfs dfs -get output output
cat output/*



サービス停止方法

sbin/stop-dfs.sh


まとめ

Hadoopの簡単な導入方法から、サンプルを利用したMapReduceジョブの実行までの流れについて触れていきました。
別の機会で、MapReduceの詳細についてまとめていきたいと思います。