Amazon Web Services ブログ

Category: AWS Big Data

Amazon Kinesis Data Firehose により、VPC のプライバシー内で Amazon Elasticsearch Service にストリーミングデータを取り込む

 今日、新しい Amazon Kinesis Data Firehose 機能を追加します。これにより、Kinesis Data Firehose から Amazon Elasticsearch Service ドメインへの VPC 配信をセットアップできます。Amazon Kinesis Data Streams でカスタムアプリケーションを管理してトラフィックを非公開にしている場合は、Kinesis Data Firehose を使用して、VPC 内の Amazon Elasticsearch Service エンドポイントにデータをロードすることができます。それを行うのに、取り込みと配信のインフラストラクチャに投資、運用、拡張する必要はありません。Kinesis Data Firehose コンソール、AWS CLI、および API からこの新機能の使用を開始するには、宛先として Amazon Elasticsearch Service、VPC がアクセスできる特定のドメインを選択し、サブネットとオプションのセキュリティグループで VPC を設定します。 この機能のご利用前に Amazon Elasticsearch Service ドメインは、パブリックまたはプライベートエンドポイントを持つことができます。パブリックエンドポイントは、パブリックインターネット上の IP アドレスでバックアップされています。プライベートエンドポイントは、VPC の IP スペース内の IP アドレスでバックアップされています。 Amazon Elasticsearch Service […]

Read More

AWS Systems Manager を使用して RStudio で Amazon EMR エッジノードをデプロイする

 RStudio は、統計計算とグラフィックスのための言語と環境である R の統合開発環境 (IDE) です。データサイエンティストとして、R と Spark (ビッグデータ処理フレームワーク) を統合して、大規模なデータセットを分析できます。sparklyr と呼ばれる R パッケージを使用して、大規模なデータセットのフィルタリングと集計を R スクリプトから Spark にオフロードし、R のネイティブの強度を使用して、Spark からの結果をさらに分析および視覚化できます。 RStudio で実行されている R スクリプトは、sparklyr を使用して Spark ジョブをクラスターに送信します。通常、R スクリプトは (sparklyr とともに)、Spark を実行する (Amazon EMR の) マシンのクラスターとは別のマシンにインストールされている RStudio 環境で実行されます。sparklyr が Spark ジョブを送信できるようにするには、RStudio マシンと Spark を実行しているクラスターの間にネットワーク接続を確立する必要があります。そのための 1 つの方法は、RStudio をエッジノードで実行することです。これは、クラスターのプライベートネットワークの一部であり、RStudio などのクライアントアプリケーションを実行するマシンです。エッジノードを使用すると、Hadoop のコアサービスを実行するノードとは別にクライアントアプリケーションを実行できます。エッジノードは、ローカルの Spark および Hive シェルへの便利なアクセスも提供します。 ただし、エッジノードのデプロイは簡単ではありません。それらのエッジノードには、Hadoop クラスターと同じバージョンの Hadoop、Spark、Java、およびその他のツールが必要であり、クラスター内のノードと同じ […]

Read More

Amazon の機械学習とデータレイクでエネルギー使用量を予測する

あらゆる種類や規模の公益事業やエネルギー供給会社の幹部は、エネルギー使用量を予測するというニーズを複数抱えています。たとえば最高顧客責任者として、あなたのチームは家庭レベルのエネルギー使用量を予測して、そのご家庭に高額請求の可能性があると警告を送ったり、前払いや月末のエネルギー料金を予測したりすることができます。エネルギー効率化および商業エネルギープログラムの責任者として、あなたのチームはさまざまなエネルギー効率化施策を適用した際にどれくらいエネルギー消費を抑えられるのかを予測したり、最適な施策をおすすめしたりすることができます。

Read More

EMR 6.0.0 の Docker を使用して、Spark の依存関係の管理を簡素化する

強力なデータ処理エンジンである Apache Spark で、データアナリストやエンジニアリングチームが簡単に API やツールを使ってデータを分析できるようになります。しかし、チームで Pythonや R ライブラリの依存関係を管理するのが難しいことがあります。ジョブを実行する前に必要となる可能性がある依存関係のあるライブラリをすべてインストールし、ライブラリのバージョンの競合に対処するのは、時間がかかり、複雑な作業となります。Amazon EMR 6.0.0 では、Docker Hub および Amazon ECR からの Docker イメージを使用して依存関係をパッケージ化できるようにすることで、これを簡素化しています。このため、クラスター全体でクモの巣のような依存関係を管理する必要がなくなり、個々の Spark ジョブまたはノートブックの依存関係をパッケージ化し、管理できるようになります。 この投稿では、Docker を使って Amazon EMR 6.0.0 および EMR Notebooks でノートブックの依存関係を管理する方法を解説します。EMR 6.0.0 クラスターを起動し、ノートブック固有の Amazon ECR の Docker イメージを EMR Notebooks で使用します。 Docker イメージの作成 まず、Docker イメージを作成します。これには、Python 3 と最新バージョンの numpy Python パッケージを含めます。Dockerfile を使用して Docker イメージを作成します。このファイルは、イメージに含めるパッケージと設定を定義するものです。Amazon EMR 6.0.0 で使用する […]

