Session ID:DAT009
本情報の内容(添付文書、リンク先などを含む)は、Microsoft Tech Summit 開催日(2016年11月1-2日)時点のものであり、予告なく変更される場合があります。
次の3点を理解する
• PolyBase は Big Data と RDBMS をつなぐもの
• SQL Server PolyBase スケールアウトグループを構成し
ビッグデータを高速移動できる
• SQL Server 2016/Azure SQL Data Warehouse の
データロードは PolyBase がおすすめ
1. Big Data の活用と PolyBase
2. PolyBase とは
3. SQL Server 2016 の PolyBase
4. Azure SQL Data Warehouse の Polybase
Microsoft Tech Summit
製造業
ファクトリーデータの活用
製品センサーデータの分析
流通業
店舗内での顧客行動分析
ソーシャル・ユーザーレビュー
金融業
市場リスク計算
センチメント分析をFinTech
商品開発へフィードバック
ヘルスケア
リモート医療による個人
の健康管理
データソース データ取り込み 準備 分析 公開 利用
HDInsight
Azure Storage Blob
Event Hubs
Stream
Analytics
Stream
Analytics
Machine
Learning
Azure SQL
Data Warehouse Power BI
センサーデータ
履歴データ
リアルタイム
バッチ
構造化
データ
非構造化
データ
半構造化
データ
Data Factory
RDBMS と Big Data の世界をつなぐ
スケーラブルなフレームワーク
PolyBase
Microsoft Tech Summit
外部の非構造化/半構造化データを
外部表をとおして T-SQL で取り扱う仕組み
外部表
SQ
L Azure SQL Data
Warehouse
Hadoop
Azure Storage Blob
container
※Azure SQL Data Warehouse は Hadoop に非対応
外部表
HDFS
2012 2013 ……… 2016…2014
PolyBase in
SQL Server PDW V2
(APS)
PolyBase in SQL DW PolyBase in
SQL Server 2016
2015
外部表
構造化
データ
PolyBase
構造化
データ
外部表
PolyBase
ロード
外部表
構造化
データ
PolyBase
アーカイブ
データの場所 Hadoop
ユースケース データロード
クエリの
直接実行
アーカイブ
SQL Server 2016 ● ● ●
Azure SQL Data Warehouse ■ ■ ■
※ BLOB に対してはプッシュダウンができないため期待したパフォーマンスが得られない
したがって BLOB のデータは SQL Server や SQL DW へロードしてクエリを実行する
BLOB
データロード
クエリの
直接実行
アーカイブ
● ▲ ●
● ▲ ●
Azure
● 想定した使い方 ■ 非対応 ▲ 想定していない使い方
プッシュダウン:SQL Server から Hadoop
クラスタに MapReduce ジョブを送り込む
Microsoft Tech Summit
• PolyBase 機能を選択
インストール要件:
• JRE を事前にインストールしておく
• PolyBase サービスアカウントは
ドメインアカウントが必要
※ 後続ステップにスケールアウトオプション要否の指定が必要
システムDB名 役割
DWConfiguration PolyBase エンジンと DMS の構成
情報を保管
DWDiagnostics 分散クエリの診断情報を保管
DWQueue ロールバック情報を保管
サービス名 役割
PolyBase Engine PolyBase が実行する分散 SQL を
つかさどる
PolyBase Data
Movement Service
(DMS)
HDFS や BLOB データの
READ/WRITE を担う
1. SQL Server PolyBaseインスタンス
を複数インストール
Head Node
をきめる
PolyBase
Engine
PolyBase
DMS
PolyBase
DMS
PolyBase
DMS
PolyBase
DMS
PolyBase
Engine
PolyBase
Engine
PolyBase
Engine
2. ひとつを Head Node として選択
3. 残りを Compute Node として構成する
① sp_polybase_join_group の実行
② PolyBase DMS のリスタート
EXEC sp_polybase_join_group N'hdpsqlserver', 16450, N'MSSQLSERVER';
PolyBase をスケールアウトして Hadoop クラスタと並列処理させることが可能
PolyBase
Engine
PolyBase
DMS
PolyBase
DMS
PolyBase
DMS
PolyBase
DMS
Head Node Compute Nodes
Head Node
• クエリを投入するインスタンス
Compute Nodes
• HDFS や Blob のデータに対して
PolyBase 分散クエリー(DSQL)
を処理するインスタンス
PolyBase スケールアウトグループ
SQL Server 2016
PolyBase
DMS
PolyBase
DMS
PolyBase
DMS
Head Node
PolyBase
DMS
PolyBase
Engine
Compute Nodes
File
System
File
System
File
System
Data
Node
Data
Node
Data
NodeName
Node
File
System
Data
Node Hadoop
Cluster
[参考] プッシュダウンとは?
HDFS
Hadoop 2
5
DB
3 4 6
クエリ
1
MapReduce
HDFS の SQL
オペレーションは、
MapReduce ジョブ
として送り込まれる
7
結果
ジョブの内容はコストベースで
判断
• データ移動の削減量
• ジョブ開始のオーバーヘッド
• WHERE 句に指定される列
のカーディナリティ
(外部表の列統計は自動で
作成されない)
※ プッシュダウンを有効にするためには、SQL Server インストールパス内の yarn-site.xml を構成する必要がある
Microsoft Tech Summit
• セキュアコネクショ
ンが必要な場合
• オプション
外部データソースの
作成
• HDFS の URL と
ポート番号
• リソースマネージャの
URL とポート番号
外部ファイル
フォーマットの作成
• ファイル形式
• 圧縮形式
外部表の作成
• HDFS データへの
パス
• 外部データソース
• 外部ファイルフォー
マット
外部表作成手順
CREATE EXTERNAL DATA SOURCE HadoopCluster
WITH (TYPE = HADOOP,
LOCATION = 'hdfs://xxxxx.japaneast.cloudapp.azure.com:8020’,
RESOURCE_MANAGER_LOCATION = ‘xxxxx.japaneast.cloudapp.azure.com:8050',
CREDENTIAL = HadoopCredential
);
CREATE EXTERNAL FILE FORMAT testformat
WITH (FORMAT_TYPE = DelimitedText
--DATA_COMPRESSION = 'org.apache.hadoop.io.compress.GzipCodec'
);
CREATE EXTERNAL TABLE [dbo].[JsonSensorData] (
[jsonrow] varchar(8000) NOT NULL
)
WITH (LOCATION = '/user/hadoop/sensordata/',
DATA_SOURCE = HadoopCluster,
FILE_FORMAT = testformat,
REJECT_TYPE = value,
REJECT_VALUE = 2000
);
外部表の作成
外部ファイルフォーマット(ファイルフォーマット毎に作成)
外部データソース(Hadoop Clusterに一つ作成)
Hadoop 情報
HDFSパス 情報
Microsoft Tech Summit
非構造化データの操作
• 外部表を作成
• JSON データを外部表
から表示
Microsoft Tech Summit
SQL Server テクノロジーを活用した「データウエアハウス」 as a Service
AzureAzure
Saas
Azure
Public
Cloud
Office 365Office 365
Control
Node
SQL
DB
Compute
Node
Compute
Node
Compute
Node
Compute
Node
SQL
DB
SQL
DB
SQL
DB
SQL
DB コンピュート層
• スケールアウト・ダウン可能
• 停止可能
データはストレージ層
MPP処理
コンピュート層とストレージ層を
分離することで、スケール
アウトを容易にし、同時に
課金も柔軟にする
DMS
DMS DMS DMS DMS
Compute
Node
SQL
DB
DMS
プレミアムストレージ(SSD)
コントロール
ノード
SQL
DB
コントロールノード
ストレージ
D51
D52
D53
D60
…
D41
D42
D43
D50
…
コンピュート
ノード
D31
D32
D33
D40
…
D21
D22
D23
D30
…
D11
D12
D13
D20
…
D1
D2
D3
D10
…
SQL
DB
DWU 100 の場合
コントロール
ノード
SQL
DB
コントロールノード
ストレージ
コンピュート
ノード
D51
D52
D53
D60
…
コンピュート
ノード
D41
D42
D43
D50
…
コンピュート
ノード
D31
D32
D33
D40
…
コンピュート
ノード
D21
D22
D23
D30
…
コンピュート
ノード
D11
D12
D13
D20
…コンピュート
ノード
D1
D2
D3
D10
…
SQL
DB
SQL
DB
SQL
DB
SQL
DB
SQL
DB
SQL
DB
DWU 600 の場合
DWU
100
DWU
200
DWU
300
DWU
400
DWU
500
DWU
600
DWU
1000
DWU
1200
DWU
1500
DWU
2000
DWU
3000
DWU
6000
コントロールノード数 1
コンピュートノード数 1 2 3 4 5 6 10 12 15 20 30 60
ストレージ数 60
1 コンピュートノード当りの
ストレージ数
60 30 20 15 12 10 6 5 4 3 2 1
Compute
Dist_DB_1
Dist_DB_2
Dist_DB_12
BLOB
Queries Control
Engine
DMS
SQL DB
DMS
SQL DB
…
Compute
Dist_DB_13
Dist_DB_14
Dist_DB_24
DMS
SQL DB
… Compute
Dist_DB_25
Dist_DB_26
Dist_DB_36
DMS
SQL DB
…
Compute
Dist_DB_37
Dist_DB_38
Dist_DB_48
DMS
SQL DB
…
Compute
Dist_DB_49
Dist_DB_50
Dist_DB_60
DMS
SQL DB
…
Polybase LoadsData Loading
(SSIS / BCP/ OLEDB/ ODBC)
D12
D2
D1
D24
D14
D13
D36
D26
D25
D48
D38
D37
D60
D50
D49
• SQL Data
Warehouse への
アクセスに必須
外部データソースの
作成
• Blob ストレージの
URL
• コンテナ名
外部ファイル
フォーマットの作成
• ファイル形式
• 圧縮形式
外部表の作成
• コンテナのパス
• 外部データソース
• 外部ファイル
フォーマット
外部表作成手順
外部データソース(コンテナ毎に作成)
外部ファイル フォーマット(ファイルフォーマット毎に作成)
CREATE EXTERNAL DATA SOURCE container80third
WITH ( TYPE = Hadoop,
LOCATION = 'wasbs://container@xxxxx.blob.core.windows.net/',
CREDENTIAL = testcredential);
CREATE EXTERNAL FILE FORMAT polyformat
WITH ( FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS ( FIELD_TERMINATOR = ',',
DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.ffffff',
USE_TYPE_DEFAULT = FALSE ));
Blob URL 情報
外部表の作成
CREATE EXTERNAL TABLE [pol].[load_poly80third]
(
[出力日時] [datetime2](6) NOT NULL,
[出力年] [nvarchar](4) NOT NULL,
[出力月] [nvarchar](2) NOT NULL,
[出力日] [nvarchar](2) NOT NULL,
…
(中略)
…
)
WITH
( LOCATION='/',
DATA_SOURCE = container80third,
FILE_FORMAT = polyformat,
REJECT_TYPE = VALUE,
REJECT_VALUE = 0 );
コンテナパス情報
ハッシュ
Stor 1 Stor 2 Stor 3 Stor 4 Stor 5 Stor 1 Stor 2 Stor 3 Stor 4 Stor 5
クラスタ化カラムストアインデックスは既定で作成される
ロードするデータのキー値
6, 17, 23, 27, 33, 34,
51, 55, 65, 74 ・・・
ストレージの配置数が5と仮定した場合の例(実際は60)
ハッシュ ディストリビューション
ラウンドロビン ディストリビューション
ヒープ+ラウンドロビン
CREATE TABLE [dbo].[load_poly1] WITH(DISTRIBUTION = HASH([ログ番号])) AS
SELECT * FROM [pol].[load_poly] OPTION (LABEL = 'CTAS1');
CREATE TABLE [dbo].[load_poly2] WITH(DISTRIBUTION = ROUND_ROBIN) AS
SELECT * FROM [pol].[load_poly] OPTION (LABEL = 'CTAS2');
CREATE TABLE [dbo].[load_poly3] WITH(HEAP, DISTRIBUTION = ROUND_ROBIN) AS
SELECT * FROM [pol].[load_poly] OPTION (LABEL = 'CTAS3');
コンピュートノード当り
最大8個の READER が
起動される
ロード可能な圧縮形式は
gzip と snappy で
UTF-8 のみサポート
 ファイルサイズが大きいと、DWU をスケールする
