Ambari + EC2 spot instanceでHadoopクラスタを30分で作る
軽い事前準備はいりますが、Ambariを使うと複数台のHadoopクラスタを30分くらいで一気に作ることができます。
タイトルではEC2 spot instanceとか書いてますが、単にマシン大量に用意しているだけなんで別にAzureとかGCEでも他のIaaSでもいけるかもしれません。またここではHDP使ってますが同じくAmbari使ってるPivotalHDもいけるはずです。
ドキュメント
細かい設定は後ほど書きますが、Ambari-server入れたマシンとSELinuxとか切ったイメージは用意しておく必要はあります。あとセキュリティの設定もしておく必要があります。
んで、インスタンスをspotで大量作成。こんなことしなくてもm3.xlargeとかを少量建てたほうが効率いいでしょうけど。
建ちました。
Ambari-serverマシン立ちあげて、ログインします。
インストールするHDPのバージョンを選びます。URLの空欄は、HDPのRPMを入れた内部IPを入れています。s3をrpmリポジトリにするのもいいかもしれません。
インストール先を入力します。例によって各マシンの内部IPです。今回30個Spot建てたので30個分IP貼っつけてます。
インストールするコンポーネントを選びます。この前にHBaseとか、OozieとかSparkを選択する画面があります。
Hiveは管理用のパスワードが必要なので、入れています。
インストールを進めます。あとは勝手にNamenodeやDatanodeをインストールしていきます。
インストールが終わりました。実際インストール自体は30分くらいなのですが、今回はSpotの価格が安くていくつかインスタンスが落とされたため、価格を再設定して立てなおしたりしましたのでもっと時間がかかっています。
セットアップが終わったら結果が表示されます。今回はセットアップ自体は22分で出来ています。
30台のクラスターが並んでいます。
Map=20でPIのサンプルを回したときの結果です。
使い終わったら、各インスタンスをterminateします。ディスク自体はEBSで残しておくこともできますが、再度インスタンス作るときに内部IPが変わるのでその辺別途設定がいるかと思います。Blueprintとか使って作りなおした方が速いかもしれませんが、まだBlueprintを把握してないのでそれはこの次。あとAmbari-serverは
$ ambari-server stop
$ ambari-server reset
すると再度初期セットアップに戻ります。
というわけで、Ambariを使って素早くHadoopクラスタを作る方法について書きました。ただ大規模計算をしたいならEMRを使った方がいいかもしれませんが、一度Hadoopクラスタを複数台でいじってみたいって人にはいいかもしれません。
後日やる気が出たら詳しい設定方法について書いていきます。