Read More

EMR 6.0.0 での Hive LLAP の使用で 2 倍速くなる Apache Hive

 お客様は、Amazon S3 に保存されたペタバイト規模のデータへの SQL ベースのアクセスを提供するために Amazon EMR で Apache Hive を使用します。Amazon EMR 6.0.0 には Hive LLAP のサポートが追加され、EMR 5.29 よりも 2 倍速い平均パフォーマンスに加えて、個々の Hive TPC-DS クエリでも最大 10 倍の向上を実現します。この記事では、Hive LLAP を有効化する方法を紹介し、TPC-DS ベンチマークからのクエリを使用して観測したパフォーマンス向上について説明します。 Amazon EMR 5.29.0 と比べて速度が 2 倍に Amazon EMR のリリース 6.0.0 で Hive を実行するパフォーマンスメリットを評価するために、6 ノードの c4.8xlarge EMR クラスターで 3 TB の Apache Parquet データセットに 70 個の […]

Read More

Amazon EMR で Dr. Elephant と Sparklens を使って、Hadoop と Spark のパフォーマンスを調整する

 データエンジニアや ETL 開発者はさまざまなパラメータを使用しながら、かなりの時間を費やして Apache Spark ジョブを実行および調整し、パフォーマンスの評価を行うことがよくありますが、これは簡単ではなく、時間のかかる作業です。Dr.Elephant と Sparklens はワークロードをモニタリングしたり、推奨する変更を提案することで、Spark や Hive のアプリケーションの調整を支援し、必要とされるエグゼキューターノード、コアノード、ドライバーメモリおよび Hive (Tez または MapReduce) ジョブといったパフォーマンスパラメータをマッパー、レデューサー、メモリ、データスキューの構成で最適化します。Dr.Elephant はジョブメトリクスを収集し、そのメトリクス上で分析を行い、最適化のための推奨事項をシンプルに提示するため、使用や修正が簡単です。同様に Sparklens では、Spark アプリケーションとコンピューティングリソースのスケーラビリティの制限を簡単に把握できます。そのため、試行錯誤による方法ではなく明確に定義されたメソッドで効率的に実行でき、開発者の時間やコンピューティングに費やす時間を節約します。 この投稿は、Amazon EMR クラスターに Dr. Elephant と Sparklens をインストールし、ワークロードを実行して、これらのツールの機能を実証する方法をご紹介するためのものです。Amazon EMR は AWS が提供する Hadoop のマネージドサービスで、AWS で Hadoop やその他のオープンソースフレームワークを簡単かつコスト効率よく実行できます。 以下の図は、このソリューションのアーキテクチャを示しています。データエンジニアや ETL 開発者は Amazon EMR クラスターにジョブを送信し、Dr. Elephant と Sparklens ツールの推奨事項に基づいて、Spark アプリケーションとコンピューティングリソースを最適化し、パフォーマンスと効率を向上させることができます。 前提条件のステップ 新しい EMR クラスターの作成 Dr. […]

Read More

クライアントが API Gateway を使用した Apache Kafka との対話方法を管理する

そのうち、あなたは次のような疑問を抱くかも知れません。 Apache Kafka (MSK) の Amazon Managed Streaming に IAM 認証または承認を実装するには、どうすればよいですか? クラスターにクォータを設定せずに、特定のシナリオに基づいて急増するトラフィックから Apache Kafka クラスターを保護する方法を教えてください。 JSON スキーマに準拠したリクエストを検証する方法を教えてください。 URI、クエリ文字列、ヘッダーにパラメータが含まれていることを確認する方法を教えてください。 Amazon MSK で、エージェントまたはネイティブの Apache Kafka プロトコルを使用せずに、軽量クライアントにメッセージを取り込む方法を教えてください。 これらのタスクは、カスタムプロキシサーバーまたはゲートウェイを使用して実現できますが、これらのオプションを実装して管理するのは困難です。一方、API Gateway はこれらの機能を備えている完全マネージド型の AWS サービスです。 このブログ記事では、Amazon MSK クラスターとクライアント間のコンポーネントとして、Amazon API Gateway がこれらの質問にどう答えるかを示しています。 Amazon MSK は Apache Kafka 向けの完全マネージド型サービスで、サーバーをプロビジョニングしたり、ストレージを管理したり、Apache Zookeeper を手動で設定したりする必要なく、数回クリックするだけで Kafka クラスターを簡単にプロビジョニングできます。Apache Kafka は、リアルタイムストリーミングデータのパイプラインとアプリケーションを構築するためのオープンソースプラットフォームです。 一部のユースケースには、ネイティブの Kafka プロトコルをサポートしていない軽量 IoT デバイスからのメッセージの取り込みや、サードパーティー製 API を含む他のバックエンドサービスとストリーミングサービスの調整が含まれます。 このパターンには、次のトレードオフもあります。 […]

