Q: Amazon EMR とは何ですか?

Amazon EMR は、企業、研究者、データアナリスト、および開発者が、簡単に、そして費用対効果の高い方法で、莫大な量のデータを処理することができるようにするウェブサービスです。これはホストされた Hadoop フレームワークを利用しています。Hadoop フレームワークは、Amazon Elastic Compute Cloud(Amazon EC2)および Amazon Simple Storage Service(Amazon S3)の、ウェブスケールのインフラストラクチャで稼動します。

Q: Amazon EMR でできることは何ですか?

Amazon EMR を使用すれば、ウェブインデックス化、データマイニング、ログファイル分析、マシンラーニング、財務分析、科学シミュレーション、生物情報科学研究など、莫大なデータ処理を必要とするタスクを、能力の規模を自在に調整しながら、簡単にセットアップできます。Amazon EMR により、データを集中的に高速処理または分析することができます。時間のかかる Hadoop クラスターのセットアップ、管理、調節や、それらが備える計算能力についての心配は要りません。

Amazon EMR は、大量のデータを迅速で効率的に処理する必要のある問題に最適です。このウェブサービスのインターフェイスにより、処理ワークフローを構築し、実行中のクラスターの進行度をプログラムで監視できます。さらに、AWS マネジメントコンソールのシンプルなウェブインターフェイスを使用してクラスターを起動し、Amazon EC2 インスタンスのクラスターで処理のための集中的なコンピューティングを監視できます。

Q: Amazon EMR は誰が使用できますか?

Amazon EMR は強力なデータ分析を簡単に使用する必要がある方に最適です。開発者ガイドおよび AWS ビッグデータブログで入手できるサンプルアプリケーションを試すのに、ソフトウェア開発の経験は必要ありません。

Q: Amazon EMR で以前はできなかったことで、新たにできるようになったことはありますか?

Amazon EMR は、時間のかかるセットアップや管理の複雑さを劇的に削減します。また Hadoop クラスターの調節や、それらが備えるコンピューティング能力の複雑さも解消されます。大規模な Hadoop クラスターを、数時間や数日ではなく、数分以内にすぐに処理を開始できます。クラスターは処理が完了すると特に指定するのでない限り自動的に終了するので、不要になったリソースのための支払いは発生しません。

このサービスを使用すれば、ウェブのインデックス化、データマイニング、ログファイル分析、機械学習、財務分析、科学的シミュレーション、生物情報科学研究などのアプリケーションに対して、データ集約型のタスクを素早く実行することができます。

ソフトウェア開発者として、独自のより洗練されたアプリケーションを開発して実行することもできます。これによりスケジューリング、ワークフロー、モニタリングその他の機能を追加することができます。

Q: Amazon EMR の背後で動いているデータ処理エンジンは何ですか?

Amazon EMR はその分散型データ処理エンジンとして、Apache Hadoop を使用しています。Hadoop はオープンソースの Java ソフトウェアフレームワークであり、商用ハードウェアの大規模なクラスタ上で稼動する、データ集約型の分散型アプリケーションをサポートしています。Hadoop は、「MapReduce」と呼ばれるプログラミングモデルを実装しています。ここでデータは数多くの作業単位に分割され、そのそれぞれをクラスタ内の任意のノード上で実行することができます。このフレームワークは開発者、企業、スタートアップ企業によって広く使用されており、何千もの商用マシンのクラスタ上で最大ペタバイトまでのデータを処理するために、信頼性の高いソフトウェアプラットフォームであることが証明されています。

Q: Amazon EMR クラスターとは何ですか?

Amazon EMR は、過去に Amazon EMR クラスター(およびこのクラスターに割り当てられたすべての処理ステップ)を「クラスター」と呼んでいました。どのクラスターもすべて、「j-」で始まる一意の識別子を持っています。

Q: クラスターのステップとは何ですか?

クラスターのステップはユーザー定義の処理単位で、データを操作する 1 つのアルゴリズムに対しておおまかにマッピングを行います。ステップとは、Java jar として、または Java、Ruby、Perl、Python、PHP、R、もしくは C++ で書かれたストリーミングプログラムとして実装された Hadoop MapReduce アプリケーションです。例えば、単語が文書に登場する頻度をカウントし、頻度数ごとにそれらを並び替えて出力するために、最初のステップは、各単語の出現回数をカウントする MapReduce アプリケーションとなります。2つめのステップは、カウント数を基にして、最初のステップからの出力を並び替える MapReduce アプリケーションとなります。

Q: クラスターの各状態について教えてください。

STARTING – クラスターにより EC2 インスタンスのプロビジョニング、開始、設定が実行されます。
BOOTSTRAPPING – クラスタでブートストラップアクションを実行します。
RUNNING – クラスターの 1 ステップが現在実行中です。
WAITING – クラスターは現在アクティブですが、実行中のステップがありません。
TERMINATING – クラスターはシャットダウンの途中です。
TERMINATED – クラスターは正常にシャットダウンされました。
TERMINATED_WITH_ERRORS – クラスターはシャットダウンされましたが、エラーが発生しました。

Q: ステップの各状態について教えてください。

PENDING – ステップが実行待ちの状態です。
RUNNING – ステップが現在実行中です。
COMPLETED – ステップが正しく完了しています。
CANCELLED – ステップが実行前にキャンセルされています – 前のステップが失敗しているか、またはクラスターが実行可能となる前に終了したためです。
FAILED – ステップを実行中に失敗しました。

Q: EMR のベストプラクティスにはどのようなものがありますか?

EMR を本番環境で実行する場合は、AMI のバージョン、Hive のバージョン、Pig のバージョンなどを指定して、各バージョンが突然変化することがないように(例えば、EMR が後で新しいバージョンのサポートを追加した場合)確認する必要があります。クラスターがミッションクリティカルな役割を果たす場合、スポットインスタンスはタスクノードに使用する分のみとします。スポット料金が上昇した場合に、インスタンスを失う可能性があるためです。開発時には、ログ記録を使用しデバッグを有効にすることで、エラーを迅速に突き止めて訂正します。GZIP を使用する場合は、GZIP ファイルの分割が不可能なことから、ファイルのサイズを 1~2 GB に保ってください。Amazon EMR のベストプラクティスに関するホワイトペーパーをダウンロードするには、こちらをクリックしてください。

トップに戻る >>


Q: Amazon EMR にアクセスする方法を教えてください。

AWS マネジメントコンソール、コマンドラインツール、SDK、または EMR API を使用することにより、Amazon EMR にアクセスできます。

Q: クラスターの起動方法について教えてください。

簡単なクラスターの申請フォームに入力することにより、AWS マネジメントコンソールを通じて、クラスターを起動することができます。申請フォームでは、クラスター名、入力データの Amazon S3 内の場所、処理アプリケーション、希望するデータの出力場所、および使用したい Amazon EC2 インスタンスの数とタイプを指定します。オプションで、クラスターログファイルと SSH キーを格納する場所を指定して、稼働中にクラスターにログインできます。あるいは、RunJobFlow API またはコマンドラインツールの 「create」コマンドを使用して、クラスターを起動できます。

Q: Amazon EMR の使用を開始する方法を教えてください。

