Introduction to Amazon Redshift Spectrum · Generate Collect & Store Analyze Collaborate &...

Preview:

Citation preview

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Michalis Petropoulos (ミカリス ピタポリス) Senior Software Development Manager

Amazon Redshift

July 5, 2017

Introduction to

Amazon Redshift Spectrum

What is Big Data?

取り扱うデータセットが非常に膨大かつ多様なフォーマットに

なっているのであれば、「Innovating」 を始めることが必要

どのように

「収集」「蓄積」「処理・加工」「分析」「共有」

を行うのか?

Generate

Collect & Store

Analyze

Collaborate & Act

AWSご利用企業では 1日あたり1ペタバイト 以上のデータが生成されているケースもあります

ビッグデータの取り扱いにおける課題

Generate

Collect & Store

Analyze

Collaborate & Act

AWSご利用企業では 1日あたり1ペタバイト以上のデータが生成されているケースもあります

Amazon S3にあらゆるデータを収集&蓄積

Amazon S3に ペタバイト、

エクサバイト級の データを蓄積

Generate

Collect & Store

Analyze

Collaborate & Act

ここの制約が 大きいと

分析できない データが増加 していく

収集&蓄積後、どのようにそのデータを分析するのか?

AWSご利用企業では 1日あたり1ペタバイト以上のデータが生成されているケースもあります

Amazon S3に ペタバイト、

エクサバイト級の データを蓄積

1990 2000 2010 2020

Generated DataAvailable for Analysis

Sources: Gartner: User Survey Analysis: Key Trends Shaping the Future of Data Center Infrastructure Through 2011 IDC: Worldwide Business Analytics Software 2012–2016 Forecast and 2011 Vendor Shares

Data Volume

Year

現在の課題“ダークデータ”問題 – 生成された多くのデータが分析されない

データ量

生成されたデータ

分析可能なデータ

あえて “OR” で比較すると

Amazon EMR

S3へのダイレクトアクセス

数千ノードへのスケールアウト

オープンなデータフォーマット

ポピュラーなフレームワーク

思い付きとコードで何でも可能

Amazon Redshift

ローカルディスクに対する超高速な パフォーマンス

洗練されたクエリー最適化機能

ジョインしやすいデータフォーマット

標準SQLによるクエリー

データウェアハウス用途に最適化

だけど、自分で選びたくない。

自分が選ばなきゃいけないなんておかしい。

全部できるものが欲しい!

私が欲しいのは、

洗練されたクエリー最適化機能 and スケールアウトな処理

超高速なパフォーマンス and オープンフォーマットのサポート

ローカルディスクに対するスループット and S3のスケール

全部欲しい!

ひとつのデータ処理エンジンから、

すべてのデータ処理エンジンから自分のデータへ アクセスしたい

今も未来も

Amazon Redshift Spectrum

Amazon Redshift Spectrum 大規模スケールアウトの処理層を使い、S3上のデータに対してSQLを実行

スケールアウトで

エクサバイト級に対応

伸縮自在 & 高可用性 オンデマンド

クエリ毎の費用

大規模な同時検索の並列実行

複数クラスターから

同じデータへアクセス

ETL処理は不要

データを移動させずにクエリ

フルマネージド

標準SQLをサポート

S3 SQL

クエリーを投入 SELECT COUNT(*) FROM S3.EXT_TABLE GROUP BY…

Life of a query

Amazon Redshift

JDBC/ODBC

...

1 2 3 4 N

Amazon S3 Exabyte-scale object storage

Data Catalog Apache Hive Metastore

1

クエリーはリーダーノード上でオプティマイズされ、コンパイル。どのデータをローカルストレージから得て、どれをSpectrum層にリクエストするかを決定

Life of a query

Amazon Redshift

JDBC/ODBC

...

1 2 3 4 N

Amazon S3 Exabyte-scale object storage

Data Catalog Apache Hive Metastore

2

クエリープランを 全コンピュートノードに送信

Life of a query

Amazon Redshift

JDBC/ODBC

...

1 2 3 4 N

Amazon S3 Exabyte-scale object storage

Data Catalog Apache Hive Metastore