Read More

Apache Flink と Amazon Kinesis Data Analytics を使用した ETL のストリーミング

ほとんどの企業は、リアルタイムで増え続ける量のデータを継続的に生成します。データは、ユーザーがモバイルゲームをプレイし、ロードバランサーがリクエストをログに記録し、顧客がウェブサイトで買い物をし、IoT センサーの温度が変化する場合に生成されます。このデータを迅速に分析することで、時間に敏感なイベントを活用し、顧客体験を向上させ、効率を高め、イノベーションを促進できます。多くの場合、これらの洞察を得る速度は、データレイク、データストア、およびその他の分析ツールにデータをロードできる速度に依存します。データの量と速度が増加するにつれて、着信データをロードするだけでなく、ほぼリアルタイムで変換および分析することも重要になります。 この記事では、洗練されたストリーミング抽出・変換・ロード (ETL) パイプラインの基礎として Apache Flink を使用する方法について説明します。Apache Flink は、データストリームを処理するためのフレームワークおよび分散処理エンジンです。AWS は、Amazon Kinesis Data Analytics を介して Apache Flink に完全マネージド型サービスを提供します。これにより、洗練されたストリーミングアプリケーションを迅速かつ簡単に、運用オーバーヘッドを抑えて、構築および実行できます。 この記事では、Apache Flink と Kinesis Data Analytics を使用して強力で柔軟なストリーミング ETL パイプラインを実装するために必要な概念について説明します。また、さまざまなソースとシンクのコード例を調べます。詳細については、GitHub リポジトリを参照してください。リポジトリには AWS CloudFormation テンプレートも含まれているため、数分で開始し、サンプルのストリーミング ETL パイプラインを調べることができます。 Apache Flink で ETL をストリーミングするためのアーキテクチャ Apache Flink は、無限と有限のデータストリーム上のステートフルな計算のためのフレームワークおよび分散処理エンジンです。Apache Kafka、Amazon Kinesis Data Streams、Elasticsearch、Amazon Simple Storage Service (Amazon S3) のコネクタを含む、高度にカスタマイズ可能な幅広いコネクタをサポートしています。さらに、Apache Flink は、イベントを変換、集約、強化するための強力な API を提供し、1 […]

Read More

Verizon Media Group がオンプレミスの Apache Hadoop および Spark から Amazon EMR に移行した方法

Verizon Media Group によるゲスト投稿です。 Verizon Media Group (VMG) が直面した大きな問題の一つに、必要な時間内にコンピューティング能力をスケールアウトできないことがありました。つまり、ハードウェアの取得に数か月かかることがよくあったのです。ハードウェアをスケーリングおよびアップグレードしてワークロードの変更に対応することは、経済的に実行が難しく、冗長管理ソフトウェアのアップグレードにはかなりのダウンタイムが必要で、多大なリスクを伴いました。 VMG では、Apache Hadoop や Apache Spark などのテクノロジーに依存し、データ処理パイプラインを実行しています。以前は Cloudera Manager でクラスターを管理していましたが、リリースサイクルが遅いことがよくありました。そのため、利用可能なオープンソースリリースの古いバージョンを実行しなければならず、Apache プロジェクトの最新のバグ修正やパフォーマンスの改善を利用することができませんでした。こうした理由から、既存の AWSへの投資と合わせて、分散コンピューティングパイプラインを Amazon EMR に移行することを検討したのです。 Amazon EMR は Apache Hadoop や Apache Spark などのビッグデータフレームワークの実行をシンプル化する、マネージドクラスタープラットフォームです。 この投稿では、データ処理のニーズに対応するためのパイプラインの構築中に発生し、解決した問題について説明します。 弊社について Verizon Media はつまるところ、オンライン広告会社です。今日のほとんどのオンライン広告は、バナー広告またはビデオ広告としても知られるディスプレイ広告を通じて行われます。すべてのインターネット広告は通常、形式に関係なく、さまざまな種類のビーコンを追跡サーバーに送信します。この追跡サーバーは受信したビーコンを 1 つまたは複数のイベントシンクに記録する唯一の責任を持つ、極めてスケーラブルなウェブサーバーをデプロイします。 パイプラインのアーキテクチャ 弊社では主に動画広告を扱っており、複数の地理的な場所にデプロイした NGINX ウェブサーバーを使用しています。これは、ビデオプレーヤーから直接発生するイベントを、リアルタイム処理用には Apache Kafka に、バッチ処理用には Amazon S3 に記録するものです。弊社グループの典型的なデータパイプラインには、このような入力フィードの処理、検証や強化ルーチンの適用、結果データの集計、およびレポート目的の宛先へのレプリケートが含まれます。次の図は、作成した典型的なパイプラインを示しています。 NGINX ビーコンサーバーで、データの取得を開始します。データは 1 分間隔でローカルディスクの gzip […]