Amazon EMR にサインアップするには、Amazon EMR 詳細ページ(http://aws.amazon.com/elasticmapreduce)にある、[今すぐ申し込む] ボタンをクリックします。Amazon EMR にアクセスするには、Amazon EC2 および Amazon S3 にサインアップする必要があります。これらのサービスにまだサインアップしていない場合は、Amazon EMR のサインアップ処理中にそれを行うための画面が表示されます。サインアップの後、Amazon EMR 文書をご参照ください。こちらには、サービスを活用するためのベストプラクティスとなる当社の入門ガイドが含まれます。

Q: クラスターの終了方法を教えてください。

AWS マネジメントコンソールでクラスターを選択し、[Terminate] ボタンをクリックすることによって、いつでもクラスターを終了することができます。あるいは、TerminateJobFlows API を使用することができます。実行中のクラスターを終了する場合、Amazon S3 に存在していない結果は失われ、すべての Amazon EC2 インスタンスはシャットダウンします。

Q: Amazon EMR では多重同時クラスターがサポートされますか?

はい。すでに 1 つ以上のクラスターを実行している場合でも、いつでも新しいクラスターを作成できます。

Q: いくつのクラスターを同時に実行することができますか?

クラスターは好きな数だけ開始できます。すべてのクラスターに対して、インスタンス数は 20 に制限されています。さらにインスタンスを必要とする場合は、Amazon EC2 インスタンス申請フォームにご記入ください。お客様のユースケースならびにインスタンスの増加を検討させていただきます。お客様の Amazon EC2 上限数がすでに引き上げられている場合は、新しい上限数が Amazon EMR のクラスターに割り当てられます。

トップに戻る >>


Q: コードサンプルはどこにありますか?

これらの記事とチュートリアルにあるサンプルコードを確認してください。

Q: データ処理アプリケーションの開発方法について教えてください。

デスクトップでデータ処理ジョブを開発できます。例えば、IBM MapReduce Tools for Eclipse(http://www.alphaworks.ibm.com/tech/mapreducetools)などの Eclipse や NetBeans プラグインを使います。これらのツールを使うと、MapReduce ジョブを簡単に開発およびデバッグして、自分のマシンでテストできます。さらに、1 つ以上のインスタンスを使用して、Amazon EMR で直接クラスターを開発することもできます。

Q: コマンドラインツールまたは API を使用する場合と、AWS マネジメントコンソールを使用する場合のそれぞれの利点は何ですか?

コマンドラインツールまたは API は、プログラムでクラスターを起動し、実行中のクラスターの進行度を監視する能力を提供しており、クラスターに関連する追加のカスタム機能(複数の処理ステップ、スケジューリング、ワークフロー、モニタリングなど)の作成や、その他の Amazon EMR お客様向けの付加価値のあるツールもしくはアプリケーションの構築を行うことができます。対照的に、AWS マネジメントコンソールは使いやすいグラフィカルインターフェイスを提供しており、ウェブブラウザから直接クラスターを起動したり、監視したりすることができます。

Q: すでに実行中のクラスターにステップを加えることができますか?

はい。ジョブが実行中になっている場合、AddJobFlowSteps API を使って、オプションでステップを追加することができます。AddJobFlowSteps API は、現在のステップシーケンスの終わりに新しいステップを追加します。クラスターやデバッグで条件付きロジックを実装するために、この API を使用したい場合があるかもしれません。

Q: クラスターを継続的に実行できますか?

はい。アライブフラグで開始された Amazon EMR のクラスターは、明示的に停止されるまで継続します。これによりお客様は、オンデマンドでステップをクラスターに追加できます。これを使ってクラスターの開始を繰り返し待つことなくクラスターの論理構造をデバッグできます。持続的なクラスターは長期実行するデータウェアハウスクラスターに使うこともできます。これを、データウェアハウス、および Hive や Pig といった Hadoop の上で実行される分析パッケージと組み合わせることができます。

Q: クラスターの完了時に通知を受けることはできますか?

Amazon SNS に登録して、クラスターが終了したときに SNS トピックに投稿されるようにすることができます。また、AWS マネジメントコンソールでクラスターの進行度を確認したり、コマンドライン、SDK、または API を使用してクラスターの状態を取得したりすることもできます。

Q: Amazon EMR でサポートされているプログラム言語はどのようなものですか?

Java を使用して Hadoop カスタム jars を実装することができます。あるいは、Perl、Python、Ruby、C++、PHP などのその他の言語、または Hadoop Streaming 経由で R を使用することができます。Hadoop Streaming の使い方については、開発者ガイドをご参照ください。

Q: Amazon EMR でサポートされている OS のバージョンは何ですか?

現在、Amazon EMR では 32 および 64 ビットモードの Debian/Squeeze がサポートされています。

Q: クラスターの実行中に Hadoop UI を閲覧できますか?

はい。Hadoop UI にアクセスする方法については、開発者ガイドの Hadoop UI セクションをご参照ください。

Q: Amazon EMR ではサードパーティのソフトウェアパッケージがサポートされていますか?

はい。お客様のクラスタにサードパーティのソフトウェアパッケージをインストールするために推奨される方法は、ブートストラップアクションを使用することです。代わりに、任意のサードパーティのライブラリを、お客様の Mapper または Reducer 実行可能ファイルに直接含めることができます。また、Hadoop 分散キャッシュメカニズムを使用して静的にコンパイルした実行可能ファイルをアップロードすることもできます。

Q: Amazon EMR でサポートされているのはどのバージョンの Hadoop ですか?

Amazon EMR でサポートされている最新のバージョンについては、ドキュメントを参照してください。

Q: Hadoop 以外のデータ処理エンジンを使用できますか?

はい。EMR の一部のお客様は、処理エンジンとして Spark および Shark(インメモリ MapReduce およびデータウェアハウス)を使用できます。使用方法については、この記事を参照してください。

Q: Amazon はオープンソースコミュニティのために、Hadoop の改善に貢献していますか?

はい。Amazon EMR はオープンソースコミュニティーに積極的に参加しており、Hadoop ソースに対する数多くの改善に貢献しています。

Q: Amazon EMR では、サポートされている Hadoop のバージョンが更新されますか?

Amazon EMR は、コミュニティによる Hadoop のリリースに基づき、サポートする Hadoop のバージョンを定期的に更新しています。また、Amazon EMR は、いくつかの Hadoop のリリースを省略する可能性があります。

Q: Amazon EMR では、古い Hadoop バージョンのサポートがどれくらい継続されますか?

Amazon EMR サービスは、古い Hadoop バージョンが廃止されてから数か月後に、該当するサポートを終了します。ただし、Amazon EMR API は下位互換性があるため、これらの API を使用してツールを構築した場合は、Amazon EMR が使用中の Hadoop のバージョンを更新しても、引き続き機能します。

トップに戻る >>


Q: クラスターのデバッグ方法について教えてください。

まずデバッグしたいクラスターを選択し、次に [Debug] ボタンをクリックして、AWS マネジメントコンソールにあるクラスターデバッグウィンドウにアクセスします。これにより、お客様は、クラスターのステップ、ジョブ、タスク、またはタスクの試みの進行度を追跡し、問題を特定することができます。あるいは、SSH を直接、クラスターを実行中の Amazon Elastic Compute Cloud(Amazon EC2)インスタンスに投入し、好みのコマンドラインデバッガを用いてクラスターのトラブルシューティングを行うこともできます。

Q: クラスターデバッグツールについて教えてください。

クラスターデバッグツールは AWS マネジメントコンソールの一部であり、クラスターのステップ、ジョブ、タスク、またはタスク試行における進行度の追跡や問題の特定を行うことができます。クラスターデバッグツールにアクセスするには、最初にデバッグするクラスターを選択してから、[Debug] ボタンをクリックします。

Q: クラスターのデバッグを有効にする方法を教えてください。

デバッグを有効にするには、AWS マネジメントコンソールでクラスターを作成する際に、[Enable Debugging] フラグを設定する必要があります。あるいは、クラスターの作成時にコマンドラインクライアントで --enable-debugging と --log-uri フラグを指定することもできます。

Q: デバッグクラスターウィンドウの使用方法のマニュアルはどこにありますか?

デバッグクラスターウィンドウにアクセスして使用する方法の手順については、開発者ガイドの AWS マネジメントコンソールのセクションをご覧ください。

Q: デバッグクラスターウィンドウでデバッグできるクラスターの種類はどのようなものですか?

カスタム JAR、ストリーミング、Hive、Pig など、現在 Amazon EMR でサポートされている全種類のクラスターをデバッグすることができます。

Q: クラスターのデバッグを使用するために、Amazon SimpleDB にサインアップする必要があるのはなぜですか?

Amazon EMR は、Amazon SimpleDB のお客様のアカウントにおいて、Hadoop のジョブ、タスク、タスク試行についての状態情報を格納します。ここで Amazon SimpleDB にご登録ください。

Q: Amazon SimpleDB に登録せずに、クラスターのデバッグ機能を使用できますか?

Amazon SimpleDB への登録を行っていない場合、クラスターのステップとステップログを閲覧することはできますが、Hadoop のジョブ、タスク、またはタスク試行を閲覧することはできません。

Q: Amazon SimpleDB から、過去のクラスターデータを削除できますか?

はい。Amazon EMR がお客様のために作成した Amazon SimpleDB のドメインを削除することができます。手順については、Amazon SimpleDB ドキュメントをご参照ください。

トップに戻る >>


Q: Amazon S3 へのデータの入力方法について教えてください。

Amazon S3 の API を使用して、データを Amazon S3 にアップロードすることができます。あるいは、数多くのオープンソースまたは商用クライアントを使用して、簡単にデータを Amazon S3 にアップロードすることができます。

Q: 完了したクラスターのログはどのように取得するのですか?

Hadoop のシステムログおよびユーザーログが、クラスターの作成時に指定された Amazon S3 バケットに配置されます。

Q: ログは圧縮されますか?

いいえ。今回、ログは Amazon S3 に移動されるため、Amazon EMR はそれらの圧縮を行いません。

Q: インターネットまたは Amazon S3 以外の場所から自分のデータを読み込むことができますか?

はい。Hadoop アプリケーションは、インターネット上のどこからでも、また、他の AWS サービスからでもデータを読み込めます。インターネットからデータを読み込む場合、EC2 帯域料金が適用されます。Amazon EMR でも、DynamoDB のデータへの Hive ベースのアクセスをご利用いただけます。

トップに戻る >>


Q: Amazon EMR は入力データの処理時間を見積もることができますか?

いいえ。クラスターおよび入力データはそれぞれ異なっているため、当社はお客様のジョブに要する時間を見積もることはできません。

Q: Amazon EMR の費用はいくらですか?

AWS のその他のサービスと同様に、お客様の利用に応じた従量課金となります。最低料金や、前払いの義務、または長期契約といったものはありません。通常の Amazon EC2 および Amazon S3 料金とは別に Amazon EMR の料金がかかります。

Amazon EMR の料金については、EMR の料金表をご覧ください。

Amazon EC2、Amazon S3、および Amazon SimpleDB の料金は別々に請求されます。Amazon EMR の料金は、クラスターが処理を開始してから終了するまで、各インスタンスタイプについて消費されるインスタンス時間ごとに課金されます。1時間未満の各インスタンス時間は、1時間分として請求されます。Amazon EC2 インスタンスタイプ、Amazon EC2 スポット料金、Amazon EC2 リザーブドインスタンス料金、Amazon S3 料金、Amazon SimpleDB 料金の詳細については、以下のリンクをクリックしてください。

Amazon EC2 インスタンスタイプ

Amazon EC2 リザーブドインスタンス料金表

Amazon EC2 スポットインスタンス価格設定

Amazon S3 料金表

Amazon SimpleDB 料金表

Q: Amazon EMR クラスターの請求対象期間はいつからいつまでですか?

Amazon EMR がお客様のクラスターの実行を開始すると、請求が開始されます。実際に使用したリソース分に対してのみお支払いいただきます。例えば、Amazon EMR のクラスターのために、100 の Amazon EC2 スタンダードスモールインスタンスを立ち上げたとします。この場合、Amazon EMR のコストは毎時 0.015 USD 増加します。Amazon EC2 インスタンスはすぐにブートを開始しますが、それらのすべてが必ずしも同時に開始するわけではありません。Amazon EMR は、タスク処理を受け付けられるように、各インスタンスの起動時を記録し、それらをクラスターに登録します。

リクエストを起動してから最初の 10 分間、Amazon EMR はクラスターを開始(お客様の全インスタンスが利用可能な場合)するか、または可能な限り多くのインスタンスを登録します。10 分間が経過すると、Amazon EMR は、リクエストされたインスタンスの 90% が利用可能となった時点で、速やかにクラスターの処理および課金を開始します。リクエストされたインスタンスの残り 10% も登録されているため、Amazon EMR は、これらのインスタンスに対しても同様に課金を開始します。

そのため上記の例では、リクエストの起動開始後 10 分間でリクエストされたインスタンス 100 がすべて利用可能な場合は、クラスターが完了する限り、1 時間に付き 1.50 USD(100*0.015 USD)が課金されます。その 10 分間でリクエストされたインスタンスの 90 のみが利用可能であった場合は、これがクラスターを実行するインスタンス数である限り、1 時間に付き 1.35 USD(90*0.015 USD)が課金されます。残りの 10 インスタンスが登録された場合、クラスターの残りが完了する限り、1 時間に付き 1.50 USD(100*0.015 USD)が課金されます。

各クラスターは、以下のいずれかが発生するまで実行されます: TerminateJobFlows API 呼び出し(または同等のツール)でクラスターを終了する、クラスターがそれ自体をシャットダウンする、ソフトウェアまたはハードウェアの障害のためにクラスターが終了する。消費される 1 時間未満のインスタンス時間は、1 時間分として請求されます。

Q: Amazon EMR、Amazon EC2、および Amazon S3 の使用量の追跡はどこで行えますか?

AWS アカウントアクティビティページで、使用量を追跡することができます。

Q: 各クラスターに対してどれだけのインスタンス時間が消費されるのか追跡できますか?

はい。AWS マネジメントコンソールで、各クラスターには標準インスタンス時間の欄があります。ここにはそれまでクラスターが使用した時間の概数が表示されています。標準インスタンス時間とは、以下の定義基準に基づいた処理時間(インスタンスを実行させた時間)のことです: m1.small の 1 時間 = 1 標準処理時間

  • m1.small の 1 時間 = 1 標準処理時間
  • m1.medium の 1 時間 = 2 標準処理時間
  • m1.large の1時間 = 4 標準処理時間
  • m1.xlarge の1時間 = 8 標準処理時間
  • c1.medium の1時間 = 2 標準処理時間
  • c1.xlarge の 1 時間 = 9 標準処理時間
  • m2.xlarge の 1 時間 = 7 標準処理時間
  • m2.2xlarge の 1 時間 = 14 標準処理時間
  • m2.4xlarge の 1 時間 = 27 標準処理時間
  • cc1.4xlarge の 1 時間 = 21 標準処理時間
  • cg1.4xlarge の 1 時間 = 34 標準処理時間
  • cc2.8xlarge の 1 時間 = 39 標準処理時間
  • hi1.4xlarge の 1 時間 = 48 標準処理時間
  • hs1.8xlarge の 1 時間 = 71 標準処理時間

これは概算値であり、請求目的で使用されるものではありません。請求に使用される Amazon EMR の使用量については、AWS アカウントアクティビティページをご覧ください。

Q: Amazon EMR は Amazon EC2 オンデマンドインスタンス、スポットインスタンス、リザーブドインスタンスをサポートしていますか?

はい。Amazon EMR は、オンデマンド、スポット、リザーブドの各インスタンスをシームレスにサポートしています。Amazon EC2 リザーブドインスタンスの詳細については、ここをクリックしてください。Amazon EC2 スポットインスタンスの詳細については、ここをクリックしてください。

Q: 価格には税金が含まれていますか?

別途記載がない限り、表示される料金にはVAT、 売上税その他取引に対して適用される一切の税金等及び関税は含まれません。日本の居住者であるお客様が東京リージョンをご利用になった場合には、料金とあわせて別途消費税をご請求させて頂きます。詳しくはこちら

インスタンスサイズ 正規化係数
スモール 1
ミディアム 2
ラージ 4
エクストララージ 8
2xlarge 16
4xlarge 32
8xlarge 64

例えば、10 ノードの r3.8xlarge クラスターを 1 時間実行した場合、コンソールに表示される標準インスタンス時間の合計数は 640(10(ノード数) x 64(正規化係数) x 1(クラスターを実行した時間数) = 640)となります。

これは概算値であり、請求目的で使用されるものではありません。請求に使用される Amazon EMR の使用量については、請求 & コスト管理コンソール をご覧ください。AWS では最近、インスタンスの重みを正確に反映するために正規化係数を変更しましたが、正規化係数が月額料金に影響することはありません。

Q: Amazon EMR では、Amazon EC2 のオンデマンドインスタンス、スポットインスタンス、リザーブドインスタンスがサポートされていますか?

はい。Amazon EMR は、オンデマンド、スポット、リザーブドの各インスタンスをシームレスにサポートしています。Amazon EC2 リザーブドインスタンスの詳細については、ここをクリックしてください。Amazon EC2 スポットインスタンスの詳細については、ここをクリックしてください。


Q: 料金は税込み価格ですか?

別途記載がない限り、表示される料金には VAT、売上税、その他取引に対して適用される一切の税金等および関税は含まれません。日本の居住者であるお客様が東京リージョンをご利用になった場合には、料金とあわせて別途消費税をご請求させて頂きます。詳細はこちらをご覧ください。

トップに戻る >>


Q: クラスターの実行中に、自分のデータが他の人に閲覧されないようにするにはどうすればよいですか?

Amazon EMR は、インスタンスを 2 つの Amazon EC2 セキュリティグループで開始します。1 つはマスターであり、もう 1 つはスレーブです。マスターセキュリティグループには通信用に開いたポートがあり、これを使ってサービスを行っています。また SSH ポートが開いており、起動時に指定されたキーを使用して、SSH をインスタンスに対して許可することができます。スレーブは別のセキュリティグループで開始します。これらはマスターのインスタンスとのやりとりのみを許可します。デフォルトでは、両セキュリティグループ共に、他のお客様に所属する Amazon EC2 インスタンスなど、外部ソースからのアクセスを許可しないように設定されています。お客様のアカウント内にセキュリティグループが存在するため、標準 EC2 ツールまたはダッシュボードを使用して、それらの再設定を行うことができます。EC2 セキュリティグループの詳細については、ここをクリックしてください。

Q: データはどれほど安全ですか?

Amazon S3 は、格納されているデータを未許可のアクセスから保護する認証メカニズムを提供しています。データをアップロード中のお客様が他者を指定しない限り、そのお客様のみがデータにアクセスすることができます。Amazon EMR のお客様は、安全な送信のために HTTPS プロトコルを使用して、Amazon S3 にデータを送信することもできます。さらに、Amazon EMR は常に HTTPS を使用して、Amazon S3 と Amazon EC2 の間でデータのやりとりを行います。さらにセキュリティを強化するために、Amazon S3 にアップロードを行う前に、一般的なデータ圧縮ツールを用いて、入力データの暗号化を行うことができます。その後 Amazon EMR がデータを Amazon S3 から取得する際、そのクラスターを開始するために、復号のステップを追加する必要があります。

Q: セキュリティまたはコンプライアンス監査のために、自分のアカウントで実行したすべての EMR API 呼び出しの履歴を取得することはできますか?

はい。AWS CloudTrail はアカウントに対する AWS API 呼び出しを記録し、ログファイルを配信するウェブサービスです。CloudTrail で生成される AWS API の呼び出し履歴を利用して、セキュリティの分析、リソース変更の追跡、およびコンプライアンスの監査を行うことができます。CloudTrail の詳細については、AWS CloudTrail の詳細ページを参照してください。CloudTrail を有効にするには、CloudTrail の AWS マネジメントコンソールにアクセスしてください。

トップに戻る >>


Q: Amazon EMR ではどのようにアベイラビリティーゾーンが使用されますか?

Amazon EMR は、同一の Amazon EC2 アベイラビリティーゾーン内において付与される 1 クラスターのためにすべてのノードを起動します。同一のゾーン内でクラスターを実行することにより、ジョブフローのパフォーマンスが改善されます。なぜならより高いデータアクセス速度が提供されるからです。デフォルトにより、Amazon EMR はクラスターを実行するために最も利用性の高いリソースを持つアベイラビリティーゾーンを選択するようになっています。ただし必要ならば、別のアベイラビリティーゾーンを指定することもできます。

Q: どのリージョンでこの Amazon EMR を利用できますか?

サポートされる Amazon EMR AWS リージョンのリストについては、すべての AWS グローバルインフラストラクチャの AWS リージョン表をご参照ください。

Q: クラスターを実行するためにどのリージョンを選択する必要がありますか?

通常、クラスターを作成する場合、お客様のデータが存在しているリージョンを選択する必要があります。

Q: 米国リージョンで実行中のクラスターにおいて欧州のデータを使用する、またはその逆を行うことができますか?

はい、できます。データを1つのリージョンから他のリージョンへ転送する場合、回線料金が課金されます。回線料金情報については、EC2 詳細ページの料金セクションをご参照ください。

Q: AWS GovCloud (米国) リージョンは何が違いますか?

AWS GovCloud(米国)リージョンは米国政府関連機関とその顧客向けに設計されています。このリージョンは US ITAR の要件に準拠しています。GovCloud では、EMR はスポットインスタンスとデバッグ有効化機能をサポートしません。EMR マネジメントコンソールは、GovCloud ではまだご利用いただけません。

トップに戻る >>


Q: Amazon EMR では、Amazon EC2 と Amazon S3 がどのように使用されますか?

お客様は入力データとデータ処理アプリケーションを Amazon S3 にアップロードします。その後 Amazon EMR は、お客様に指定された通りにいくつかの Amazon EC2 インスタンスを起動します。S3N プロトコルを使用する Amazon S3 からの入力データを、起動した Amazon EC2 インスタンスに投入する間に、サービスはクラスターの実行を開始します。クラスターが完了すると、Amazon EMR は出力データを Amazon S3 に転送します。Amazon S3 において、お客様はその出力データを取得したり、別のクラスターの入力値として使用したりできます。

Q: Amazon EMR では計算はどのように行われますか?

Amazon EMR は Hadoop データ処理エンジンを使用して、MapReduce プログラミングモデルで実行される計算を行うことができます。お客様は、map() および reduce() 関数に関するアルゴリズムを実行します。1つのマスターと複数のスレーブから構成された、お客様が指定する数の Amazon EC2 インスタンスをサービスが開始します。Amazon EMR はこれらのインスタンス上で Hadoop ソフトウェアを実行します。マスターノードは入力データをブロックに分割し、ブロックの処理をスレーブノードに分配します。その後各スレーブノードは、それに配分されたデータ上で map 関数を実行し、中間データを生成します。中間データは並び替えられて分割され、reducer 関数を適用するプロセスへと送信されます。これらのプロセスも、スレーブノードで実行されます。最終的に、reducer タスクからの出力がファイル中で収集されます。単一の「クラスター」には、このような MapReduce の一連のステップを必要とする場合があります。

Q: Amazon EMR の信頼性はどの程度ですか?

Amazon EMR は、Amazon の極めて可用性の高い、実績あるネットワークインフラストラクチャとデータセンターを使用して、Amazon EC2 のコンピュートインスタンスのクラスターを管理します。Amazon EMR はそのデータ処理エンジンとして、業界が認めた、耐障害性のある Hadoop ソフトウェアを使用しています。Hadoop はデータを複数のサブセットに分割して、各サブセットを2つ以上の Amazon EC2 インスタンスに割り当てます。そのため、Amazon EC2 インスタンスがデータの1サブセットの処理に失敗した場合、結果的に別の Amazon EC2 インスタンスを使用することができます。

Q: クラスターが作動して、入力データを処理するまでの時間はどれくらいですか?

Amazon EMR は、Amazon EC2 オンデマンドインスタンスのリソースセットアップをほぼ即時に開始します。インスタンスが利用できない場合、Amazon EMR はプロビジョニングが完了するまで、またはリクエストがキャンセルされるまで、クラスターのリソースのプロビジョニングを試行します。インスタンスのプロビジョニングはベストエフォートベースでなされるものであり、リクエストされるインスタンスの数、クラスターが作成される時間、およびシステム内でのリクエスト総数によって異なります。リソースのプロビジョニング後、処理を開始するまでに要する時間は通常 15 分未満です。

必要時にクラスターの能力を保証するために、1 回払いの料金を Amazon EC2 リザーブドインスタンスに支払うことにより、割引時間料金でクラウド内のインスタンス容量を確保することができます。オンデマンドインスタンスと同様に、お客様はインスタンスの実行時のためのみに利用料金を支払います。このように、リザーブド インスタンスによって、事前に必要と思われるインスタンスを確保しておけば、実際の使用量に応じて利用できるオンデマンドインスタンスの利用と組み合わせて、予測可能な利用コストをさらに削減することができます。

Q: Amazon EMR では、Amazon EC2 のどのインスタンスタイプがサポートされますか?

Amazon EMR でサポートされる EC2 インスタンスタイプは 12 種類あります(スタンダード、ハイ CPU、ハイメモリ、クラスターコンピューティング、ハイ I/O、ハイストレージなど)。スタンダードインスタンスは、メモリ対 CPU 比がほとんどの汎用アプリケーションに適しています。ハイ CPU インスタンスは、メモリ(RAM)に比べて CPU リソースが多めに確保されており、大量の計算を行うアプリケーションに適しています。ハイメモリインスタンスは、メモリの大きさが特徴であり、高スループットアプリケーションに適しています。クラスターコンピューティングインスタンスは、CPU のパフォーマンスが比較的高く、ネットワークパフォーマンスも高いため、ハイパフォーマンスコンピューティング(HPC)アプリケーションなどの、ネットワークリソースを多用するアプリケーションに適しています。ハイストレージインスタンスは、ディスク 24 台で合計 48 TB のストレージが特徴であり、非常に大きなデータセットへの順次アクセスを必要とするアプリケーション(データウェアハウス、ログ処理など)に適しています。各リージョンで利用可能なインスタンスタイプと料金の詳細については、EMR 料金表のページをご覧ください。

Q: 適切な Amazon EC2 インスタンスタイプはどのように選択できますか?

インスタンスタイプを選択する場合、リソースの利用に関するアプリケーションの特性を考慮し、最適なインスタンスファミリーを選択する必要があります。Amazon EC2 で Amazon EMR を使用する利点の 1 つは、使用した分だけ支払えばよいということです。これは様々なインスタンスタイプや分量でクラスターのパフォーマンスをテストする上で、便利で安価な手段です。最も適切なインスタンスタイプを決定するための効果的手段の 1 つは、いくつかの小さなクラスターを起動して、クラスターの評価を行うことです。

Q: クラスターに適したインスタンスの数はどのように選択できますか?

クラスターに使用するインスタンスの数は、アプリケーションに依存します。または、データの格納および処理に必要なリソースの量と、ジョブの完了に必要な時間の両方を基にしています。一般的に、処理するデータの格納にはディスクスペースの 60%を使い、残りは中間処理用に残しておくようにしてください。したがって、HDFS を3倍して計算します。5 TB の m1.xlarge インスタンスを処理し、1,690 GB のディスクスペースがある場合、クラスタには、少なくとも(5 TB×3)/(1,690 GB×.6)= 15 m1.xlarge コアノードが必要です。ジョブが大量の中間データを生成する、または入出力頻度が高い場合は、この数値を多くします。タスクノードを多くすると、処理能力が向上します。各インスタンスタイプのローカルインスタンスストレージについては、Amazon EC2 インスタンスタイプをご覧ください。

Q: クラスターを実行するのに要する時間はどれくらいですか?

クラスターの実行に要する時間は、クラスターのタイプ、入力データの分量、クラスターのために選択される Amazon EC2 インスタンスの数とタイプなど、いくつかの要因によって異なります。

Q: クラスターのマスターノードが故障した場合、Amazon EMR によりそれを回復させることができますか?

いいえ。マスターノードが故障すると、クラスターは終了し、ジョブは再実行する必要があります。Amazon EMR は現在、マスターノードまたはマスターノードの状態回復の自動フェイルオーバーをサポートしていません。マスターノードが故障すると、AWS マネジメントコンソールは、「マスターノードが終了しました」というメッセージを表示します。これはお客様が新しいクラスターを開始するためのインジケータです。お客様はクラスター内にチェックポイントを設定して、中間データ(まだ減少していないクラスターの途中で作成されたデータ)を Amazon S3 で保存できます。故障した場合は、これにより最終チェックポイントからクラスターを再開することができます。

Q: クラスター内のスレーブノードが故障した場合、Amazon EMR によりそれを回復させることができますか?

はい。Amazon EMR はスレーブの故障に対して耐障害性を有しており、スレーブノードが故障した場合でもジョブの実行を継続します。現在のバージョンでは、故障したスレーブの代わりを務めるために、Amazon EMR が自動的に別のノードをプロビジョニングすることはありません。

Q: クラスターノードに SSH で接続することができますか?

はい。SSH をクラスタノード上に配置して、Hadoop コマンドをそこから直接実行することができます。SSH をスレーブノードに配置する必要がある場合、SSH を最初にマスターノードに配置してから、次に SSH をスレーブノードに配置する必要があります。

Q: Amazon EMR で Microsoft Windows のインスタンスを使用することができますか?

現在、Amazon EMR は 32 および 64 ビットモードの Debian/Lenny をサポートしています。当社は常にお客様のフィードバックに耳を傾けており、今後さらに機能を追加することにより、データの高速処理に関するビジネス上の問題を当社のお客様が解決する手助けを行っていきます。

Q: Amazon EMR ブートストラップアクションとは何ですか?

ブートストラップアクションとは、クラスターの実行前に、ユーザーにカスタムセットアップを実行する手段を提供する、Amazon EMR の機能です。ブートストラップアクションは、クラスターの実行前に、ソフトウェアのインストールまたはインスタンスの設定のために使用することができます。EMR の開発者ガイドにブートストラップアクションに関する詳細な説明があります。

Q: ブートストラップアクションはどのように使用できますか?

Bash、Perl、Python、Ruby, C++、または Java など、クラスターインスタンスにすでにインストールされている言語で、ブートストラップアクションのスクリプトを記述できます。いくつかの利用可能な、あらかじめ定義されたブートストラップアクションがあります。スクリプトが一旦記述されると、Amazon S3 にそれをアップロードし、クラスターの開始時にそのロケーションを参照する必要があります。ブートストラップアクションの使い方については、開発者ガイド(http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/)をご覧ください。

Q: クラスターに対する Hadoop 設定はどのように行いますか?

EMR のデフォルト Hadoop 設定はほとんどのワークロードに適しています。ただし、クラスター特有のメモリと処理の要件により、設定の調整が必要な場合があります。例えば、クラスタータスクがメモリーを大量に使用する場合、コア別に使うタスクの数を減らしてジョブ追跡のヒープサイズを減らすことができます。この場合、あらかじめ設定されているブートストラップアクションを使って、クラスターの開始を設定します。設定の詳細と使用方法については、開発者ガイドのメモリーを大量に使用するブートストラップアクションをご覧ください。クラスターの設定を任意の値にカスタマイズできる別の定義済みブートストラップアクションも利用できます。使い方については、開発者ガイドの Hadoop ブートストラップアクションの設定をご覧ください。

Q: 実行中のクラスターでスレーブノードの数を変更できますか?

はい。スレーブノードには次の 2種類があります。(1)Hadoop Distributed File System (HDFS)と Hadoop タスクの実行を使ってデータをホストする「コアノード」と(2)Hadoop タスクでのみ実行される「タスクノード」です。クラスターの実行中に、コアノードの数を増やしたり、タスクノードの数を増減することができます。これは、API、Java SDK、またはコマンドラインクライアントで実行します。実行中のクラスターのサイズを変更する方法については、開発者ガイドにある実行中のクラスターのサイズ変更に関するセクションをご参照ください。

Q: コアノードとタスクノードはどのような場合に使用しますか?

コアノードは、HDFS の永続データをホストするため、削除できません。コアノードは、クラスターが完了するまで、その容量を確保する必要があります。タスクノードは、追加また は削除することができ、HDFS を含んでいません。このノードは、一時使用される容量に適しています。

Q: 実行中のクラスターのスレーブノードの数はどのような場合に変更しますか?

実行中のクラスターのスレーブノードの数を変更する状況はいくつかあります。クラスターの処理速度が予測より遅い場合、またはタイミング要件が変更されたときに、コアノードの数を増やしてクラスターのパフォーマンスを高めることができます。クラスターの段階によって必要な容量が異なる場合は、少ない数のコアノードから始め、タスクノードの数を増やすか、または減らしてクラスターの異なる容量要件に合わせます。

Q: クラスターのステップ間のスレーブノードの数を自動変更できますか?

はい。あらかじめ定義されたステップをワークフローに含めて、異なる容量ニーズがあるステップ間のクラスターのサイズを自動的に調整するようにできます。すべてのステップは順次実行されます。これにより、指定のクラスターステップを実行するスレーブノードの数を設定することができます。

Q: 自分のクラスターに他の IAM ユーザーがアクセスできるようにする方法を教えてください。

EMR CLI 内で、すべての IAM ユーザーに表示されるクラスターを新たに作成するには、クラスターの作成時に「--visible-to-all-users」フラグを追加します。例: elastic-mapreduce --create --visible-to-all-users。マネジメントコンソールで、クラスターの作成ウィザードの [Advanced Options] ペインにある [Visible to all IAM Users] を選択します。

既存のクラスターをすべての IAM ユーザーに表示されるようにするには、EMR CLI を使用する必要があります。--set-visible-to-all-users を使用し、クラスター ID を指定します例: elastic-mapreduce --set-visible-to-all-users true --jobflow j-xxxxxxx。これは、クラスターの作成者のみ行うことができます。

詳細については、EMR 開発者ガイドのIAM ユーザー許可の設定セクションをご覧ください。

トップに戻る >>


Q: どの Amazon EMR リソースにタグ付けできますか?

アクティブな Amazon EMR クラスターにタグを付けることができます。Amazon EMR クラスターは Amazon EC2 インスタンスで構成され、Amazon EMR クラスターに付けられたタグはそのクラスター内のアクティブなすべての Amazon EC2 インスタンスに反映されます。アクティブなクラスターに含まれていたが終了したクラスターや終了した Amazon EC2 インスタンスでは、タグを追加、編集、または削除することはできません。

Q: Amazon EMR へのタグ付けでは IAM ユーザーへのリソースベースのアクセス許可をサポートしていますか?

いいえ、Amazon EMR では、タグによるリソースベースのアクセス許可をサポートしていません。ただし、Amazon EC2 インスタンスに反映されたタグが通常の Amazon EC2 タグと同様に動作することに注意する必要があります。このため、Amazon EMR から反映されたタグが Amazon EC2 用の IAM ポリシーの条件を満たす場合には、そのポリシーはタグに作用します。

Q: リソースには何個のタグを付けることができますか?

Amazon EMR クラスターには最大 10 個のタグを付けることができます。

Q: クラスターに付けた Amazon EMR タグはそのクラスターの Amazon EC2 インスタンスごとに表示されますか? Amazon EMR クラスターからタグを削除した場合、そのタグは関連する各 EC2 インスタンスから自動的に削除されますか?

はい、Amazon EMR はクラスターに付けられたタグをそのクラスターを構成する EC2 インスタンスに反映します。Amazon EMR クラスターにタグを付けた場合、そのタグは関連する Amazon EC2 インスタンスにも表示されます。同様に、Amazon EMR クラスターからタグを削除した場合、そのタグは関連する Amazon EC2 インスタンスからも削除されます。ただし、Amazon EC2 用に IAM ポリシーを使用していて、Amazon EMR のタグ付け機能を使用する場合は、Amazon EC2 タグ付け API、CreateTags および DeleteTags を使用するアクセス許可が付与されていることを確認する必要があります。

Q: コストを分割するため、請求明細にタグを表示するにはどうすればよいですか?

AWS 請求レポートで使用したいタグをここで選択します。 次に、リソースを組み合わせたコストを確認するために、同じタグキー値を持つリソースに基いて、請求情報を整理します。

Q: どの Amazon EC2 インスタンスが Amazon EMR クラスターに含まれるかを識別するにはどうすればよいですか?

Amazon EMR クラスターに関連する Amazon EC2 インスタンスには、2 つのシステムタグが付けられています。

  • aws:elasticmapreduce:instance-group-role=CORE
    • Key = instance-group role ; Value = [CORE or TASK] 
  • aws:elasticmapreduce:job-flow-id=j-12345678
    • Key = job-flow-id ; Value = [JobFlowID]

Q: 直接 Amazon EC2 インスタンスでタグを編集できますか?

はい、Amazon EMR クラスターに含まれている Amazon EC2 インスタンスで直接、タグを追加または削除することができます。しかし、そのようにすることはお勧めできません。その理由は、Amazon EMR のタグ付けシステムは関連する Amazon EC2 インスタンスで直接行った変更と同期しないためです。クラスターおよび関連する Amazon EC2 インスタンスが正しいタグを持つように、Amazon EMR クラスターのタグは Amazon EMR コンソール、CLI、または API を使用して追加、削除することをお勧めします。

トップに戻る >>

Q: 以前はできなかったことで、新たにできるようになったことはありますか?

大部分の EC2 インスタンスは、「インスタンスストア」と呼ばれる、インスタンスにアタッチされた固定容量のストレージを備えています。Amazon EMR クラスターで EBS ボリュームをインスタンスに追加して、インスタンスのストレージをカスタマイズできるようになりました。この機能により、M4 や C4 など EBS のみのインスタンスファミリーで、Amazon EMR クラスターも実行できます。

Q: Amazon EMR で実行中のインスタンスに EBS ボリュームを追加するメリットは何ですか?

以下のシナリオでは、EBS ボリュームをインスタンスに追加することによるメリットがあります。

  1. 処理要件として、現在インスタンスで利用可能な大容量の HDFS (またはローカル) ストレージが必要とされる場合。EBS ボリュームのサポートにより、インスタンスが提供するコンピューティング性能と比較して、インスタンスのストレージキャパシティーのカスタマイズが可能。インスタンスのストレージを最適化することでコストの節約が可能。
  2. 旧世代のインスタンスファミリー (M1 および M2 ファミリーなど) で運用中であり、現行世代のインスタンスファミリーに移行する希望があるが、次世代のインスタンスタイプではノードごとに利用可能なストレージが小さい。すべての新しい世代のインスタンスタイプを利用できるようになり、また EBS ボリュームを追加してストレージを最適化できるようになりました。内部ベンチマークでは、旧世代のインスタンスファミリー (M1 また M2) から新しい世代 (M4、C4、R3) に移行することで、コストを節約しパフォーマンスを向上できることが示されています。Amazon EMR チームは、アプリケーションが適切な結果を得られるように動作させることを推奨しています。
  3. 次世代 EBS のみの M4 および C4 ファミリーを使用することやそれらに移行することを希望しています。

Q: クラスターが終了した後も、EBS ボリュームのデータを維持できますか?

現在、Amazon EMR ではクラスターが終了するとボリュームが削除されます。クラスターのライフサイクルを超えてデータを維持したい場合、データストレージとして Amazon S3 を考慮してください。

Q: どの種類の EBS ボリュームをインスタンスにアタッチできますか?

Amazon EMR では、汎用 SSD (GP2)、マグネティック、プロビジョンド IOPS (SSD) の異なる EBS ボリュームタイプが利用できます。

Q: クラスターを終了すると、EBS ボリュームはどうなりますか?

Amazon EMR では EMR クラスターが終了するとボリュームが削除されます。

Q: インスタンスストアのあるインスタンスで EBS を利用できますか?

はい。インスタンスストアのあるインスタンスで EBS ボリュームを利用できます。

Q: 動作中のクラスターに EBS ボリュームをアタッチできますか?

いいえ。現在、EBS ボリュームを追加できるのはクラスターの起動時のみです。

Q: クラスターでクラスターのスナップショットを作成できますか?

EBS API では、ボリュームのスナップショットを作成できます。ただし現在 Amazon EMR では、スナップショットからリストアすることは許可されていません。

Q: 暗号化された EBS ボリュームを使用できますか?

いいえ。現行のリリースでは暗号化されたボリュームはサポートされていません。

Q: 動作中のクラスターからアタッチされているボリュームを削除するとどうなりますか?

動作中のクラスターからアタッチされているボリュームを削除すると、ノードのエラーとして扱われます。 Amazon EMR では、ノードおよび EBS ボリュームがそれぞれ同等のものとリプレイスされます。

トップに戻る >>


Q: Apache Hive とは何ですか?

Hive はオープンソースのデータウェアハウスであり、Hadoop 上で稼動する分析パッケージです。Hive は Hive QL と呼ばれる SQL ベースの言語によって操作します。これによってユーザーは、Amazon S3 に格納されているデータソースの構築、要約、問い合わせを行うことができます。Hive QL は標準的な SQL を超えるものであり、map/reduce 関数や、Json や Thrift といった複雑で拡張可能なユーザー定義のデータタイプのために、第一級のサポートを行います。この能力により、テキスト文書やログファイルといった、複雑で構造化されていないデータソースの処理が可能となります。Hive により、Java で書かれ、Amazon S3 のストレージに配置されたユーザー定義の関数を利用した、ユーザーによる拡張が可能となります。

Q: Amazon EMR で稼働する Hive でできることは何ですか?

Amazon EMR で Hive を使用すれば、おなじみの SQL と似た言語を持つ洗練されたデータ処理アプリケーションと、Amazon EMR で利用できる使いやすいツールを実装することができます。Amazon EMR を使用すれば、Hive アプリケーションを信頼性の高いデータウェアハウスにして、データ分析、モニタリング、ビジネスインテリジェンスなどのタスクを実行することができます。

Q: Hive は従来の RDBMS システムとはどのように異なりますか?

伝統的な RDBMS システムは、トランザクションの意味と ACID プロパティを提供しています。これらはまたテーブルのインデックス化とキャッシュ化を可能とするため、小さな分量のデータでは非常に素早い検索を行うことができます。これらは小さな分量のデータの高速アップデート、参照整合性制約を実行します。一般的に、これらは単一の大規模なマシン上で稼動し、テーブル上で map や reduce 関数の実行をサポートしません。また一般的には複雑なユーザー定義のデータタイプをサポートしません。

対照的に、Hive は MapReduce を使用して、SQL に似たクエリを実行します。結果的に、マシンのクラスタ上で稼動させることにより、完全なテーブルスキャンの実行を最適化することができます。そのため、莫大なデータ量を処理することができます。Hive は分割されたテーブルを提供します。これによって、実行中のクエリにとって適切な場合は、テーブル全体ではなくてテーブルの一部をスキャンすることができます。

伝統的な RDBMS システムは、トランザクションに意味があり、参照整合性が必要で、さらに頻繁に小さな更新が行われる場合には最適です。Hive は大規模なデータセットのオフラインでのレポート、変換、分析に最適です。例えば大型のウェブサイトのクリックストリーム分析、またはウェブサイトの収集などです。

一般的によく行なわれていることの 1 つに、RDBMS システムから Amazon S3 へのデータのエクスポートがあります。この場合 Hive を実行中の Amazon EMR のクラスターを使用して、オフラインの分析を行なうことができます。

Q: Amazon EMR で稼動する Hive を開始するにはどうすればよいですか?

開始するための最適の方法は、http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2862 にある書面の、または動画のチュートリアルをご覧いただくことです。

Q: Amazon EMR に固有の Hive の新機能はありますか?

はい。Amazon EMR と共に使用すれば Hive をさらに強力にする 4 つの新機能があります。これらは次の通りです。

a/ Amazon S3 から自動的にテーブルの一部を読み込む能力。以前はテーブルの一部をインポートするために、テーブル内の個別のパーティションそれぞれに対して別々のテーブル変換命令文が必要でした。Amazon EMR は現在、Hive 言語のための新しい命令文タイプとして「alter table recover partitions」を含んでいます。この命令文によって、共有されたメタデータストアを維持することなく、数多くのクラスターのために複数のテーブルを同時に、簡単にインポートすることができます。例えばログファイルといったデータの投入を外部プロセスがテーブルに対して行う際、このテーブルからの読み込みのためにこの機能を使用してください。

b/ オフインスタンスのメタデータストアを指定する能力。デフォルトでは、Hive がそのスキーマ情報を格納するメタデータストアは、マスターノードにあり、クラスターが終了すると消失するようになっています。この機能によって、使用するメタデータストアのロケーションを無効にすることができます。例えば、お客様がすでに EC2 で実行中の MySQL のインスタンスなどです。

c/ Amazon S3 に直接データを書き込む。Amazon S3 のテーブルにデータを書き込む際、Amazon EMR にインストールされた Hive のこのバージョンは、一時ファイルを使用することなく、Amazon S3 に直接書き込みを行います。これにより、パフォーマンスが著しく改善されます。しかしこれは、HDFS および Hive パースペクティブからの S3 が異なる振る舞いをすることを意味します。テーブルが Amazon S3 内にある場合、同じテーブルに対して同じ命令文内で読み書きを行うことはできません。S3 にあるテーブルを更新したい場合、クラスターのローカル HDFS ファイルシステム内で一時ファイルを作成し、結果をそのテーブルに書き込んだ後、それらを Amazon S3 にコピーします。

d/ Amazon S3 にあるリソースにアクセスする。Amazon EMR にインストールされた Hive のこのバージョンによって、カスタムのマップや削減操作用のスクリプト、または Amazon S3 にある追加ライブラリなどのリソースを、Hive スクリプト内(例えば、add jar s3://elasticmapreduce/samples/hive-ads/libs/jsonserde.jar)から直接参照することができます。

Q: どのようなタイプの Hive クラスターがサポートされているのですか?

Hive では、インタラクティブとバッチという 2 種類のクラスターがサポートされています。インタラクティブモードでは、お客様はクラスターを開始し、マスターノードで直接インタラクティブに Hive スクリプトを実行することができます。一般的に、このモードはアドホックなデータ分析やアプリケーション開発のために使用されます。バッチモードでは、Hive スクリプトは Amazon S3 に格納され、クラスターの開始時に参照されます。一般的に、バッチモードはレポート生成などの繰り返し可能な実行のために使用されます。

Q: Hive クラスターの起動方法について教えてください。

バッチとインタラクティブ両方のクラスターは、AWS マネジメントコンソール、EMR コマンドラインクライアント、または API から開始可能です。Hive クラスターの起動の仕方については、開発者ガイドの Hive の使用セクションをご参照ください。

Q: Hive と PIG はそれぞれどのような場合に使用すべきですか?

Hive および PIG は両方とも、ハイレベルのデータ処理言語に、大規模なデータセットで稼動する複雑なデータタイプのサポートを提供するものです。Hive 言語は SQL の変異形であり、すでに SQL や関係データベースになじみのある人々にとって使いやすいものとなっています。Hive は分割されたテーブルをサポートしているため、Amazon EMR のクラスターは、テーブル全体のスキャンを行うのではなく、実行されるクエリに関連したテーブルの一部だけを取得することができます。PIG および Hive は両方とも、クエリプランの最適化を行います。PIG はスクリプト全体を通じて最適化可能ですが、Hive クエリは命令文レベルで最適化されます。

最終的に、Hive または PIG のどちらを使用すべきかの選択は、アプリケーションドメインの正確な要件、および実装者やクエリ記述者の好みに委ねられています。

Q: Amazon EMR でサポートされるのは、Hive のどのバージョンですか?

Amazon EMR では、複数のバージョンの Hive (バージョン 0.11.0 を含む) をサポートしています。

Q: 2 つのクラスターから、テーブルに同時に書き込みを行うことはできますか?

いいえ。Hive はテーブルへの同時書き込みをサポートしていません。同一のテーブルに対する同時書き込み、または書き込みを行っているテーブルからの読み取りは避けるようにしてください。読み取りと書き込み、または書き込みと書き込みを同時に行おうとすると、Hive は非決定的な振る舞いをします。

Q: クラスター間でデータを共有できますか?

はい。スクリプト上部に「create external table」という命令文を記述することにより、Hive スクリプト内で Amazon S3 のデータの読み込みを行うことができます。お客様がアクセスする各外部リソースのために、テーブルステートメントを1つ作成する必要があります。

Q: 大規模なクラスターを 1 つ実行してそれを多くのユーザー間で共有すべきですか。それとも多くのより小さなクラスターを実行すべきですか?

Amazon EMR はお客様が両方の方法を使用できるようユニークな機能を提供しています。例えば、1 つの大規模なクラスターは、定期的なバッチ作業を処理するためにより効率的かもしれません。その一方では、アドホックなクエリ問い合わせや、所要時間が多岐にわたる作業が必要な場合は、Amazon S3 で格納される特定のタスク共有データソースに合わせた、いくつかの別々のクラスターの作成が有効かもしれません。

Q: 自分のローカルファイルシステムにあるスクリプトまたは jar リソースにアクセスすることはできますか?

いいえ。参照できるようにするためには、スクリプトまたは jar を、Amazon S3 またはクラスターのマスターノードにアップロードする必要があります。Amazon S3 にアップロードするために、s3cmd、jets3t、または S3Organizer などのツールを使用することができます。

Q: 複数の Hive クエリを実行する持続的なクラスターを実行できますか?

はい。クラスターを手動終了モードで実行し、Hive ステップ間で終了しないようにすることができます。データロスのリスクを削減するために、Amazon S3 にある重要なデータのすべてを、定期的に持続させることが推奨されています。お客様の作業を定期的に新しいクラスターに転送して、マスターノードの故障から回復するプロセスをテストすることは良い方法です。

Q: 同一のソースデータ上について、複数のユーザーが Hive のステップを実行することができますか?

はい。別々のクラスターで複数のユーザーによって実行されている Hive スクリプトには、Amazon S3 に存在するソースデータを同時にインポートする「create external table」命令文が含まれている可能性があります。

Q: 同一のクラスターで、複数のユーザーがクエリを実行できますか?

はい。バッチモードでは、ステップが分割されます。複数のユーザーが、Hive ステップを同一のクラスターに追加することができます。ただしステップは分割されて実行されます。インタラクティブモードでは、いくつかのユーザーが同一のクラスターにログオンし、Hive 命令文を同時に実行することが可能です。

Q: 複数の AWS ユーザー間でデータを共有できますか?

はい。ここ http://docs.amazonwebservices.com/AmazonS3/latest/index.html?S3_ACLs.html で説明されている標準 Amazon S3 共有メカニズムを用いて、データを共有することができます。

Q: Hive は JDBC からのアクセスをサポートしますか?

はい。Hive は JDBC ドライブを提供しています。これはプログラム的に Hive の命令文を実行するために使用することができます。クラスターで JDBC サービスを開始するには、Amazon EMR にあるコマンドラインクライアントにおいて、オプションのパラメータを記述する必要があります。またセキュリティグループが外部接続を許可しないため、SSH トンネルを確立する必要もあります。

Q: EMR AMI でパッケージを更新する手順はどのようなものですか?

セキュリティパッチ等、当社は Debian/stable から、選りすぐりのパッケージセットを実行します。Debian/stable でアップグレードが行われるたびに、当社はパッケージのアップグレードを行います。当社の画像にある「r-recommended」パッケージは、Debian/stable で最新のものです(http://packages.debian.org/search?keywords=r-recommended)。

Q: EMR クラスターで自分自身のパッケージを更新できますか?

はい。ブートストラップアクションを使用して、お客様のクラスタのパッケージに対する更新をインストールできます。

Q: Hive を利用して DynamoDB のデータを処理できますか?

はい。DynamoDB テーブルにもとづいて、外部 Hive テーブルを定義するだけです。その後、Hive を利用して DynamoDB に保管されたデータを解析し、結果を DynamoDB に読み込むか、または Amazon S3 でアーカイブすることができます。詳細については、当社の開発者ガイドをご覧ください。

トップに戻る >>


Q: Impala とは何ですか?

Impala は SQL 構文を使用したインタラクティブなアドホッククエリを行う Hadoop エコシステムのオープンソースツールです。これは、従来のリレーショナルデータベース管理システム(RDBMS)にある超並列処理(MPP)エンジンに類似した MPP を MapReduce の代わりに活用します。このアーキテクチャでは、HDFS または HBase テーブルのデータを非常にすばやくクエリできるほか、多様なデータ型を処理するだけでなく実行時にスキーマを提供する Hadoop の機能を活用することができます。このため、Impala を利用して、インタラクティブでレイテンシーが短い分析を行うことができます。また、Impala は Hive メタストアを使用して、パーティション名およびデータ型などの入力データに関する情報を保管します。さらに、Amazon EMR で Impala を使用するには、AMI で Hadoop 2.x 以降を実行する必要があります。Impala の詳細については、ここをクリックしてください。

Q: Amazon EMR で稼働する Impala でできることは何ですか?

Amazon EMR と Hive を併用する場合と同様に、Amazon EMR と Impala を併用すると、SQL 構文を使用した、洗練されたデータ処理アプリケーションを実装できます。ただし、Impala は、一部のユースケースで、より高速に実行されるよう作成されています(下記を参照)。Amazon EMR を使用すれば、Impala を信頼性の高いデータウェアハウスとして使用して、データ分析、モニタリング、ビジネスインテリジェンスなどのタスクを実行することができます。ユースケースには以下の 3 つがあります。

  • アドホッククエリを実行するために、長期間稼働するクラスターで Hive の代わりに Impala を使用する場合。Impala はインタラクティブクエリを数秒に短縮するので、高速な調査を行うためのすぐれたツールです。 バッチの MapReduce ワークフローと同じクラスターで Impala を実行したり、Hive および Pig とともに長時間稼働する分析クラスターで Impala を使用したり、あるいは Impala のクエリ用に特別に調整されたクラスターを作成することができます。
  • 一時的な Amazon EMR クラスターでバッチ ETL ジョブ用に Hive の代わりに Impala を使用する場合。Impala は、Hive よりも、多くのクエリで高速であり、それらのワークロードに対してより高いパフォーマンスを提供します。Hive と同様に Impala も SQL を使用しているため、クエリを Hive から Impala に簡単に移植できます。
  • サードパーティ製のビジネスインテリジェンスツールと一緒に Impala を使用する場合。クライアントの ODBC または JDBC ドライバーをクラスターと接続し、パワフルな可視化ツールおよびダッシュボードのエンジンとして Impala を使用します。

バッチ Impala クラスターもインタラクティブな Impala クラスターも Amazon EMR で作成できます。例えば、長時間実行する Amazon EMR クラスターで、アドホックでインタラクティブなクエリのために Impala を実行することも、高速の ETL ワークフローのために一時的な Impala クラスターを使用することもできます。

Q: Impala は従来の RDBMS とどのように異なりますか?

従来のリレーショナルデータベースシステムは、トランザクションの意味とデータベースのアトミック性、整合性、分離、および堅牢性(ACID)の各特性を提供してきました。また、テーブルをインデックス化およびキャッシュして少量のデータを非常に高速に読み出したり、少量データをすばやく更新したり、あるいは参照整合性制約を適用することができます。通常、従来のリレーショナルデータベースシステムは単一の大規模マシンで稼働し、ユーザー定義された複雑なデータ型に対する処理まではサポートしません。Impala は RDBMS にあるのと似た分散クエリシステムを使用しますが、HDFS に保存されているデータをクエリし、Hive メタストアを使用して入力データに関する情報を保管します。Hive の場合と同様に、クエリのスキーマは実行時に提供されるため、簡単にスキーマ変更を行うことができます。また、Impala は様々な複合データ型もクエリできるほか、ユーザー定義関数も実行できます。ただし、Impala はメモリ内でデータを処理するため、クラスターのハードウェア制限を理解し、クエリのパフォーマンスを最適化する必要があります。

Q: Impala は Hive とどのように異なりますか?

Impala が超並列処理(MPP)エンジンを使用して SQL クエリを実行するのに対し、Hive は MapReduce を使用して SQL クエリを実行します。Impala では、Hive と違って MapReduce ジョブを作成するオーバーヘッドがかからないため、Hive よりクエリ時間が短縮されます。ただし、Impala は大量のメモリリソースを使用するため、クラスターで利用可能なメモリによって、クエリに使用できるメモリ量が制約されます。Hive はこのようには制限されていないため、同じハードウェアでより多くのデータセットを問題なく処理することができます。一般に、高速のインタラクティブなクエリには Impala の使用が適するのに対し、Hive は大規模なデータセットに対する ETL ワークロードに適しています。Impala は時間短縮を目的として開発されているためアドホックの調査には最も適していますが、負荷の大きいクエリを実行する場合、つまり非常に大きなデータセットを処理する場合には大量のメモリを必要とします。このような制限があるため、完了することの方が時間短縮よりも先決であるワークロードの場合には Hive を使用することをお勧めします。Impala と Hive の間のパフォーマンスベンチマークについては、ここをクリックしてください。

Q: Hadoop 1 を使用できますか?

いいえ、Impala には Hadoop 2 が必要であり、AMI が Hadoop 1.x を稼働しているクラスターでは稼働しません。

Q: Impala クラスターにはどのインスタンスタイプを使用する必要がありますか?

Impala を使用して最良の結果を得るには、クラスターにはメモリが最適化されたインスタンスを使用することをお勧めします。ただし、スタンダードインスタンスタイプも使用する場合は、 Hive よりも高いパフォーマンスが示されることを私たちは示してきました。データセット型とクエリタイプに対してクラスターで必要となるメモリリソースを適切に見積もるには、『Amazon Elastic MapReduce 開発者ガイド』の「Performance Testing and Query Optimization」セクションをお読みになることをお勧めします。圧縮タイプ、パーティション、およびクエリ自体(結合の数、結果サイズなど)はすべて、必要となるメモリの構成要素となります。Impala クエリに必要となるメモリなどのリソースは、EXPLAIN ステートメントを使用して見積もることができます。

Q: クエリでメモリが不足したらどうなりますか?

メモリが不足した場合、クエリは失敗し、影響を受けるノードにインストールされている Impala デーモンはシャットダウンします。続いて、Amazon EMR がそのノードでデーモンを再開し、Impala が別のクエリを実行できるようにします。シャットダウンしたのはノード全体でなく、ノードで稼働していたデーモンのみであるため、ノードの HDFS のデータは依然として利用可能です。Impala を使用したアドホック分析の場合、クエリ時間は通常 1 分未満の値として測定できます。このため、クエリが失敗した場合でも、問題をすみやかに発見し、すぐに新しいクエリを送信できます。

Q: Impala はユーザー定義関数をサポートしていますか?

はい、Impala はユーザー定義関数(UDF)をサポートしています。Impala 固有の UDF は Java または C++ で記述できます。Hive 用に作成された UDF やユーザー定義集計関数に Impala 用の変更を加えることもできます。Hive UDF の詳細については、ここをクリックしてください。

Q: Impala がクエリするデータはどこに保存されていますか?

Impala は HDFS または HBase テーブルのデータをクエリします。データを Amazon S3 に保存している場合は、Amazon EMR のベストプラクティスを参照し、データを HDFS に転送する手順を実行することをお勧めします。

Q: クラスターで Impala と MapReduce を同時に実行できますか?

はい、Impala と MapReduce を同時に実行できるマルチテナントクラスターをセットアップすることができます。ただし、各アプリケーションには、Hadoop 2.x で YARN を使用してリソース(メモリ、ディスク、および CPU)を割り当てる必要があります。割り当てるリソースは、各アプリケーションで実行を予定しているジョブのニーズによって決定する必要があります。

Q: Impala では ODBC や JDBC のドライバーがサポートされていますか?

Impala は、ODBC ドライバーを実行できるだけでなく、 JDBC によって接続されるサードパーティ製ツールにも有効なエンジンです。Impala クライアントの JDBC ドライバーは、http://elasticmapreduce.s3.amazonaws.com/libs/impala/1.2.1/impala-jdbc-1.2.1.zip からダウンロードおよびインストールすることができます。ビジネスインテリジェンスツールをインストールしたクライアントコンピューターのポート 21050 で SSH または VPN を使用して、Impala クラスターのマスターノードに JDBC ドライバーを接続します。詳細については、Open an SSH Tunnel to the Master Nodeを参照してください。

トップに戻る >>


Q: Apache Pig とは何ですか?

Pig は Hadoop 上で稼動するオープンソースの分析パッケージです。Pig は Pig Latin と呼ばれる SQL に似た言語によって操作されます。これにより、ユーザーは Amazon S3 に格納されているデータソースの構築、要約、クエリ問い合わせを行うことができます。SQL に類似した操作と同様、Pig Latin もまた、map/reduce 関数および複雑で拡張可能なユーザー定義のデータタイプのために、第一級のサポートを行います。この能力により、テキスト文書やログファイルといった、複雑で構造化されていないデータソースの処理が可能となります。Pig は Java で記述されたユーザー定義の関数を通じてユーザーによる拡張を許可します。

Q: Amazon EMR で稼働する Pig でできることは何ですか?

Amazon EMR で Pig を使用すれば、おなじみの SQL と似た言語を持つ洗練されたデータ処理アプリケーションと、Amazon EMR で利用できる使いやすいツールを実装することができます。Amazon EMR を使用すれば、Pig アプリケーションを信頼性の高いデータウェアハウスにして、データ分析、モニタリング、ビジネスインテリジェンスなどのタスクを実行することができます。

Q: Amazon EMR で稼動する Pig を開始するにはどうすればよいですか?

開始するための最適の方法は、こちら http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2735&categoryID=269 にある書面の、または動画のチュートリアルをご覧いただくことです。

Q: Amazon EMR に固有の Pig の新機能はありますか?

はい。Amazon EMR と共に使用すれば Pig をさらに強力にする 3 つの新機能があります。これは次の通りです。

a/ 複数のファイルシステムへのアクセス。デフォルトでは、入力、出力、一時データのために、HDFS ストアまたは S3 バケットである、1つのリモートファイルシステムのみに対して、Pig のジョブはアクセスすることができます。EMR は、任意のジョブが好きなだけ多くのファイルシステムにアクセスできるよう、Pig を拡張しました。この利点の1つは、一時的なイントラ-ジョブのデータが、常にローカルの HDFS に格納できるようになり、パフォーマンスの改善につながるということです。

b/ S3 からのリソースの読み込み。例えば「REGISTER s3:///my-bucket/piggybank.jar」のように、S3 ファイルシステムからカスタムの JAR やスクリプトが取得できるように、Amazon EMR は Pig を拡張しました。

c/ 文字列と日付時間処理のための追加 Piggybank 機能。これらの機能については、ここ http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2730 で文書化されています。

Q: どのようなタイプの Pig クラスターがサポートされていますか?

Pig では、インタラクティブとバッチという 2 種類のクラスターがサポートされています。インタラクティブモードでは、お客様はクラスターを開始し、マスターノード上で直接インタラクティブに Pig スクリプトを実行することができます。一般的に、このモードはアドホックなデータ分析やアプリケーション開発のために使用されます。バッチモードでは、Pig スクリプトは Amazon S3 に格納され、クラスターの開始時に参照されます。一般的に、バッチモードはレポート生成などの繰り返し可能な実行のために使用されます。

Q: Pig クラスターの起動方法について教えてください。

バッチとインタラクティブ両方のクラスターは、AWS マネジメントコンソール、EMR コマンドラインクライアント、または API から開始可能です。

Q: Amazon EMR でサポートされているのは Pig のどのバージョンですか?

Amazon EMR では複数のバージョン (0.11.1 を含む) の Pig がサポートされています。

Q: 2 つのクラスターから同時に S3 バケットに書き込みを行うことはできますか?

はい。2 つの同時発生しているクラスターから、同一のバケットに書き込みを行うことができます。

Q: クラスター間で S3 の入力データを共有できますか?

はい。2 つの同時発生しているクラスターから、S3 の同一データを読み込むことができます。

Q: 複数の AWS ユーザー間でデータを共有できますか?

はい。ここ http://docs.amazonwebservices.com/AmazonS3/latest/index.html?S3_ACLs.html で説明されている標準 Amazon S3 共有メカニズムを用いて、データを共有することができます。

Q: 大規模なクラスターを 1 つ実行してそれを多くのユーザー間で共有すべきですか。それとも多くのより小さなクラスターを実行すべきですか?

Amazon EMR はお客様が両方の方法を使用できるようユニークな機能を提供しています。例えば、1 つの大規模なクラスターは、定期的なバッチ作業を処理するためにより効率的かもしれません。その一方では、アドホックなクエリ問い合わせや、所要時間が多岐にわたる作業が必要な場合は、Amazon S3 で格納される特定のタスク共有データソースに合わせた、いくつかの別々のクラスターの作成が有効かもしれません。

Q: 自分のローカルファイルシステムにあるスクリプトまたは jar リソースにアクセスすることはできますか?

いいえ。参照できるようにするためには、スクリプトまたは jar を、Amazon S3 またはクラスターのマスターノードにアップロードする必要があります。Amazon S3 にアップロードするために、s3cmd、jets3t、または S3Organizer などのツールを使用することができます。

Q: 複数の Pig クエリを実行する持続的なクラスターを実行できますか?

はい。クラスターを手動終了モードで実行し、Pig ステップ間で終了しないようにすることができます。データロスのリスクを削減するために、Amazon S3 にある重要なデータのすべてを、定期的に持続させることが推奨されています。お客様の作業を定期的に新しいクラスターに転送して、マスターノードの故障から回復するプロセスをテストすることは良い方法です。

Q: Pig は JDBC からのアクセスをサポートしますか?

いいえ。Pig は JDBC 経由のアクセスをサポートしません。

トップに戻る >>


Q: Apache HBase とは何ですか?

HBase は、Google の BigTable に基づいて設計されたオープンソースのリレーショナルでない分散データベースです。Apache Software Foundation の Hadoop プロジェクトの一部として開発され、Hadoop Distributed File System (HDFS)上で動作して、BigTable に似た機能を Hadoop で実現します。HBase では、列ベースの圧縮および保存を使用することにより、障害に強く効率的な方法で大量のスパースデータを保存できます。さらに、データがディスクではなくメモリに格納されるので、データ検索が迅速に実行されます。HBase は、シーケンシャル書き込み操作用に最適化されており、バッチ挿入、更新、および削除処理も非常に効率的です。HBase は、Hadoop のファイルシステムを共有して、Hadoop ジョブに対する直接入力および出力として機能することで、Hadoop とシームレスに連携します。また、HBase テーブルに対する SQL のようなクエリ、Hive ベースのテーブルとの結合、および Java Database Connectivity(JDBC)を有効にすることで、Apache Hive とも統合されます。

Q: Amazon EMR に固有の HBase の新機能はありますか?

Amazon EMR では HBase を Amazon S3 にバックアップでき(フルまたは増分、手動または自動)、以前作成したバックアップからの復元も可能です。HBase と EMR の詳細

Q: HBase のどのバージョンが Amazon EMR でサポートされていますか?

Amazon EMR では HBase 0.94.7 と HBase 0.92.0 がサポートされています。HBase 0.94.7 を使用するには、AMI バージョン 3.0.0 を指定する必要があります。CLI を使用する場合は、2013 年 10 月 7 日以降のバージョンを使用する必要があります。

トップに戻る >>


Q: Kinesis 用 EMR コネクタは何ができますか?

このコネクタにより、EMR は Kinesis ストリームから直接データの読み取りとクエリを実行できるようになります。Hive、Pig、MapReduce、Hadoop Streaming、Cascading といった既存の Hadoop エコシステムツールを使用して Kinesis ストリームのバッチ処理を実行できます。

Q: Kinesis 用 EMR コネクタによって、以前は不可能だったどのようなことが実現可能になりますか?

Kinesis ストリームからのデータの読み取りと処理には、独立したストリーム処理アプリケーションの作成、デプロイおよびメンテナンスが必要でした。これには時間と労力が必要です。しかし、このコネクタを使用すると、簡単な Hive または Pig スクリプトを書くだけで Kinesis ストリームの読み取りと分析を開始できます。つまり、SQL を使用して Kinesis ストリームを分析できます。当然ながら、他の Hadoop エコシステムツールも使用できます。新たな一連の処理アプリケーションを開発またはメンテナンスする必要はありません。

Q: この機能はどのようなユーザーにとって便利ですか?

この統合は次のようなタイプのユーザーにとって便利です。

  • 包括的な Hadoop エコシステムツールセットを利用して Kinesis ストリームを分析することに関心がある Hadoop ユーザー。
  • Kinesis データのストリーム処理と ETL の稼動開始のための簡単な方法を探している Kinesis ユーザー。
  • SQL(Hive 経由)のような使い慣れたツールや、Pig のようなスクリプト言語を使用した、Kinesis ストリームのデータに対するアドホックな分析の実行を希望するビジネスアナリストおよび IT 専門職。

Q: この統合のユースケースにはどのようなものがありますか?

この統合で可能になる代表的なユースケースを次に示します。

  • ストリーミングログ分析: ストリーミングのウェブログを分析して、リージョン別、ブラウザ別、およびアクセスドメイン別に、数分ごとの上位 10 件のエラータイプのリストを生成できます。
  • 複雑なデータ処理ワークフロー: Kinesis ストリームと、S3、Dynamo DB テーブル、および HDFS に保存したデータを結合できます。Kinesis のクリックストリームデータと Dynamo DB テーブルに保存されている広告キャンペーン情報を結合するクエリを作成し、特定のウェブサイトに表示される最も効果的な広告カテゴリを特定できます。
  • アドホッククエリ: Kinesis から HDFS に定期的にデータを読み込み、ローカルの Impala テーブルとして使用可能にすることで、高速かつインタラクティブな分析クエリを実行できます。

Q: このコネクタを使用するために必要な EMR AMI のバージョンは何ですか?

EMR の AMI バージョン 3.0.4 以降をご使用ください。

Q: このコネクタはスタンドアロン型のツールですか?

いいえ。Hadoop の Amazon ディストリビューションの組み込みコンポーネントであり、EMR AMI バージョン 3.0.4 以降に含まれます。お客様は AMI バージョン 3.0.4 以降を含むクラスターを起動するだけで、この機能を使い始めることができます。

Q: EMR が Kinesis ストリームから読み取りを行うために必要なデータフォーマットは何ですか?

EMR Kinesis 統合はデータフォーマットに固有のものではありません。任意のフォーマットのデータを読み取ることができます。個別の Kinesis レコードは、任意の Hadoop MapReduce フレークワークを使用して読み取ることができるスタンダードレコードとして Hadoop に渡されます。Hive、Pig、Cascading のような個別のフレームワークには、シリアル化と逆シリアル化に役立つ組み込みコンポーネントがあり、開発者はカスタムコードを実装することなくさまざまなフォーマットのデータに対するクエリを簡単に実行できます。例えば Hive では、テーブル定義時に適切な Hive SerDe を指定することにより、JSON ファイル、XML ファイルおよび SEQ ファイルからデータを読み取ることができます。Pig には Loadfunc/Evalfunc と呼ばれる同様のコンポーネントがあり、Cascading には Tap と呼ばれる同様のコンポーネントがあります。Hadoop のユーザーは、Hadoop アダプタの包括的なエコシステムを活用でき、フォーマット固有のコードを作成する必要はありません。これらのいずれかのツールでドメイン固有のデータを読み取るために、カスタマイズした逆シリアル化フォーマットを実装することもできます。

Q: EMR で Hive を使用して Kinesis ストリームを分析するには、どうすればよいですか?

Kinesis ストリームを参照するテーブルを作成します。その後、Hive の他のテーブルと同じようにそのテーブルを分析できます。詳細については、チュートリアルのページを参照してください。

Q: Hive を使用して、Kinesis ストリームデータと他のデータソースを結合するクエリを作成する方法を教えてください。

最初に、Kinesis ストリームを参照するテーブルを作成します。Hive テーブルを作成した後、そのテーブルを、Amazon S3、Amazon Dynamo DB、HDFS などの他のデータソースにマッピングしているテーブルに結合します。これにより、実質的に Kinesis ストリームのデータが他のデータソースに結合されます。

Q: この統合を使用できるのは Hive だけですか?

いいえ。Hive、Pig、MapReduce、Hadoop Streaming、および Cascading を使用できます。

Q: Kinesis ストリームで実行するスケジュールを設定したジョブをセットアップするにはどうすればよいですか?

EMR Kinesis 入力コネクタには、Cron などの従来のスケジュール管理エンジンでスケジュールを設定した定期的なジョブの設定、管理に役立つ機能があります。例えば、N 分間隔で実行される Hive スクリプトを開発できます。ジョブの設定パラメータで、ジョブの論理名を指定できます。論理名は、ジョブの個々のインスタンスが同じ定期スケジュールのメンバーであることを EMR Kinesis 入力コネクタに知らせるラベルです。論理名を使用することでプロセスは反復計算を活用できます。反復計算についてはこの後に説明します。

MapReduce はバッチ処理フレームワークであるため、EMR を使用して Kinesis ストリームを分析するには、連続ストリームを複数のバッチに分割します。各バッチは反復計算と呼ばれます。各反復計算には 0 から始まる番号が付されます。各反復計算の境界は、開始シーケンス番号と終了シーケンス番号によって定義されます。反復計算は EMR によって順次処理されます。

いずれかの処理の試行が失敗した場合、EMR Kinesis 入力コネクタは論理名の範囲内で反復計算の既知の開始シーケンス番号から反復計算を再試行します。この機能は、同一の反復計算で連続して試行が失敗した場合、Kinesis ストリームから前回の試行と正確に同じ入力レコードを受け取るようにします。これにより、Kinesis ストリームのべき等(整合性のある)処理が保証されます。

論理名と反復計算は、それぞれの Hadoop ツールで実行時パラメータとして指定できます。例えば、チュートリアルの「Running queries with checkpoints」のセクションで、コード例はスケジュールが設定された Hive クエリを示しています。このクエリは、クエリの論理名を指定し、連続するジョブ実行に合わせて反復計算を増分します。

さらに、サンプルの cron スケジュール設定スクリプトがチュートリアルで提供されています。

Q: 論理名と反復計算のメタデータはどこに保存されていますか?

EMR Kinesis 入力コネクタがスケジュール設定された定期ワークフローで動作するためのメタデータは、Amazon DynamoDB に保存されています。Amazon Dynamo DB テーブルをプロビジョニングし、そのテーブルを Hadoop ジョブの入力パラメータとして指定する必要があります。この統合を有効にするために、テーブルに対して適切な IOPS を設定することが重要です。Amazon Dynamo DB テーブルの設定について詳しくは、ご利用開始にあたってのチュートリアルを参照してください。

Q: 反復計算処理が失敗した場合、どうなりますか?

反復計算識別子はユーザーが指定する値で、Kinesis ストリーム内の特定の境界(開始シーケンス番号と終了シーケンス番号)にマップされます。これらの境界に対応したデータが、MapReduce ジョブの Map フェーズに読み込まれます。このフェーズはフレームワークによって管理され、ジョブが失敗した場合は自動的に再実行されます(デフォルトでは 3 回)。この再試行がすべて失敗した場合でも、正常に終了した最後のデータ境界または過去のデータ境界から処理を再試行するためのオプションがあります。この動作は、処理中に kinesis.checkpoint.iteration.no パラメータを指定することによって制御します。Hadoop エコシステムのさまざまなツールでこの値を設定する方法について詳しくは、ご利用開始にあたってのチュートリアルを参照してください。

Q: 1 つの反復計算で複数のクエリを実行できますか?

はい。後続の処理で kinesis.checkpoint.iteration.no パラメータを設定することによって、以前に実行した反復計算を指定できます。実装により、同一の反復計算での後続クエリの実行に、Kinesis ストリームから以前の実行と正確に同じ入力レコードが渡されることが保証されます。

Q: 反復計算で Kinesis ストリームからのレコードが有効期限切れになった場合、どうなりますか?

反復計算の開始シーケンス番号または終了シーケンス番号あるいはその両方が、Kinesis ストリームで有効期限切れになっているレコードに属している場合、Hadoop ジョブは失敗します。別の論理名を使用して、Kinesis ストリームの先頭からデータを処理することが必要になります。

Q: EMR から Kinesis ストリームにデータをプッシュできますか?

いいえ。EMR Kinesis コネクタは現在のところ Kinesis ストリームへのデータの書き戻しをサポートしていません。

Q: Kinesis 用 EMR Hadoop 入力コネクタで連続ストリーム処理は可能ですか?

Hadoop MapReduce フレームワークはバッチ処理システムです。したがって、連続クエリはサポートされていません。ただし、Twitter Storm や Spark Streaming のような Hadoop エコシステムフレームワークが出現してきており、開発者はそれらを使用して連続ストリーム処理のためのアプリケーションを構築できます。Kinesis 用 Storm コネクタは GitHub でこちらから利用できます。また、Spark Streaming を EMR にセットアップして連続クエリを実行する方法を説明したチュートリアルをこちらから参照できます。

さらに、開発者は Kinesis クライアントライブラリを使用してリアルタイムのストリーム処理アプリケーションを開発できます。カスタム Kinesis アプリケーションの開発に関する詳細情報については、こちらから Kinesis ドキュメントを参照してください。

Q: 別の AWS アカウントで管理されている Kinesis ストリームを読み取るためのアクセス認証情報を指定できますか?

はい。Kinesis ストリームを所有しているアカウントの適切なアクセス認証情報を指定することにより、別の AWS アカウントからストリームを読み取ることができます。デフォルトでは、Kinesis コネクタはクラスター作成時に指定されたユーザー提供のアクセス認証情報を使用します。その認証情報を無効にして、他の AWS アカウントのストリームにアクセスすることができます。そのためには、kinesis.accessKey および kinesis.secretKey パラメータを設定します。次の例は、Hive および Pig で kinesis.accessKey および kinesis.secretKey パラメータを設定する方法を示しています。

Hive のコード例:
...
STORED BY
'com.amazon.emr.kinesis.hive.KinesisStorageHandler'
TBLPROPERTIES(
"kinesis.accessKey"="AwsAccessKey",
"kinesis.secretKey"="AwsSecretKey",
);

Pig のコード例:

raw_logs = LOAD 'AccessLogStream' USING com.amazon.emr.kinesis.pig.Kin
esisStreamLoader('kinesis.accessKey=AwsAccessKey', 'kinesis.secretKey=AwsSecretKey'
) AS (line:chararray);

Q: 単一の Kinesis ストリームで複数の並行クエリを実行できますか? パフォーマンスへの影響はありますか?

はい。各クエリに別々の論理名を使用することで、同じストリームで複数の並行クエリを実行できます。ただし、Kinesis ストリーム内のシャードからの読み取りは、2 MB/秒の速度制限の対象になります。そのため、同じストリームで N 個の並行クエリを実行している場合、各クエリはストリーム上のシャードごとに約 (2/N) MB/秒の送信速度になります。これにより、処理速度が低下することがあり、場合によってはクエリが失敗する可能性もあります。

Q: EMR で複数の Kinesis ストリームを結合して分析できますか?

はい。例えば Hive で、2 つの異なる Kinesis ストリームにマップしている 2 つのテーブルを作成し、それらのテーブル間に結合を作成することができます。

Q: EMR Kinesis コネクタは、マージイベントや分割イベントのような Kinesis スケーリングイベントを処理しますか?

はい。実装により分割イベントとマージイベントが処理されます。Kinesis コネクタは個々の Kinesis シャード(Kinesis ストリーム内の論理的なスケール単位)を Hadoop MapReduce マップタスクに関連付けます。反復計算の論理的な期間中にストリーム内に存在する個々の一意のシャードは、厳密に 1 個のマップタスクになります。シャードの分割イベントまたはマージイベントにおいて、Kinesis が新しい一意のシャード ID をプロビジョニングします。その結果、MapReduce フレームワークは、より多くのマップタスクを Kinesis から読み取るようにプロビジョニングします。このすべてがユーザーには透過的に行われます。

Q: ストリームに「無音」の期間があった場合はどうなりますか?

実装では、kinesis.nodata.timeout というパラメータを設定できます。例えば、kinesis.nodata.timeout が 2 分に設定されていて、Hive クエリを 10 分間隔で実行するシナリオを考えてみます。また、前回の反復計算(10 分前)以降にデータがストリームに書き込まれているとします。ただし、現時点で新しいレコードは着信していません。つまり、ストリームに無音が存在します。この場合、クエリの現在の反復計算が呼び出されると、Kinesis コネクタは新しいレコードが着信していないことを認識します。コネクタは 2 分間ストリームへのポーリングを続け、その間にレコードが着信しない場合は、ポーリングを停止して、ストリームの現在のバッチで既に読み取られているレコードのみを処理します。ただし、kinesis.nodata.timeout の間隔がタイムアウトする前に新しいレコードが到着し始めた場合、コネクタは kinesis.iteration.timeout というパラメータに対応する間隔だけ続けて待機します。これらのパラメータの設定方法については、チュートリアルを参照してください。

Q: 反復計算ごとに連続して失敗するクエリをデバッグするには、どうすればよいですか?

処理エラーの場合は、Hadoop ジョブのデバッグに現在使用されているのと同じツールを使用できます。Amazon EMR ウェブコンソールも、エラーログを特定してアクセスするのに役立ちます。EMR ジョブのデバッグの詳細については、こちらを参照してください。

Q: アクセス権がない DynamoDB テーブルを指定すると、どうなりますか?

ジョブは失敗し、ジョブのエラーログに例外が表示されます。

Q: ジョブにエラーが発生していなくても DynamoDB に対するチェックポイントの取得が失敗した場合は、どうなりますか?

ジョブは失敗し、ジョブのエラーログに例外が表示されます。

Q: Kinesis ストリームから EMR への読み取りのスループットを最大化するには、どうすればよいですか?

Kinesis ストリームのスループットは、使用するインスタンスサイズおよび Kinesis ストリームのレコードサイズが大きいほど、大きくなります。この機能を使用するためには、マスターノードおよびコアノードの両方に m1.xlarge 以上を使用することをお勧めします。

トップに戻る >>