主に、以下のポイントを比較しました。
修正の取り込みやアップデート | 安定性 | コスト | AMI | |
---|---|---|---|---|
EMR | ◎ | ○ | △ | △ |
CDH | △ | △ | ○ | ◎ |
1:修正の取り込みやアップデート
EMRを利用する場合、こういったことをユーザが気にする考える必要はありません。ユーザが何もしなくても、EMRは日々さまざまな修正が反映され、Hadoopのバージョンも上がっていきます。ユーザが気付かない内にバージョンが上がっていることもあるでしょう。EMRを起動したら、その中で動いているHadoopがいつの間にか新しいバージョンになっている、というイメージです。
日付 | リリース内容 | |
---|---|---|
4/2/2009 | EMRの提供開始(Hadoop 0.18) | |
6/2/2010 | Hadoop 0.20が利用可能に Hive 0.5が利用可能に Pig 0.6が利用可能に ※古いバージョン(Hadoop 0.18, Hive 0.4, Pig 0.3)も利用可能 |
|
10/19/2010 | ジョブフロー実行中のHadoopクラスタのノード数を増減ができるように | |
12/8/2010 | Hive 0.7が利用可能に | |
4/14/2011 | Termination Protectionが追加された | |
8/18/2011 | スポットインスタンスが利用可能に | |
12/11/2011 | Hadoop 0.20.205が利用可能に Pig 0.9.1が利用可能に |
|
1/17/2012 | Hive 0.7.1.1が利用可能に | |
2/28/2012 | Hive 0.7.1.2が利用可能に | |
3/13/2012 | Hive 0.7.1.3が利用可能に | |
4/9/2012 | Pig 0.9.2が利用可能に Hive 0.7.1.4が利用可能に |
|
5/30/2012 | Hive 0.8.1が利用可能に | |
6/12/2012 | MapR、HBaseをサポート開始 | |
7/9/2012 | Hive 0.8.1.2が利用可能に | |
一方、CDHの場合、定期的に新しいバージョンのディストリビューションがリリースされますが、それを利用したければユーザ自身がアップデート作業を行わなければいけません。アップデートしたけど動作がおかしい、というようなことになっては問題です。特にメジャーバージョンを上げるときなど、データの整合性をきちんと保ちながら行うのはそれほど簡単ではないでしょう※16。
※16 Upgrade from CDH1 to CDH2 - Cloudera Support
2:安定性
安定性については2010年当時の話なのであくまでも参考ですが、EMRを利用した方が比較的安定して起動している感覚を持っていました。現在は当時とは事情が違うと思うので安定性に関しては参考程度に考えてください。
3:コスト
単純なコストで比較するとEMRはやはり少し高く感じるかもしれません。詳細は後述しますが、EC2の利用料だけではなく、EMRの利用料までも別途発生するためです。ただし、CDHを使う場合には修正の取り込みやアップデート、起動に時間がかかるなどで人件費がその分掛かっていました。その分が削れると考えれば十分に元が取れるのではないでしょうか。
4:AMI
また、AWSを利用する前提だと、AMI(Amazon Machine Image)※17の取り扱いにも違いがあります。AMIとはEC2インスタンスのスナップショットのようなものです。
※17 「アミ」と発音するようです
例えば必要なライブラリをすべてインストールした状態のAMIを作成してそれをEC2インスタンス起動時に選択すれば、起動直後からライブラリが使える状態となっています。
CDHはHadoopクラスタを構築する際に利用するAMIをユーザ側で自由にカスタマイズすることが可能です。事前にカスタマイズしたAMIを用意しておけば、毎回カスタマイズしたAMIを利用することができます。
一方、EMRではAWSの指定したある特定のAMIしか利用することができませんが、このAMIもEMR側で随時更新されています※18。なお、EMRで特定のライブラリをインストールしたりHadoopの設定を変更するなどのカスタマイズを行うにはブートストラップアクションと呼ばれる仕組みを利用して起動フェーズの最後に毎回実行してあげる必要があります。ブートストラップアクションの詳細については後述します。
※18 Specify the Amazon EMR AMI Version - Amazon Elastic MapReduce
こういった点を比較して、やはり修正の取り込みやバージョンアップ作業が必要ないことが決め手となり、最終的にはEMRを採用することに決めました。我々はHadoopを利用するための環境構築やバージョンアップがしたいわけではなく、有意義なパターンを見つけるためにHadoopを利用してデータ分析を行いたかったためです。EMRはそういった方にとって非常に有効なサービスではないかと筆者は考えます。
Copyright © ITmedia, Inc. All Rights Reserved.