Read More

ボンネットの下で: Kinesis データストリームのスケーリング

データとそれに伴う所見がリアルタイムに提供されるなら、ビジネスは軸足を素早く定めて、様々な要素、中でも必要性の変化、ユーザーの関与、そしてインフラストラクチャのイベントに対応できるしょう。Amazon Kinesis はマネージド型サービスを提供しているため、ユーザーはインフラストラクチャの管理に煩わされることなく、アプリケーションの構築に専念することができます。スケーラビリティは特別な労力なしで実現でき、毎秒ギガバイト単位のストリーミングを取り込んで処理できます。データは 3 か所のアベイラビリティーゾーンに複製され、高い可用性と耐久性を提供します。料金は従量制で、初期費用が必要ないので、Kinesis はコスト効率のよいソリューションとなっています。 Amazon Kinesis Data Streams は、プロビジョニング済みキャパシティーモデルを採用しています。それぞれのデータストリームは 1 つ以上のシャードから構成されており、これがキャパシティーのユニットとしての役割を果たします。シャードが定義済みの読み書き書きキャパシティーを提供するため、ストリーミングパイプラインの設計とスケーリングは容易になります。ワークロードが増えて、アプリケーションの読み書き率がシャードのキャパシティーを越えるとホットシャードの原因となり、キャパシティーをすぐに追加することが必要になります。また、シャードの使用により、大規模なデータセットの処理を並列化することもできるので、計算結果を高速に出力できます。 この記事では、データストリームをスケーリングし、ホットシャードを避ける方法について説明します。まず、ストリームパイプラインを設計する時点でデータストリームが必要とするシャード数を評価する方法を示します。それから、ホットシャードが発生する原因と、Kinesis Data Streams のスケーリングを使用してそれを避ける方法について考慮し、監視するべき重要なメトリクスを確認します。 ストリームのキャパシティーを見積もる 次の図は、1 本のストリーミングデータパイプラインがマルチプレイヤービデオゲームに接続されている様子を示しています。Kinesis Data Streams はプレイヤーのスコアや他の統計情報を取り込みます。ingest player scores and other stats.データはフィルタリングすること、および情報を追加することができ、それから DynamoDB に書き込まれて、ゲームの様々な順位表の元データとなります。 ストリーミングパイプラインの設計を始めるときには、データレコードのプロデューサーが作成するデータを取り込むことによってプロデューサーをハンドルし、同じレコードを消費するユーザーもハンドルするのに十分なキャパシティーを持つデータストリームをセットアップすることが重要です。シャードごとに、毎秒 1 MB のデータを取り込むこと、または同じくシャードごとに毎秒 1,000 のデータレコードを書き込むことができます。読み取りキャパシティーは最大でシャードごとに毎秒 2 MB、または毎秒 5 つの読み取りトランザクションに達します。あるストリームから読み取るすべてのアプリケーションは、読み取りのキャパシティーを共有します。強化されたファンアウト機能により、消費側アプリケーションの数をスケーリングすることができ、そのそれぞれが毎秒 2 MB の専用接続を持てるようにできます。 この記事では、前述のアプリケーションを例として用いることにします。プロデューサー側では毎秒 20,000 KB の割合でデータレコードを作成すると見積もられたとすると、ストリームの反対側ではそれと同じ量のデータを消費者ノードが処理する必要があります。この割合を処理できるようにすることに加え、ストリームの増大のためのヘッドルームとして追加のキャパシティーを追加しておくのは良いアイディアです。 このヘッドルームは、データの取り込みや処理で遅延や中断が発生したというシナリオにおいても、アプリケーションがすぐに回復できるようにする点でも役立ちます。そのようなシナリオとしては、次のものがあり得ます。 消費者側アプリケーションの新しいバージョンがデプロイされる 一過的なネットワークの問題 これらのノードが回復後に追いつくときには、レコードを標準の速度よりも速い速度で生成または消費することになるので、より大きなキャパシティーが必要になります。この例では、ヘッドルームとして 25% または 5 シャードを加えることにします。シャードはコスト効率のよいものですが、それはいくつ追加するかにもかかっています。 […]

Read More