3

コンピュートノードはData Catalogからパーティション 情報を取得 (Dynamically prune partitions)

Life of a query

Amazon Redshift

JDBC/ODBC

...

1 2 3 4 N

Amazon S3 Exabyte-scale object storage

Data Catalog Apache Hive Metastore

4

各コンピュートノードは、Amazon Redshift Spectrum層に対して複数のリクエストを送信

Life of a query

Amazon Redshift

JDBC/ODBC

...

1 2 3 4 N

Amazon S3 Exabyte-scale object storage

Data Catalog Apache Hive Metastore

5

Amazon Redshift Spectrum層のノードがS3のデータをスキャン

Life of a query

Amazon Redshift

JDBC/ODBC

...

1 2 3 4 N

Amazon S3 Exabyte-scale object storage

Data Catalog Apache Hive Metastore

6

7

Amazon Redshift Spectrum層でデータの射影、フィルタ、ジョイン、 アグリゲーションを実行

Life of a query

Amazon Redshift

JDBC/ODBC

...

1 2 3 4 N

Amazon S3 Exabyte-scale object storage

Data Catalog Apache Hive Metastore

Redshiftクラスター内で、ローカルディスク上とのジョインや最終的なアグリゲーションが実行される

Life of a query

Amazon Redshift

JDBC/ODBC

...

1 2 3 4 N

Amazon S3 Exabyte-scale object storage

Data Catalog Apache Hive Metastore

8

結果がクライアントに戻される

Life of a query

Amazon Redshift

JDBC/ODBC

...

1 2 3 4 N

Amazon S3 Exabyte-scale object storage

Data Catalog Apache Hive Metastore

9

S3上のエクサバイト級のデータに対して 分析クエリーを投入

分析クエリーを作ってみよう - #1

著者は彼女の人気シリーズで8冊目の書籍をリリースしています。 シアトル地域のために何冊注文すればよいでしょうか? 最初の数日間での販売実績は?

彼女の以前の書籍についてみてみましょう。

1 Table

2 Filters

SELECT P.ASIN, P.TITLE FROM products P WHERE P.TITLE LIKE ‘%POTTER%’ AND P.AUTHOR = ‘J. K. Rowling’

分析クエリーを作ってみよう - #2

著者は彼女の人気シリーズで8冊目の本をリリースしています。 シアトル地域のために何個注文すればよいでしょうか? 最初の数日間での販売実績は?

このシリーズでこれまでに書かれた書籍の売上を計算し、上位20の値を取得します

2 Tables (1 S3, 1 local)

2 Filters

1 Join

2 Group By columns

1 Order By

1 Limit

1 Aggregation

SELECT P.ASIN, P.TITLE, SUM(D.QUANTITY * D.OUR_PRICE) AS SALES_sum FROM s3.d_customer_order_item_details D, products P WHERE D.ASIN = P.ASIN AND P.TITLE LIKE '%Potter%' AND P.AUTHOR = 'J. K. Rowling' GROUP BY P.ASIN, P.TITLE ORDER BY SALES_sum DESC LIMIT 20;

分析クエリーを作ってみよう - #3

著者は彼女の人気シリーズで8冊目の本をリリースしています。 シアトル地域のために何個注文すればよいでしょうか? 最初の数日間での販売実績は?

このシリーズでこれまでに書かれた書籍の売上を計算し、初版の販売実績に関して、最初の3日間における上位20の値を取得します

3 Tables (1 S3, 2 local)

5 Filters

2 Joins

3 Group By columns

1 Order By

1 Limit

1 Aggregation

1 Function

2 Casts

SELECT P.ASIN, P.TITLE, P.RELEASE_DATE, SUM(D.QUANTITY * D.OUR_PRICE) AS SALES_sum FROM s3.d_customer_order_item_details D, asin_attributes A, products P WHERE D.ASIN = P.ASIN AND P.ASIN = A.ASIN AND A.EDITION LIKE '%FIRST%' AND P.TITLE LIKE '%Potter%' AND P.AUTHOR = 'J. K. Rowling' AND D.ORDER_DAY :: DATE >= P.RELEASE_DATE AND D.ORDER_DAY :: DATE < dateadd(day, 3, P.RELEASE_DATE) GROUP BY P.ASIN, P.TITLE, P.RELEASE_DATE ORDER BY SALES_sum DESC LIMIT 20;

