Amazon Web Services ブログ

Category: AWS Big Data

Amazon EMR で Spark ストリーミングアプリケーションをモニタリングする

 アプリケーションをエンタープライズ対応にするには、本番環境に移行する前にアプリケーションの多くの側面を考慮し、アプリケーションの運用を可視化する必要があります。その可視性は、アプリケーションの正常性とパフォーマンスを測定し、アプリケーションダッシュボードとアラームをフィードするメトリクスを通じて得ることができます。 ストリーミングアプリケーションでは、さまざまなステージと各ステージ中のタスクをベンチマークする必要があります。Spark は、プローブをプラグインするためのインターフェイスを提供し、アプリケーションをリアルタイムでモニタリングおよび観察できるようにしています。SparkListeners は、スチーミングアプリケーションとバッチアプリケーションの両方に対応する柔軟で強力なツールです。これを Amazon CloudWatch メトリクス、ダッシュボード、およびアラームと組み合わせて、可視性を高め、問題が発生したときに通知を生成したり、クラスターやサービスを自動的にスケーリングしたりできます。 この記事では、シンプルな SparkListener を実装し、Spark ストリーミングアプリケーションをモニタリングおよび観察し、アラートを設定する方法を説明します。また、CloudWatch カスタムメトリクスに基づいて、アラートを使って Amazon EMR クラスターで Auto Scaling を設定する方法も示します。 Spark ストリーミングアプリケーションのモニタリング 本番環境のユースケースでは、Spark アプリケーションに必要なリソースの量を決定するために事前に計画する必要があります。多くの場合、リアルタイムアプリケーションには、各バッチの実行を安全に実行できる時間や各マイクロバッチの許容遅延時間など、満たす必要のある SLA があります。多くの場合、アプリケーションのライフサイクルの中で、入力ストリームのデータが突然増加することにより、流入するデータを処理して追いつくために、より多くのアプリケーションリソースが必要になります。 このようなユースケースでは、各マイクロバッチのレコード数、スケジュールされたマイクロバッチの実行の遅延、各バッチの実行にかかる時間などの一般的なメトリクスに興味を持たれるかもしれません。たとえば、Amazon Kinesis Data Streams では、IteratorAge メトリクスをモニタリングできます。Apache Kafka をストリーミングソースとして使用すると、最新のオフセットとコンシューマーオフセットの間のデルタなど、コンシューマーラグをモニタリングできます。Kafka には、この目的のためのさまざまなオープンソースツールがあります。 より多くのリソースをプロビジョニングするか、未使用のリソースを減らしてコストを最適化することにより、リアルタイムで対応したり、環境の変化に基づいてアラートを生成したりできます。 Spark ストリーミングアプリケーションをモニタリングするさまざまな方法が既にご利用いただけます。Spark の非常に効率的ですぐに使える機能は、Spark メトリクスシステムです。さらに、Spark は HTTP、JMX、CSV ファイルなど、さまざまなシンクにメトリクスを報告できます。 ログを出力することにより、アプリケーション内からアプリケーションメトリクスをモニタリングおよび記録することもできます。これには、count().print() の実行、マップ内のメトリクスの印刷、遅延の原因となる可能性のあるデータの読み取り、アプリケーションステージへの追加、または不要なシャッフルの実行が必要です。これは、テストには役立つ可能性はありますが、長期的なソリューションとしては高価であることがしばしば証明されています。 この記事では、別の方法について説明します。それは、SparkStreaming インターフェイスを使用する方法です。次のスクリーンショットは、Spark UI の [Streaming] タブで利用できるメトリクスを示しています。 Apache Spark リスナー Spark は内部的に、イベントベースの方法で行う内部コンポーネント間の通信を […]

Read More

気象庁の衛星”ひまわり”の収集データが、AWSと米国政府機関とのコラボにて公開されました

ひまわり 8 号からの画像。写真提供: アメリカ海洋大気庁。(他の画像も多数) 米政府機関とAWSの連携により、気象衛星「ひまわり」が収集したデータの公開に至りましたので、AWSジャパン・パブリックセクターよりお知らせします。 「アメリカ海洋大気庁 (NOAA)」 に属する「アメリカ環境衛星データ情報局 (NESDIS)」 は、宇宙衛星・船舶・基地局などの情報源から生成される地球観測データへのアクセスをセキュアかつタイムリーに提供し、国民の安全・環境・経済・生活の質を向上させることを使命としています。アメリカ環境衛星データ情報局は現在、「ひまわり 8 号」によって収集された主要な気象データセットを、 AWS を通じてPublic Datasetとして公開しており、同情報局は「ひまわり8号」から直接受信を行う米国内で唯一の機関となっています。ひまわり8号は、日本の気象庁(Japan Meteorological Agency) が開発した静止地球環境観測衛星です。この観測衛星は、日本及び東アジア・西太平洋域内の各国における天気予報、台風・集中豪雨、気候変動などの監視・予測、船舶や航空機の運航の安全確保、地球環境の監視を目的として2014年に打ち上げられました。 以下、アメリカ海洋大気庁とAWSがどのように連携し、重要な気象データへのアクセスを向上させているのか、その方法について紹介します。 重要な気象データへのアクセスを可能に AWS は2019年 12 月、アメリカ海洋大気庁とのコラボレーションの拡大を発表しました。アメリカ海洋大気庁 は日々、膨大な量のデータを生成しています。これらの大量のデータは “商用クラウド” 、つまりAWSの利用を宣言している同庁の「ビッグデータプログラム (BDP)」 を通じ、容易に分析・研究することができます。従来、こうした研究を行うためには、ユーザーは、自分の分析環境のために莫大なデータ量の ”コピー” を ”ダウンロード” して ”保存” する必要がありました。AWSを用いれば、これらの各工程は、全て過去の遺物となります。ユーザーはAWS を通じ、世界最高峰のデータ収集体制を持つ同庁の最新のデータセット、それも常に更新され続けるデータ群にアクセスできるようになるのです。 研究者や起業家は、クラウド上にオンデマンドベースでコンピューティングリソースを展開し、迅速かつ効率的に分析を、それもかつてないほどの低コストで実行することができます。 これまで多大な手間を要していたコピーもダウンロードも保存も必要なく、そしてそれらに要してきた時間もコストも人員も、圧倒的な効率化が可能です ──── つまりは、真にミッションクリティカルな研究課題や新ビジネスの創造にのみ、集中することができるのです。 このAWSとアメリカ海洋大気庁のコラボレーションを通じて現在利用できる最も重要なデータセットの 1 つが、気象庁 が運用するひまわり 8 号のもたらす衛星データセットです。このデータセットは、オープンデータの公開ライブラリーであるAWS の Registry of Open Data を通じて誰でもアクセスできます。(なお、公的機関向けにストレージ費用をAWSが負担する「AWS Public Dataset Program」の取り組みについては、日本の農水省との取り組みを紹介したこちらのブログもご参照ください。) AWSクラウドで、衛星データ情報局はミッションを達成 将来に渡る大規模なクラウド導入計画の一部として、アメリカ環境衛星データ情報局は、同機関の「共通クラウドフレームワーク (Common Cloud […]

Read More

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