|
EMR(Elastic MapReduce)は、Hadoopを実行できるサービス。
EMRでは、1つのHadoopクラスターをEMRインスタンスと呼ぶ。
EMRインスタンスはEC2インスタンスを何台も使ってHadoopクラスターを組む。
使用する際にEMRインスタンスを起動し、使い終わったら削除するのが基本的な使い方。
(使うときだけ大量のサーバーを使用する、まさにクラウドらしいサービス)
データは(HDFS上に永続的に保存するのではなく、)S3から読み込み、S3上に保存するのが基本。
したがって、NameNodeの冗長性はEMRでは必要ない。
(物理サーバーのHadoopクラスターの場合、NameNodeをずっと起動し続けている(あるいは毎回同じサーバーを使う)から故障の考慮をする必要があるが、
EMRは毎回新たに作り直すので壊れる可能性は低いし、壊れたとしても別のEMRインスタンスを起動すればよい)
(そういう意味では、DataNodeの冗長性もあまり必要なさそう。並列で処理する為にデータを多重化する(同じデータを複数のDataNodeに置く)意味はあるが)
EMRを構成するEC2インスタンス(Amazon Linux?)では、タイムゾーンがデフォルト(UTC)になっている。[2014-01-25]
EMRのマスターノード上でdateコマンドを日本時間で使いたい場合は/etc/localtimeを設定しておく。
(参考:tetsuya_odakaさんのAmazon
Elastic MapReduceを使う(その3:コマンドラインツールでBootStrapActionを動かす))
ただし、/etc/localtimeはJavaには効かないようなので、Javaアプリでログを日本時間で出力したい場合は環境変数TZも(JST-9に)設定しておく必要がある。
(Asakusaアプリケーションの場合は、ASAKUSA_HOME一式をマスターノードに配置し、ASAKUSA_HOME/yaess/conf/env.shに「export
TZ=JST-9」を追加しておけば、YAESSのログは日本時間で出力されるようになる)