Amazon Web Services ブログ

Category: Analytics

Amazon Kinesis Data Firehose、Amazon Athena、Amazon Redshift を使用して Apache Parquet 最適化データを分析する

Amazon Kinesis Data Firehoseは、 Amazon S3で構築されたデータを取得し、データレイクへデータを流し入れる最も簡単な方法です。このデータは、AWS CloudTrail ログファイル、Amazon VPC フローログ、Application Load BalancerなどのAWSのサービスによるものです。IoTイベント、ゲームイベントなどにもなります。このデータを効率的に参照するには、時間のかかるETL (抽出、転送、ロード)処理が必要です。最適なファイルフォーマットへデータを抽出、変換することで、インサイトへの時間が増えます。この状況は、特に時間とともに価値が失われるリアルタイムデータ向けには最適とはいえません。 この通常の問題を解決するために、Kinesis Data Firehoseでは、Apache Parquet または Apache ORC フォーマット内でAmazon S3へデータを保存できます。S3でデータを参照する場合、最適なパフォーマンスとコスト効率に優れた、推奨される最適なカラムナフォーマットがあります。これにより、Amazon Athena、Amazon Redshift、AWS Glue、Amazon EMR、またはAWS パートナーネットワークから、またオープンソースコミュニティから利用できるその他のビッグデータツールを使用する場合に、直接的なメリットがあります。 Amazon Connectは、使いやすい、クラウドベースの連絡センターサービスです。通常のサービスよりも低コストで優れた顧客体験を簡単に提供することができます。オープンプラットフォーム設計により、他のシステムと簡単に統合できます。その中のシステムの1つとして、Kinesis Data Streams および Kinesis Data Firehose内のAmazon Kinesisがあります。 Apache Parquetフォーマット内の Amazon ConnectからS3までイベントを保存できることは素晴らしいことです。リアルタイムに Amazon Athena および Amazon Redshift Spectrumを使用して、この主なパフォーマンスとコスト最適化を利用した分析を実行できます。もちろん、Amazon Connectはその1例です。これにより、特に、組織がデータレイクを継続的に構築する場合、最適な機会が開けるでしょう。 Amazon Connectには、管理者ダッシュボード内に一連の分析表示が含まれています。しかし、その他の種類の分析を実行したい場合もあるでしょう。この投稿では、Kinesis Data Streams、Kinesis Data Firehose、S3を経由してAmazon Connectからのデータストリームを設定し、Athena および […]

Read More

AWS Glue を使用して非ネイティブ JDBC データソースに対して ETL ジョブを実行する

AWS Glue は、抽出、変換、およびロード (ETL) のための完全管理型サービスで、これで分析のためのデータの準備と読み込みが簡単になります。AWS マネジメントコンソールで数回クリックするだけで ETL ジョブを作成し実行することができます。AWS Glue をデータストアにポイントするだけです。AWS Glue はデータを検出し、関連付けられたメタデータ (テーブル定義やスキーマなど) を AWS Glue データカタログに保存します。 AWS Glue には、IP 接続がある限り、AWS やその他の場所で JDBC ドライバーを用いたデータソースへのネイティブコネクタがあります。この記事では、現在のところ AWS Glue でネイティブにサポートされていないデータソースに接続する方法を示します。IBM DB2 と SAP Sybase の 2 つのデータソースに対する ETL ジョブへの接続と実行をご紹介します。ただし、他の JDBC アクセス可能データベースと同じプロセスを使用することもできます。

Read More

[AWS Black Belt Online Seminar] AWS で構築するデータレイク基盤のアーキテクチャ 資料及び QA 公開

こんにちは、マーケティングの鬼形です。 先日(2018/4/24)開催しました AWS Black Belt Online Seminar「AWS で構築するデータレイク基盤のアーキテクチャ」の資料を公開致しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。

Read More

AWS Developer Toolsを使用したサーバレスなAWS Glue ETLアプリケーションの継続的インテグレーションとデリバリの実装