分析クエリーを作ってみよう - #4

著者は彼女の人気シリーズで8冊目の本をリリースしています。 シアトル地域のために何個注文すればよいでしょうか? 最初の数日間での販売実績は?

このシリーズでこれまでに書かれた書籍の売上を計算し、米国ワシントン州シアトル市における初版の販売実績に関して、最初の3日間における上位20の値を取得します

4 Tables (1 S3, 3 local)

8 Filters

3 Joins

4 Group By columns

1 Order By

1 Limit

1 Aggregation

1 Function

2 Casts

SELECT P.ASIN, P.TITLE, R.POSTAL_CODE, P.RELEASE_DATE, SUM(D.QUANTITY * D.OUR_PRICE) AS SALES_sum FROM s3.d_customer_order_item_details D, asin_attributes A, products P, regions R WHERE D.ASIN = P.ASIN AND P.ASIN = A.ASIN AND D.REGION_ID = R.REGION_ID AND A.EDITION LIKE '%FIRST%' AND P.TITLE LIKE '%Potter%' AND P.AUTHOR = 'J. K. Rowling' AND R.COUNTRY_CODE = ‘US’ AND R.CITY = ‘Seattle’ AND R.STATE = ‘WA’ AND D.ORDER_DAY :: DATE >= P.RELEASE_DATE AND D.ORDER_DAY :: DATE < dateadd(day, 3, P.RELEASE_DATE) GROUP BY P.ASIN, P.TITLE, R.POSTAL_CODE, P.RELEASE_DATE ORDER BY SALES_sum DESC LIMIT 20;

S3上のエクサバイト級のデータに対して分析クエリーを投入

日次カスタマーアイテムオーダー詳細レコード: 約140TB/日(過去20年間分)

S3上の15,000のパーティション・1億9,000万ファイル(1パーティション:1日あたりの米国およびその他の地域)

処理されるデータの10億倍規模の削減が必要

1000ノードのHiveクラスタを使用してこのクエリを実行すると、5年以上かかる*

• Compression………………………………5X • Columnar file format…………………..10X • Scanning with 2500 nodes………..2500X • Static partition elimination……………..2X • Dynamic partition elimination........350X • Redshift’s query optimizer……………40X

------------------------------------------------------------- Total reduction……………………...3.5B X

* 20ノードのHiveクラスタ/1.4TBを使用して試算

(リニアにスケールと想定) * クエリは20ノード×dc1.8xlargeのAmazon

Redshiftクラスタを使用 * 実際の販売データではなく、Amazon Retailで使

用されるデータフォーマットに基づいてこのデモ用に生成

Amazon Redshift Spectrum:高速な処理

Amazon Redshiftのコストベースオプティマイザを活用

述部をプッシュダウンし、アグリゲーションやジョインを削減

Dynamic partition elimination により処理対象データを削減

S3データへのクエリ実行を自動的にパラレル化

Amazon Redshiftクラスター内での効率的なジョイン処理

Amazon Redshift Spectrum:高い費用対効果

Amazon Redshiftクラスターの料金 + S3データの1TBスキャンあたり$5

各クエリは、1000台ものSpectrum層コンピュートノードのパワーを活用

課金対象となるスキャンデータ容量の削減、

およびクエリーパフォーマンスの向上が可能

パーティション

カラムナフォーマット

データの圧縮

Amazon Redshift Spectrum:セキュア

End-to-end

data encryption

Alerts &

notifications

Virtual private cloud

Audit logging

Certifications &

compliance

SSEとAWS KMSを利用し、 S3上のデータを暗号化 KMS、AWS CloudHSM または オンプレミスのHSMを使用し、Amazon Redshift上のデータをすべて暗号化 ECDHEを使用した完全な先行暗号化でSSLを実行 Amazon Redshift リーダーノード、コンピュートノード、および スペクトラムノードはVPC内に配置、State保存は無し イベント特有の通知を電子メール、テキストメッセージ、またはAmazon SNSにて連携

