Hadoopに関する基本的な内容をまとめてみたものです。Hadoopに関する、Web上にすでにある解説コンテンツをまとめたサイトの抜粋です。
[Amazon EMRを使用する際のベストプラクティス] (https://www.techcrowd.jp/bigdata/bestpractice/)
[データの集約] (https://www.techcrowd.jp/bigdata/bestpractice/)
さまざまな方法でAmazon EMRに大量のデータを移動させる事が出来ますが、短期間で効率良くデータをアップロードさせるには、複数のクライアントからAWSへ同時にデータを移動させるのが重要です。
計画的にデータをアップロードすれば、本格的にAWSが利用出来る時期を早める事が出来ます。
そして、Amazon EMRにデータをアップロードする時は、大きなファイルにまとめて格納する事にも配慮するべきです。
複数のデータをファイルに集約する事で、
・アップロードの回数を減らせる
・AWS上のファイルの数が減って、パフォーマンスが向上する
・圧縮比率が高くなり、AWS上の使用容量を少なく出来る
などのメリットがあります。
小さなファイルは大きなファイルにまとめてAWSにアップロードするのが、効率的な方法です。
[データの圧縮] (https://www.techcrowd.jp/bigdata/bestpractice/)
データの圧縮についても、
・ストレージコストの削減
・データ処理を高速化して、パフォーマンスを向上させる
などの効果がありますので、適切な圧縮方式を選ばなくてはなりません。
圧縮方式を選ぶ時は、
・高速でファイルを圧縮と解凍をする必要があるか
・データストレージをどの程度節約するのか
などを検討して、圧縮方式を選ぶ必要があります。
[パフォーマンスチューニングするには] (https://www.techcrowd.jp/bigdata/bestpractice/)
Amazon EMRのパフォーマンスを向上させるベストプラクティスには、いくつかの方法があります。
マップタスク関連の改善
・存続期間の短いマップタスクがある時は小さなファイルを処理しているので、大きなファイルにまとめる
・マッパー出力を圧縮する
・バッファの容量を増やして、マップタスクがディスクに書き込む回数を減らす
リデューサータスク関連の改善
・リデューサーが待機状態にならないように、リデューサーの数を制限する
・メモリ容量を増やして、メモリ内を参照するだけ済むようにする
[一時的クラスタと永続的クラスタを使い分ける] (https://www.techcrowd.jp/bigdata/designpattern-3/)
ジョブが実行している間だけ動作しているが一時的クラスタで、ジョブに関係なく動作し続けるのが永続的クラスタです。
一時的クラスタは、
・立ち上がっている期間が短いので、コストを節約出来る
・運用の手間が掛からない
などのメリットがあります。
永続的クラスタには、
・複数のジョブで、データを共有出来る
・一時的クラスタを何回も立ち上げて使うよりも、コストを削減出来る場合がある
などのメリットがあります。
・データのロード時間
・処理時間
・ジョブ数
などを調べて、どのようにAmazon EMRを使うのかを決める必要があります。
[タスクノードの使い方を工夫] (https://www.techcrowd.jp/bigdata/designpattern-3/)
Amazon EMRは、
・クラスタを管理するマスターノード
・HDFSを使ってデータを格納するコアノード
・タスクを実行するタスクノード
から構成されますが、タスクノードの使い方を工夫する事でコストを削減出来たり、パフォーマンスの向上が期待出来ます。
・スポットインスタンスの活用
スポットインスタンス上でタスクノードを動かせば、コストを節約出来ます。
・大量のタスクノードを使う
S3からHDFSにデータをアップロードする時に、スポットインスタンス上に大量のタスクノードを動かす事で、効率的なアップロードが可能となります。