View
14
Download
0
Category
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