はじめに

Hadoop+Hive を使って大量データの分析基盤を構築することがあります。
Hadoop+Spark を使うケースも増えています。
課題
以下のような理由で、 Hadoop+Hive / Hadoop+Spark のいずれもローカル開発環境の構築が非常に大変です。
なぜローカル開発環境の構築が大変なの?
理由1:構成するアプリケーション数が多い

Hadoop+Hive の場合を例に取ると、以下のようなアプリケーションのインストールが必要です。
- hadoop
- hadoop-client
- hadoop-conf-pseudo
- hadoop-hdfs
- hadoop-hdfs-datanode
- hadoop-hdfs-namenode
- hadoop-hdfs-secondarynamenode
- hadoop-mapreduce
- hadoop-mapreduce-historyserver
- hadoop-yarn
- hadoop-yarn-nodemanager
- hadoop-yarn-resourcemanager
これらをイチからインストールするのは非常に大変です。
理由2:設定項目が非常に多い
アプリケーション数が多いことに加えて、設定項目が非常に多いです。
誤った設定により環境が故障してしまうこともあります。
そのため、設定変更によるチューニングに足踏みしてしまうわけです。
解決策はないの?

ローカル開発環境の構築を用意にするために、 Vagrant がよい解決策となります。
Docker という方法もありますが、Windows/Linux/Macのいずれの環境での動作実績が豊富さ、ネット上での情報の集めやすさは Vagrant に軍配があがります。
作ってみました
作っては壊す ができるように、 vagrant up
コマンドを実行した際に自動的に Hadoop+Hive 環境が出来上がるような仕組みを作ってみました。
Vagrantfile と プロビジョン時に実行されるコマンド をまとめ、Githugに公開しました。
使い方
以下のコマンドを実行するだけです。
$ git clone git@github.com:genzouw/hive-pseudo-distributed.git; cd hive-pseudo-distributed/
$ vagrant up
最後に
Hadoop+Spark の組み合わせについても、上記のVagrantfile+setup.shを拡張して実現できると思います。
大小にかかわらず、フィードバッグをお待ちしております!