Amazon EMR の Apache Hadoop

EMR での Apache Hadoop を使用すべき理由

Apache™ Hadoop® は、大規模データセットの効率的な処理に使用できるオープンソースのソフトウェアプロジェクトです。データの処理と保存を単独の大型コンピュータで行う代わりに、Hadoop では商用ハードウェアをクラスター化して、巨大なデータセットの分析を並列実行できます。

Hadoop エコシステムには多数のアプリケーションと実行エンジンが存在し、分析ワークロードのニーズに合わせてさまざまなツールが提供されています。 Amazon EMR では、完全に設定済みかつ伸縮自在な Amazon EC2 インスタンスクラスターを簡単に作成および管理できます。これらのクラスターでは、Hadoop と、Hadoop エコシステム内の他のアプリケーションを実行します。

Hadoop エコシステム内のアプリケーションとフレームワーク

Hadoop とは、一般的に MapReduce (実行フレームワーク)、YARN (リソースマネージャー)、HDFS (分散ストレージ) を含む実際の Apache Hadoop プロジェクトを指します。Hadoop MapReduce の代わりに実行エンジンとして使用できる次世代のフレームワークである Apache Tez をインストールすることもできます。Amazon EMR には、Hadoop からストレージレイヤーとして Amazon S3 を使用するためのコネクタである EMRFS も含まれています。

さらに、Hadoop エコシステムには、低レイテンシークエリを実現するツール、インタラクティブなクエリ実行のための GUI、SQL などのさまざまなインターフェイス、分散型 NoSQL データベースといった他のアプリケーションやフレームワークも含まれています。Hadoop エコシステムには、Hadoop のコアコンポーネントに追加機能を構築するために設計されたオープンソースのツールが多数含まれており、Amazon EMR を使用することで、Hive、Pig、Hue、Ganglia、Oozie、HBase といったツールを簡単にクラスターにインストールして設定することができます。Amazon EMR での Hadoop に加えて、インメモリ処理用の Apache Spark や、インタラクティブ SQL 用の Presto などの他のフレームワークも実行できます。

Hadoop: 基本コンポーネント

Amazon EMR は、クラスターのノード間で、Hadoop MapReduce、YARN、HDFS、Apache Tez などの Hadoop プロジェクト内のアプリケーションをプログラムによってインストールおよび設定します。

Hadoop MapReduce と Tez は Hadoop エコシステム内の実行エンジンで、ジョブを小さな部分に細分化するフレームワークを使用してワークロードを処理します。細分化されたジョブは、Amazon EMR クラスター内の複数のノードに分散できます。Hadoop MapReduce と Tez は、クラスター内のどのマシンにも障害が発生する可能性があることを考慮に入れて構築されており、耐障害性のある設計になっています。タスクを実行しているサーバーに障害が発生した場合は、Hadoop により、そのタスクが完了するまで別のマシンで再実行されます。

Java で MapReduce や Tez のプログラムを記述すること、Hadoop Streaming を使用してカスタムスクリプトを並列実行すること、MapReduce や Tez の高レベルな抽象化のために Hive や Pig を利用すること、Hadoop とのやり取りに他のツールを利用することができます。

Hadoop 2 以降、リソース管理は Yet Another Resource Negotiator (YARN) によって管理されます。YARN によって、全クラスターのリソースすべてが追跡され、処理のジョブタスクを実行するためそれらのリソースが動的に割り当てられます。YARN を使うと、Hadoop MapReduce や Tez のワークロード、および Apache Spark といった他の分散フレームワークを管理できます。

Amazon EMR クラスターで EMR ファイルシステム (EMRFS) を使用することで、Hadoop のデータレイヤーとして Amazon S3 を活用できます。Amazon S3 は高度にスケーラブル、低コストで、かつ耐久性を備えた設計になっているため、ビッグデータ処理向けのデータストアとして非常に優れています。Amazon S3 にデータを保存することで、コンピューティングレイヤーとストレージレイヤーを分離させることができるため、クラスターのストレージを最大にするためにクラスターにノードを追加することなく、ワークロードに必要な CPU とメモリに合わせて Amazon EMR クラスターのサイズを設定できます。さらに、Amazon EMR クラスターがアイドル状態の場合は、終了することでコストを節減できます。この場合もデータは Amazon S3 に残ります。

EMRFS は、Hadoop で Amazon S3 に並列で高パフォーマンスの読み書きが直接行えるよう最適化されており、Amazon S3 のサーバー側とクライアント側の暗号化により暗号化されたオブジェクトを処理できます。EMRFS では、Amazon S3 をデータレイクとして使用でき、Amazon EMR の Hadoop を伸縮自在なクエリレイヤーとして使用できます。

Hadoop には、クラスターのローカルディスクに大きなブロックでデータを保存する分散ストレージシステムである Hadoop Distributed File System (HDFS) が含まれています。HDFS ではレプリケーション係数を設定でき (デフォルトは 3x)、可用性と耐久性が強化されています。HDFS によってレプリケーションがモニタリングされ、ノードの障害および新しいノードの追加に応じて、ノード間のデータのバランスが調整されます。

HDFS は Hadoop とともに Amazon EMR クラスターに自動的にインストールされ、HDFS と Amazon S3 を併用して入出力データを保存できます。Amazon EMR のセキュリティ設定を使用すると、HDFS を簡単に暗号化できます。また、Amazon EMR では、入力データが Amazon S3 に存在する場合でも、Hadoop MapReduce ジョブ内で作成された中間データには HDFS とローカルディスクを使用するよう、Hadoop を設定できます。