大規模なデータおよびデータレイクのワークロード用にサーバーレスETL(抽出、変換およびロード)アプリケーションを開発するためにAWS Glueはますます普及しています。 ETLアプリケーションをクラウドベースのサーバーレスETLアーキテクチャに変換する組織は、ソースコードからビルド、デプロイ、プロダクトデリバリまで、シームレスでエンドツーエンドの継続的なインテグレーションおよび継続的なデリバリ(CI / CD)パイプラインが必要です。優れたCI / CDパイプラインを持つことで、組織はプロダクションリリース前にバグを発見し、より頻繁にアップデートを提供することができます。また、開発者が高品質のコードを書いたり、ETLのジョブリリース管理プロセスを自動化したり、リスクを軽減したりするのに役立ちます。 AWS Glueは、フルマネージドのデータカタログとETLのサービスです。これは、データの発見、変換、およびジョブスケジューリングなどの困難で時間のかかる作業を簡素化し自動化します。 AWS Glueは、データソースをクロールし、CSV、Apache Parquet、JSONなどの一般的なデータフォーマットとデータタイプ用に事前に作成された分類子を使用してデータカタログを構築します。 AWS Glueを使用してETLアプリケーションを開発する場合、CI / CDの次のような課題に直面する場合があります。 ユニットテストによる繰り返しの開発 継続的なインテグレーションとビルド ETLパイプラインをテスト環境にプッシュする ETLパイプラインをプロダクション環境にプッシュする 実データを使用したETLアプリケーションのテスト(live test) データの調査と検証 この記事では、AWS Developer Tools(AWS CodePipeline、AWS CodeCommit、AWS CodeBuildなど)とAWS CloudFormationがサポートするサーバーレスAWS Glue ETLアプリケーションのCI / CDパイプラインを実装するソリューションを紹介します。 ソリューションの概要 次の図は、ワークフローのパイプラインを示しています。 このソリューションでは、AWS CodePipelineを使用して、ETLアプリケーションのソースコードのテストおよびステージへのデプロイを制御および自動化することができます。 このソリューションは、以下のステージを含むパイプラインで構成されています。 1.)Source Control:このステージでは、デプロイするETLジョブのAWS Glue ETLジョブソースコードとAWS CloudFormationテンプレートファイルの両方がバージョン管理にコミットされます。 バージョン管理にAWS CodeCommitを使用することにしました。 ETLジョブソースコードとAWS CloudFormationテンプレートを取得するには、gluedemoetl.zipファイルをダウンロードします。 このソリューションは、以前の記事、AWS Glue と Amazon S3 を使用してデータレイクの基礎を構築するに基づいて開発されました。 2.)LiveTest:このステージでは、AWS […]

Read More

AWS Glue のパーティション分割されたデータを使用した作業

AWS Glue は、Hive 形式で整理されたデータセットの高度な取扱いをサポートします。AWS Glue クローラーは、自動的に Amazon S3 データのパーティションを識別します。AWS Glue ETL (Extract/Transform/Load) ライブラリは、DynamicFrame を取り扱う際、ネイティブでパーティションをサポートします。DynamicFrame はデータの分散コレクションを表します。スキーマを指定する必要はありません。DynamicFrame の作成時に述語をプッシュダウンしてパーティションをフィルタリングし、高コストの S3 への呼び出しを回避できます。また、Apache Spark DataFrame に変換することなく直接パーティショニングされたディレクトリに書き込む機能のサポートを追加しました。 パーティショニングは、データセットを様々なビッグデータシステムで効率的にクエリできるように、それらを整理するための重要な手法となっています。データは、ひとつまたは複数の列の重複しない値に基づいて、階層ディレクトリ構造にまとめられます。たとえば、Amazon S3 のアプリケーションログを、年別、月別、日別の内訳で日付ごとにパーティショニングするとします。すると、1 日分に相当するデータがs3://my_bucket/logs/year=2018/month=01/day=23/のようなプレフィックスの下に配置されます。 Amazon Athena、Amazon Redshift Spectrum、AWS Glue などのシステムでは、これらのパーティションを使用して値ごとにデータをフィルタリングできるため、Amazon S3 への不要な呼び出しを行う必要がありません。このため、読み取る必要のあるパーティションが少ないアプリケーションのパフォーマンスが大幅に改善します。 本投稿では、AWS Glue を使用してパーティショニングされたデータセットを効率的に処理する方法を紹介します。まず、クローラーを設定して、パーティショニングされたデータセットを自動的にスキャンし、AWS Glue データカタログにテーブルとパーティションを作成する方法を説明します。次に、パーティショニングされたデータを取り扱うための AWS Glue ETL ライブラリの機能をいくつか紹介します。SQL 式やユーザー定義の関数を使用してパーティションをフィルタリングし、Amazon S3 からの不要なデータのリスト作成や読み取りを回避することができます。また、ETL ライブラリでは、Spark SQL DataFrame に依存することなく、AWS Glue DynamicFrame をパーティションに直接記述する機能のサポートを追加しました。 それでは、始めましょう。 パーティショニングされたデータのクローリング この例では、以前の […]

Read More

【開催報告】AWS 上でのデータ活用ワークショップ

こんにちは。AWS ソリューションアーキテクトの上原誠 (@pioho07) です。 3月14日のホワイトデーに、AWS上でのデータ活用ワークショップを開催いたしました。 直前のご案内にもかかわらず80名ほどのお客様にご参加頂きました。   まずはソリューションアーキテクトの八木より、データ活用のための一般的なDataLakeの考え方について触れ、ラムダアーキテクチャの解説を行いその優位性を説明しました。その後でAWS上でこられらを実現するためのAWSの各サービス Amazon S3 や Amazon Elasticsearch Service や Amazon Kinesis などを紹介し、アーキテクチャー図と共に解説を行いました。     次に、私上原からラムダアーキテクチャーを使ったDataLakeを構築するハンズオンを実施しました。まだデータ量は大きくないが、今後増え続けるデータに対してデータ活用を始めていきたい!そんな方がすぐに実践で使えるようなサービスやサービスの組み合わせを意識した内容にいたしました。       また、ハンズオン後に実施したソリューションアーキテクトによる個別相談会にも多くのお客様にご参加頂きました。 アンケートでも励みになるお言葉を頂けました。 無料で受けたセミナーなのにとても充実していてすごいと思った 内容が事業会社のエンジニア向けと感じた 次回は夏ごろに開催予定です。ご応募是非お待ちしております。      