ことでロード時間の短縮が見込める
 ファイルサイズが 512MB 未満の場合、
READER はファイル毎に READER 最大数まで
起動される
EXTERNAL READER,
WRITER 数
DWU
100 200 300 400 500 600 1000 1200 1500 2000
最大
EXTERNAL READER
8 16 24 32 40 48 80 96 120 160
最大 WRITER 数 60 80 96 120 160
例)60GB の場合、120
並列でロードできるため、
DWU1500 でも時間短
縮が見込める
例)250MB のファイルが
80 個あるケースでは、80
並列を超える READER は
不要
実行ユーザーのリソースクラスを適切に選択する
ロード後は統計情報を作成・更新する(現時点で自動作成されない)
DWU をスケールを変更する際はアクティブトランザクション有無を確認する
外部表の VARCHAR サイズは無意味に大きくしない
Microsoft Tech Summit
• PolyBase は Big Data と RDBMS をつなぐもの
• SQL Server PolyBase スケールアウトグループを構成し
ビッグデータを高速移動できる
• SQL Server 2016/Azure SQL Data Warehouse の
データロードは PolyBase がおすすめ
SQL Data Warehouse での同時実行とワークロード管理
https://azure.microsoft.com/ja-jp/documentation/articles/sql-data-warehouse-develop-
concurrency/
Azure SQL Data Warehouse のベスト プラクティス
https://azure.microsoft.com/ja-jp/documentation/articles/sql-data-warehouse-best-
practices/
SQL Data Warehouse のテーブルの分散
https://azure.microsoft.com/ja-jp/documentation/articles/sql-data-warehouse-tables-
distribute/
PolyBase: Gaining insights from HDFS and relational data in SQL Server 2016
https://www.youtube.com/watch?v=lBxSB0UY4wA
Microsoft Azure Blog – Data Warehouse
https://azure.microsoft.com/en-gb/blog/topics/data-warehouse/
日本マイクロソフト Data Platform Tech Sales Team Blog
https://blogs.msdn.microsoft.com/dataplatjp/
Dat009 クラウドでビック

Dat009 クラウドでビック