Hadoop を Amazon EMR で運用する利点

新しい Hadoop クラスターを動的にすばやく初期化することや、既存の Amazon EMR クラスターにサーバーを追加することができ、ユーザーやデータサイエンティストがリソースを利用できるようになるまでの時間を大幅に短縮します。Hadoop を AWS プラットフォームで使用することにより、実験や開発のためのリソース割り当てにかかるコストと時間が減少し、組織としての俊敏性が向上します。

Hadoop の設定、ネットワーク、サーバーインストール、セキュリティ設定、継続的な管理メンテナンスは、複雑で困難なアクティビティになる可能性があります。マネージドサービスの Amazon EMR では Hadoop のインフラストラクチャ要件が処理されるため、ユーザーはコアビジネスに専念することができます。

Hadoop 環境を Amazon S3Amazon KinesisAmazon RedshiftAmazon DynamoDB などの他のサービスと簡単に統合して、AWS プラットフォーム上のさまざまなサービス間でデータの移動、ワークフロー、分析を実現できます。さらに、AWS Glue データカタログを Apache Hive や Apache Spark のマネージドメタデータレポジトリとして使用できます。

Hadoop のジョブの多くは本質的にスパイクが発生しやすいものです。例えば、ETL ジョブは 1 時間ごと、1 日ごと、1 か月ごとに実行される場合がありますが、一方で金融会社や遺伝子配列のモデリングジョブは年に数回のみ発生するという場合があります。Amazon EMR で Hadoop を使用することで、これらのワークロードのクラスターを簡単に立ち上げ、結果を保存することができ、必要がなくなった Hadoop リソースをシャットダウンすれば、不要なインフラストラクチャのコストを削減できます。 EMR 6.x は、Hadoop 3 をサポートしており、これにより、YARN NodeManager は、EMR クラスターホスト上で直接、または Docker コンテナ内でコンテナを起動できます。詳細については、ドキュメントをご覧ください。

Amazon EMR での Hadoop を使用することで、どの AWS リージョンにおいても、必要な数のアベイラビリティーゾーンにクラスターを起動できる柔軟性が得られます。1 つのリージョンやゾーンに対する潜在的な問題や脅威は、別のゾーンにクラスターを起動することで数分のうちに簡単に回避できます。

Hadoop 環境をデプロイする前にキャパシティープランを立てた場合、しばしば高価なリソースのアイドル状態や、リソースの制限という結果が発生します。Amazon EMR では、必要なキャパシティーを持つクラスターを数分で作成でき、EMR マネージドスケーリングを使用してノードを動的にスケールアウトおよびスケールインできます。

Hadoop とビッグデータの関係

Hadoop は非常にスケーラブルであるため、ビッグデータワークロードの処理に広く使用されています。Hadoop クラスターの処理能力を向上させるには、ニーズに対応するために必要な CPU とメモリを有するサーバーを追加します。

Hadoop では高いレベルの耐久性と可用性が実現されており、コンピューティング分析ワークロードを並列処理することも可能です。処理の可用性、耐久性、スケーラビリティによって、Hadoop はビッグデータワークロードに適したものとなっています。Amazon EMR を使用することで、数分で Hadoop が動作する Amazon EC2 インスタンスのクラスターを作成および設定でき、データから価値を引き出せるようになります。

ユースケース

Apache および Hadoop は Apache Software Foundation の登録商標です。

Hadoop は、クリックストリームデータを分析して、ユーザーを区分することやユーザーの好みを把握する目的に使用できます。広告主もクリックストリームや宣伝のインプレッションログを分析することで、より効果的な宣伝の配信に活用できます。

Razorfish がクリックストリームのために Amazon EMR での Hadoop をどのように使用しているのかをご覧ください

Hadoop はウェブやモバイルアプリケーションで生成されたログの処理にも使用できます。Hadoop は、ペタバイト単位の非構造化データまたは半構造化データを、アプリケーションまたはユーザーに関する有益なインサイトに変換するのに役立ちます。

Yelp が Amazon EMR での Hadoop を使用して主なウェブサイト機能をどのように推進したのかをご覧ください

 

Hive などの Hadoop エコシステムアプリケーションでは、SQL インターフェイスを使用した Hadoop MapReduce を活用し、巨大なスケールの耐障害性を持つ分散型データウェアハウジングを実現できます。Hadoop を使用してデータを保存し、ユーザーがどのようなサイズのデータによってもクエリを送信できるようになります。

Netflix が Amazon EMR での Hadoop を使用して、どのように PB 規模のデータウェアハウスを運用しているのかをご覧ください

Hadoop では、膨大な量のゲノミクスデータや、その他の大量の科学データセットをすばやく効率的に処理することもできます。AWS は、1000 人ゲノムプロジェクトのデータをコミュニティに無料で公開しています。

AWS でのゲノミクスについてさらに読む

 

低コストながら大規模なスケーラビリティをそなえた Hadoop は、ビッグデータの収集、ソート、結合および集計を行って下流のシステムで使用しやすいデータセットを準備する、一般的な ETL ワークロードに理想的だといえます。

Euclid が ETL とデータ集計のために Amazon EMR での Hadoop をどのように使用しているのかについてお読みください