すべてのAPIコールはAWS CloudTrailにて記録 すべてのSQLステートメントはAmazon Redshiftに記録

PCI/DSS FedRAMP

SOC1/2/3 HIPAA/BAA

Amazon Redshift Spectrum:標準SQL

Redshift Spectrumは既存のSQLやBIアプリケーションとシームレスに連携

複雑なジョイン、ネストクエリー、ウィンドウ関数をサポート

任意のキーでS3上のパーティションをサポート

Date, Time and any other custom keys

e.g., Year, Month, Day, Hour

外部スキーマの定義とテーブルの作成

Amazon Athenaデータカタログまたは独自のApache Hive Metastoreを使用して、Amazon Redshiftで外部スキーマを定義

CREATE EXTERNAL SCHEMA <schema_name>

右記にて外部データへクエリー <schema_name>.<table_name>

Athena、Hive MetastoreクライアントまたはAmazon Redshift CREATE EXTERNAL TABLE syntaxを使用して外部テーブルを登録

CREATE EXTERNAL TABLE <table_name>

[PARTITIONED BY <column_name, data_type, …>]

STORED AS file_format

LOCATION s3_location

[TABLE PROPERTIES property_name=property_value, …];

Amazon Redshift Spectrum – サポート対象

ファイルフォーマット

• Parquet

• CSV

• Sequence

• RCFile

• Avro (coming soon)

• ORC (coming soon)

• RegEx/Grok (coming soon)

• soon))

圧縮

• Gzip

• Snappy

• Lzo (coming soon)

• Bz2

暗号化

• SSE with AES256

• SSE KMS with default key

カラム

• Numeric: bigint, int, smallint, float, double and decimal

• Char/varchar/string

• Timestamp

• Boolean

• DATE type can be used only as a partitioning key

テーブル

• Non-partitioned table (s3://mybucket/orders/..)

• Partitioned table (s3://mybucket/orders/date=YYYY-MM-DD/..)

Amazon EMRを活用したParquetおよびORCへの変換

You can use Hive CREATE TABLE AS SELECT to convert data CREATE TABLE data_converted

STORED AS PARQUET

AS

SELECT col_1, col2, col3 FROM data_source

Or use Spark - 20 lines of Pyspark code, running on Amazon EMR

• 1TB of text data reduced to 130 GB in Parquet format with snappy compression

• Total cost of EMR job to do this: $5

https://github.com/awslabs/aws-big-data-blog/tree/master/aws-blog-spark-parquet-conversion

エクサバイト級のデータが無い場合でも、Amazon Redshift Spectrumは便利?

データ容量は増え続けます

平均的にDWHおけるデータ量は5年ごとに10倍に増加

Amazon Redshiftをご利用のお客さまにおいては平均1年ごとに2倍の ペースで増加

Amazon Redshift Spectrumはデータ分析をよりシンプルにします

ETLパイプライン無くデータへアクセス可能

Amazon EMR、Athena、Redshiftを利用しているチーム間で、 同じデータレイク(データ)を活用可能

Amazon Redshift Spectrumにより、可用性および同時検索実行性が向上します

共通のデータに対して、複数のAmazon Redshiftクラスターがアクセス可能

厳しいSLAが求められるジョブをアドホッククエリーから隔離可能

The Emerging Analytics Architecture

Athena Amazon Athena Interactive Query

AWS Glue ETL & Data Catalog

ストレージ

サーバーレス

コンピュート

データ

処理・加工

Amazon S3 Exabyte-scale Object Storage

Amazon Kinesis Firehose

Real-Time Data Streaming

Amazon EMR Managed Hadoop

Applications

AWS Lambda Trigger-based Code Execution

AWS Glue Data Catalog Hive-compatible Metastore

Amazon Redshift Spectrum Fast @ Exabyte scale

Amazon Redshift Petabyte-scale Data Warehousing

20を超えるお客さまにAmazon Redshift Spectrumプレビューにご参加いただきフィードバックを頂きました!

Thank you!

Questions?

Recommended