Read More

Pgpool と Amazon ElastiCache を使って Amazon Redshift でクエリーキャッシュを実現する

Felipe Garcia と Hugo Rozestraten は  Amazon Web Services の  Solutions Architect です。 この記事では、実際のお客様の事例をもとに、Amazon Redshift の前段に pgpool と Amazon ElastiCache を使ってキャシングレイヤを構築する方法を紹介します(訳注:原文執筆時にはRedshiftにキャッシュ搭載されていなかったのですが、現在はRedshiftには結果キャッシュの機能が備わっているため、キャッシュするだけのためにこのようなソリューションを作成する必要はありません。しかしpgpoolはキャッシュ以外にも利用できる柔軟なソリューションであり、それを分かりやすく示している資料として価値があるため、翻訳記事を掲載しています) 近年、業務アプリケーションはほとんどの場合データベースの利用を想定して構築されます。SQLによるデータベースへのクエリは広く普及した技術ですが、エンドユーザとアプリケーション間の協調を意識しないアーキテクチャ設計が、まったく同一のクエリの複数回実行といった無駄な処理を時として発生させます。このような冗長な処理は計算資源の無駄遣いであり、こういった無駄を省くことができれば他の処理に計算資源を有効活用することができるようになります。 キャッシュとは コンピュータ用語としてのキャッシュは、将来発生し得るリクエストに迅速に回答するためにデータを事前に蓄積しておくハードウェアコンポーネントまたはソフトウェアコンポーネントを指します。また、必要なデータがキャッシュの中に見つかることをキャッシュヒットといい、必要なデータがキャッシュの中に存在しないことをキャッシュミスといいます。キャッシュの存在により、重い計算の再実行や遅いデータストアからの読み出しが発生しなくなり、高速に結果を得られるようになります。より多くの要求がキャッシュで処理できれば、システムはより高いパフォーマンスを発揮することができます。 お客様事例:臨床研究での遺伝子情報の検索 この事例では、6-10名程度からなる科学者のチームが200万からなる遺伝子のコードの中から特定の遺伝子変異を探し出します。特定の遺伝子変異に隣接する遺伝子も重要な遺伝子で、これらにより異常や病気などが特定できるようになります。 科学者たちは、1つのDNAサンプルをチームで同時に解析し、その後ミーティングを開き自分たちの発見について議論し、結論へと到達します。 この事例では、Node.js のウェブアプリケーションにロジックを実装し、Amazon Redshift にクエリを発行しています。Amazon Redshfit に直接接続したアプリケーションでは、クエリのレイテンシは約10秒でした。アーキテクチャを変更しpgpoolを使用するようにしたところキャッシュにヒットした際に1秒未満で同一のクエリの結果を得られるようになりました。(言い換えると、キャッシュヒット時に10倍高速に応答できるようになりました。) (訳注:現時点ではRedshiftに結果キャッシュの機能が存在するため、こういった仕組み無しでもキャッシュヒット時に高速な応答が実現されています) Pgpoolの紹介 Pgpool はデータベース・クライアントとデータベース・サーバの間で動作するソフトウェアです。リバースプロキシとして動作し、クライアントからの接続要求を受け、サーバへとそれをフォワードします。もともと PostgreSQL のために書かれており、キャッシング以外にも、コネクションプーリング、レプリケーション、ロードバランシング、コネクションキューイングといった機能を備えます。本稿では、キャッシング機能のみを検証しています。 Pgpool は、Amazon EC2 上でも、オンプレミス環境でも動作させることができます。たとえば、開発やテスト目的でEC2のシングル構成をとるこもできますし、本番環境のために Elastic Load Balancing 、Auto Scaling 構成のEC2複数台構成をとることもできます。 臨床研究の事例では、psql(コマンドライン)と Node.js アプリケーションから Amazon Redshift に対してクエリを発行していて、実際に期待通りに動作することが確認できています。ご自身の環境に適用する場合には、十分な検証を経た上での採用をおすすめいたします。   […]

Read More

[AWS Black Belt Online Seminar] データウェアハウスのAWSへの移行 資料及びQA公開

こんにちは、ソリューションアーキテクトの有岡です。 先日(2018/3/19)開催致しました AWS Black Belt Online Seminar「データウェアハウスのAWSへの移行」の資料を公開いたしました。当日、参加者の皆様から頂いた QA の回答と併せてご紹介致します。

Read More