Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]

134 visualizaciones

Publicado el

2018/3/8【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
https://info.microsoft.com/JA-AABD-WBNR-FY18-03Mar-08-BigdatainfrastructuresupportingAI-MCW0002861_01Registration-ForminBody.html?ls=Website&lsd=AzureWebsite

Publicado en: Tecnología
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]

  1. 1. 自己紹介 日本マイクロソフト株式会社 デジタルトランスフォーメーション事業本部 データ & クラウド AI アーキテクト技術部 クラウドソリューションアーキテクト 高木 英朗 (Takagi Hideo) • Data Platform Tech Sales Team Blog http://aka.ms/dpblog
  2. 2. 本セッションのゴール • Azure Data Lake Store / Analytics のアーキテクチャを理解する • U-SQL の基本を理解する • Azure Data Lake と他のサービスとの連携方法について理解する
  3. 3. Agenda 1. Azure Data Lake の概要 2. アーキテクチャの概要 3. U-SQL の基本 4. サービスの連携
  4. 4. 1. Azure Data Lake の概要
  5. 5. Azure Data Lake とは HDInsight Spark, Hive, Storm, Kafka Data Lake Analytics Data Lake Store WebHDFS YARN Azure Databricks ストレージ Azure Data Lake Store (ADLS) • どんなフォーマットのデータでも無制限に格納 できるストレージ • 分散型で分析処理パフォーマンスが高い • OSS との親和性 分析ツール Azure Data Lake Analytics (ADLA) • サーバレスの分析エンジン • 親しみのある SQL に近い U-SQL 言語 • 柔軟なスケールで大量データ処理が得意 • ジョブ単位の課金
  6. 6. Azure Data Lake Store (ADLS) とは HDInsight Azure Data Lake Analytics 形式を問わず無制限に蓄積できる巨大なストレージ 様々なデータ分析処理に最適化 ADLS 業務アプリ ソーシャル デバイス クリックストリーム センサー 動画 Web リレーショナル Batch MapReduce Script Pig SQL Hive NoSQL HBase In-Memory Spark Predictive R Server Batch U-SQL 利用する 保存する
  7. 7. Azure Data Lake Analytics (ADLA) とは ADLA Azure SQL DW Azure SQL DB Azure Storage Blobs ADLS SQL Server Azure VM サーバ レスの分析クエリ サービス きめ細かい分析処理を大量データに最適化 「U-SQL」クエリ言語を使用 @rows = EXTRACT name string, id int FROM “/data.csv” USING Extractors.Csv( ); OUTPUT @rows TO “/output.csv” USING Outputters.Csv(); 規定のストレージ (ADLS or Blob) だけでなく、SQL DW、SQL Server などにもクエリ実行が可能
  8. 8. 料金の考え方 Azure Data Lake Analytics (ADLA) Azure Data Lake Store (ADLS) なし ¥ 224 / 時間 1 AU あたり 定常的にかかる費用 処理量に応じてかかる費用 ¥ 4.37 / 1GB / 月 データ容量 書き込み: ¥ 5.60 読み取り: ¥ 0.45 10万トランザクションあたり 例:米国東部 2 リージョン (2018/03/08 時点) ADLA: https://azure.microsoft.com/ja-jp/pricing/details/data-lake-analytics/ ADLS: https://azure.microsoft.com/ja-jp/pricing/details/data-lake-store/
  9. 9. Azure Data Lake の作成 [+New] -> [Data + Analytics] -> [Data Lake Analytics] から ADLS も同時に作成可能 ADLA 名 リソースグループ リージョン 接続する ADLS 従量課金 or コミットメント ADLS 名 暗号化有無 従量課金 or コミットメント
  10. 10. 2. アーキテクチャの概要
  11. 11. ADLS のアーキテクチャ 分散ストレージ • 書き込まれたファイルは最大 250MB のエクステントに 分割 • それぞれのエクステントは複数のデータノードに分散 • ファイルの読み書きは並列で実行されるので、 スループットが出やすい 耐障害性 • それぞれのエクステントは3つのレプリカを保持 • 参照はどのレプリカからも可能 • レプリカに障害があっても別のレプリカから復元 ファイル書き込み 1 2 3 4 5 レプリカ 1 書き込み レプリカ 2 レプリカ 3 コミット エクステント
  12. 12. ADLS のファイルとエクステント サイズが大きいファイル 書き込み エクステント サイズが小さい複数ファイル 書き込み 1 エクステント サイズが小さい 1 ファイル 書き込み 1 エクステント エクステントの数が ADLA ジョブ実行時の並列度に影響する 同時に 1 つのタスクしか実行できない 同時に 2 つのタスク 1 つのタスクで 4 つのエクステントを処理 2 3 4 5 6 1 2 3 4 5 6 同時に 2 つのタスク 1 つのタスクで 4 つのエクステントを処理
  13. 13. ADLA のジョブと Vertex ✓ ジョブの中のタスク (Vertex) ✓ ステージ (SuperVertex) = 同時に実行できるタスクのグループ ADLA から U-SQL ジョブのサブミット クエリや対象データをもとに実行計画を 作成。 分割されたエクステントの数に依存 同時に実行できるタスクのグループに まとめられる。 下のグループは上のグループの処理に 依存する タスク (Vertex) ステージ (SuperVertex)
  14. 14. Analytics Unit (AU) ✓ AU = コンピュートリソースの単位 (2 CPU, 6 GB RAM *2018/3/8 現在) ✓ 1 AU は 1 タスク (Vertex) を担当する ✓ AU の数と実行時間でコストが決まる 前のステージでの必要なタ スクの処理 (クリティカルパ ス) が終ってから次のステー ジが実行される ジョブ (AU = 4) 完了 4 タスク (Vertex) ずつ 並列実行される 4 AU でも 2 タスク (Vertex) しか 並列実行できない ジョブの処理の順番 ステージ (SuperVertex)
  15. 15. AU の割り当てと性能向上 並列で実行できる Vertex (タスク) 以上の AU を割り当てても性能向上しない 過剰な AU の割り当てをした場合 • AU を減らすことを検討 • 赤い線の分だけコストを支払うことになるが、試 用しているのは青い線の分のみ AU が足りない場合 • AU を増やすことを検討 ジョブ実行時間ジョブ実行時間 割り当てた AU 実行中に使用 している AU 10 0 5 AU 数
  16. 16. AU と時間とコスト 割り当てた AU ジョブにかかった時間 AU 時間 a-1 10 3 時間 30 AU 時間 a-2 20 1.5 時間 30 AU 時間 a. AU を増やしたほうが良いケース 割り当てた AU ジョブにかかった時間 AU 時間 b-1 10 5 時間 50 AU 時間 b-2 20 4 時間 80 AU 時間 b. AU を増やすか検討が必要なケース 同じ金額でジョブの時間 を半分に短縮できる →増やす! 60 % のコスト増で 1 時 間のジョブ時間短縮 →増やす? ADLA の料金 = [割り当てた AU の数] x [時間] (x [単価])
  17. 17. 実行計画や必要な AU の確認 Azure 管理ポータルや Visual Studio で実行計画、状況、診断結果を確認可能 実行しているジョブが何個の Vertex で実 行されているかを確認することが可能 AU 検討材料 ✓ いくつのジョブステージがあるか ✓ ジョブステージ内にいくつのタスクがあるか ✓ ジョブ実行時間 ✓ 診断結果の警告 ✓ etc AU が過剰に割り当てられていることを 警告
  18. 18. 3. U-SQL の基本
  19. 19. U-SQL という言語 U-SQL で分析処理を記述し、 ADLA にサブミット。 分散処理の実行プランを自動 的に生成。 実行プランに基づいて、ノード が自動的に割り当てられ、処 理が実行される。 @rows = EXTRACT name string, id int FROM “/data.csv” USING Extractors.Csv( ); OUTPUT @rows TO “/output.csv” USING Outputters.Csv(); ✓ SQL ライクなシンプルなクエリ言語 ✓ C#, R, Python, Cognitive Services 等での拡張 ✓ スキーマ定義済み、未定義のどちらでもクエリ可能 SELECT … FROM … WHERE GROUP BY … HAVING JOIN OVER +
  20. 20. スキーマ オン リード abe, 95, 46, 85, 85 itoh, 89, 72, 46, 76, 34 ueda, 95, 13, 57, 63, 87 emoto, 50, 68, 38, 85, 98 otsuka, 13, 16, 67, 100, 7 katase, 42, 61, 90, 11, 33 {"name" : "cat", "count" : 105} {"name" : "dog", "count" : 81} {"name" : "rabbit", "count" : 2030} {"name" : "turtle", "count" : 1550} {"name" : "tiger", "count" : 300} {"name" : "lion", "count" : 533} {"name" : "whale", "count" : 2934} xxx.xxx.xxx.xxx - - [27/Jan/2018:14:20:17 +0000] "GET /item/giftcards/3720 HTTP/1.1" 200 70 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.1) Gecko/20100101 Firefox/10.0.1" フォーマットを気にせ ずデータをためていく 使うときにはじめて データ構造を意識 @rows = EXTRACT ~~~ FROM ~~~ USING ~~~; @rows = SELECT ~~~ FROM ~~~ WHERE ~~~; データを集めてためておく 使うときにデータ構造を定義して処理する
  21. 21. シンプルな U-SQL の例 (概要編のおさらい) @tweet = EXTRACT date string, time string, author string, tweet string, FROM “/Input/TwitterHistory.csv” USING Extractors.Csv(); @result = SELECT author AS author, COUNT(*) AS tweetcount FROM @tweet GROUP BY author; OUTPUT @result TO “/Output/TwitterAnalysis.csv” ORDER BY tweetcount DESC USING Outputters.Csv(); ① 保存されているファイルのフォー マットを読み取って、カラム名を 付与 ② 付与したカラム名を使ってクエリ を実行 ③ 結果を CSV 形式で出力
  22. 22. C# 関数を利用した U-SQL (概要編のおさらい) @attribute = SELECT new SQL.ARRAY<string>(col1.Split(',')) AS y FROM @csv; @country = SELECT new SQL.ARRAY<string>(y[3].Split('=')) AS z FROM @attribute; @output = SELECT Region.ToUpper() AS NewRegion FROM @searchlog; 文字列を大文字に変換 [col1] の中をカンマで分割 U-SQL 内で C# 関数を使用することで柔軟な処理を実行することが可能 col1 col2 name=hideo,age=50,div=tech,country=jp Microsoft name=toshio,age=60,div=sales,country=us Microsoft こういう CSV ファイルがあったとして “jp”や”us”を取り出したい 4番目の要素を = で分割 →”jp” や “us” が取り出せる
  23. 23. [ご参考] U-SQL のデータ型・集約関数・結合 ビルトインの集約関数 • AVG • ARRAY_AGG • COUNT • FIRST • LAST • MAP_AGG • MAX • MIN • STDEV • SUM • VAR データ型 Numeric byte, byte? sbyte, sbyte? int, int? uint, unint? long, long? decimal, decimal? short, short? ushort, ushort? ulong, unlong? float, float? double, double? Text char, char? string Complex MAP<K> ARRAY<K,T> Temporal DateTime, DateTime? Other bool, bool? Guid, Guid? Byte[] http://usql.io/ 結合 • INNER JOIN • LEFT or RIGHT or FULL OUTER JOIN • CROSS JOIN • SEMIJOIN • Equivalent to IN subquery • ANTISEMIJOIN その他、パラメータの利用やウィンドウ関数等詳細情報やチュートリアルは左記 URL を参照
  24. 24. File Sets @rs = EXTRACT user string, id string, suffix string FROM "/input/{suffix}" USING Extractors.Csv(); /input /2017-01.log /2017-02.log /2017-03.log /2017-04.log /2017-05.log … @rs = EXTRACT user string, id string, date string FROM "/input/{date:yyyy}/{date:MM}/{date:dd}/dat.txt" USING Extractors.Csv(); 複数のファイルをまとめて読み込んで処理する /input/ /2017/01/01/dat.txt /2017/02/01/dat.txt /2017/03/01/dat.txt /2017/04/01/dat.txt /2017/05/01/dat.txt … suffix 列にファイル名 がそのまま入る 2017-01.log 2017-02.log 2017-03.log 2017-04.log 2017-05.log … date 列にフォルダ名 の年月日情報が入る 20170101 20170201 20170301 20170401 20170501 …
  25. 25. File Sets の応用 @rs = EXTRACT user string, id string, Market string FROM "/input/{Market}_{*}" USING Extractors.Csv(); @us = SELECT * FROM @rs WHERE Market == “ja" ; /input /ja_data-01.log /ja_data-02.log /en_data-01.log /en_data-02.log /cn_data-01.log … ファイル名からデータを構築 フィルタ利用時に不要な I/O をかけずにスキャンが可能になり、性能が向上する WHERE 句で指定した条件に基づき、”ja” に マッチするファイルのみが読み込まれる。 パーティショニングに似たような動作が可能。 READ されるのは この 2 ファイルだけ
  26. 26. U-SQL カタログ ➢ テーブル データを構造化し、分散配置 をコントロールすることができる RDBMS と同様のビュー機能 テーブルデータ型の値を返す 関数 CREATE VIEW V AS EXTRACT… CREATE VIEW V AS SELECT … CREATE TABLE T ( … ) INDEX I CLUSTERED ( … ) DISTRIBUTED BY …; CREATE FUNCTION F (@arg string = “default”) RETURNS @res [TABLE ( … )] AS BEGIN … @res … EN; ➢ ビュー ➢ テーブル値関数 (TVFs) スキーマを定義して、データの形式を分かるようにする
  27. 27. カタログを作成すると・・・ テーブルやビュー等によって RDBMS のようにデータを管理できる状態になる テーブル データベース ビュー、プロ シージャ等 テーブルのカラム情報
  28. 28. 非構造化データと AI ~ Cognitive 拡張 Cognitive Services の学習済みモデルを使っ た AI 拡張機能を U-SQL で実行 イメージング: • 顔を検出する • 感情を検出する • 画像の内容を読み取ってタグ付けする • OCR (文字認識) テキスト: • キー フレーズ抽出 • 感情分析 ▼ビルトインの Cognitive 機能
  29. 29. 例:画像の内容を読み取ってタグ付けする REFERENCE ASSEMBLY ImageCommon; REFERENCE ASSEMBLY FaceSdk; REFERENCE ASSEMBLY ImageEmotion; REFERENCE ASSEMBLY ImageTagging; REFERENCE ASSEMBLY ImageOcr; @imgs = EXTRACT FileName string, ImgData byte[] FROM @"/images/{FileName}.png" USING new Cognition.Vision.ImageExtractor(); @tags = PROCESS @imgs PRODUCE FileName, NumObjects int, Tags SQL.MAP<string, float?> READONLY FileName USING new Cognition.Vision.ImageTagger(); @tags_serialized = SELECT FileName, NumObjects, String.Join(";", Tags.Select(x => String.Format("{0}:{1}", x.Key, x.Value))) AS TagsString FROM @tags; OUTPUT @tags_serialized TO "/images/output/tags.csv" USING Outputters.Csv(outputHeader:true); 対象の画像ファイル
  30. 30. 例:画像の内容を読み取ってタグ付けする [結果]
  31. 31. 例:OCR (文字認識) REFERENCE ASSEMBLY ImageCommon; REFERENCE ASSEMBLY FaceSdk; REFERENCE ASSEMBLY ImageEmotion; REFERENCE ASSEMBLY ImageTagging; REFERENCE ASSEMBLY ImageOcr; @imgs = EXTRACT FileName string, ImgData byte[] FROM @"/images/ocr/{FileName}" USING new Cognition.Vision.ImageExtractor(); @ocrs = PROCESS @imgs PRODUCE FileName, Text string READONLY FileName USING new Cognition.Vision.OcrExtractor(); OUTPUT @ocrs TO "/images/output/ocr_result.csv" ORDER BY FileName USING Outputters.Csv(outputHeader:true); 対象の画像ファイル
  32. 32. 例:OCR (文字認識) [結果]
  33. 33. 4. サービスの連携
  34. 34. 連携の概要 Azure Event Hubs Azure Storage Blobs カスタム プログラム .NET SDK Azure CLI Azure Portal Azure PowerShell Azure Data Factory Azure SQL DB Azure SQL DW Azure tables オンプレミス DB ADLS AdlCopy Azure Data Factory Hadoop DistCp PolyBase SSIS Azure Stream Analytics ADLA QueryFederated Query
  35. 35. Federated Queries Data Lake Analytics Azure のデータストアにクエリを実行する ✓ データを移動させずに各データスト アにクエリを実行 ✓ データの移動にかかる時間やコスト を抑える ✓ クエリをプッシュダウンしてリモート側 で実行することも可能 Azure SQL DW Azure SQL DB SQL Server Azure VM Azure Data Lake Store Azure Storage Blobs Federated Query Example https://github.com/Azure/usql/tree/master/Examples/AmbulanceD emos/AmbulanceDemos/6-Ambulance-FederatedQuery CREATE DATA SOURCE https://msdn.microsoft.com/en-us/azure/data-lake-analytics/u- sql/create-data-source-u-sql
  36. 36. Federated Query の利用 ADLA アカウント SQL Server SQL DB/DW AdvWorks U-SQL DB AdvWorks_ExtDB クレデンシャル AdvWorks_Creds 外部データソース AdvWorks_DS テーブル Customers 外部テーブル CustomersExt スキーマ指定無し でクエリする場合 スキーマ定義済み の外部テーブルに クエリする場合 外部データソース (CREATE DATA SOURCE) • クレデンシャルと接続情報をもとにデータ ソースを定義 • スキーマ未定義のため EXTRACT を 使ってクエリが可能 外部テーブル (CREATE EXTERNAL TABLE) • 外部データソースの参照先データにス キーマを定義 • スキーマ定義済みのため SELECT で直 接クエリ可能 各データベースのテーブルに対して T-SQL をパススルーで実行すること も可能
  37. 37. SQL DW との連携 (PolyBase) SQL DW の PolyBase 機能を使用して ADLS と直接接続が可能 ① Azure AD でアプリの登録を行い、ID と Key を得る ② SQL DW でクレデンシャルの定義を作成 ③ SQL DW で接続先 ADLS, ファイルフォーマットを定義 ④ SQL DW で外部テーブルを作成 接続設定の手順 外部テーブル 実データ T-SQL SQL DW ADLS https://docs.microsoft.com/ja-jp/azure/sql-data-warehouse/sql-data-warehouse-load-from-azure-data-lake-store
  38. 38. Azure Data Factory での連携例 ADLS のデータ入出力や U-SQL ジョブの実行を自動化可能 パイプラインの例 元データを ADLS に コピー U-SQL でデータを変換 U-SQL でデータを結合 データを SQL DW に インポート Data Factory から U-SQL に パラメータを渡すことも可能 固定のパラメータ設定 or 動的パラメータ (実行時の日付情報等) を U-SQL に渡 すことが可能
  39. 39. Event Hub 連携 Event Hub ADLSStream Data ✓ Event Hub の “Capture” 機能で ADLS に直接データを保存することが可能。 ✓ ADLS 保存時に日付等に合わせて動的 なフォルダ階層を作成することが可能。 センサー、Web 等のストリームデータを Event Hub を経由して ADLS に蓄積
  40. 40. コマンドラインを使ったADLA の操作: Azure CLI az dla job submit --account アカウント名 --job-name ジョブ名 --script U-SQL スクリプトファイル ジョブのサブミット az dla job show --account アカウント名 --job-identity ジョブ ID ジョブの詳細表示 シンプルなコマンドで ADLA の操作が可能。Windows, macOS, Linux で利用可能。 az dla job list --account アカウント名 ジョブの一覧表示 https://docs.microsoft.com/ja-jp/azure/data-lake-analytics/data-lake-analytics-get-started-cli2
  41. 41. コマンドラインを使った ADLS の操作: Azure CLI az dls fs upload --account アカウント名 --source-path 元ファイル名 --destination-path アップロード先 ファイルのアップロード az dls fs list --account アカウント名 --path フォルダ名 ファイルとフォルダのリスト表示 シンプルなコマンドで ADLS の操作が可能。Windows, macOS, Linux で利用可能。 az dls fs preview --account アカウント名 --path ファイル名 --length 読み取るバイト数 ファイルのプレビュー表示 https://docs.microsoft.com/ja-jp/azure/data-lake-store/data-lake-store-get-started-cli-2.0
  42. 42. コマンドラインを使った ADLS の操作: AdlCopy Azure Storage Blob から ADLS へのデータコピー、ADLS 同士のデータコピーが可能。 または AdlCopy.exe /Source Blob の URL /Dest ADLS へのコピー先 /sourcekey Blob の アクセスキー ADLA ジョブを利用した並列コピーも可能 (高速なコピーが可能) AdlCopy.exe /Source *** /Dest *** /sourcekey *** /Account ADLA アカウント /Units AU 数 できる できない Blob ADLS ADLS ADLS ADLS Blob https://docs.microsoft.com/ja-jp/azure/data-lake-store/data-lake-store-copy-data-azure-storage-blob
  43. 43. まとめ • Azure Data Lake Store / Analytics のアーキテクチャを理解する ✓ ADLS にデータを書き込むとデータが分割され、分散配置される ✓ AU の数でジョブの並列度を設定できる ✓ AU とジョブにかかった時間でコストが決まる • U-SQL の基本を理解する ✓ U-SQL は SQL に似ているが拡張機能がある ✓ カタログ (テーブル、ビュー、テーブル値関数) で管理しやすくできる ✓ Cognitive 機能を使って画像やテキストの分析ができる • Azure Data Lake と他のサービスとの連携方法について理解する ✓ Federated Query は Data Factory など豊富な連携方法がある
  44. 44. 参考情報 ドキュメント・ブログ • Azure Data Lake https://azure.microsoft.com/ja-jp/solutions/data-lake/ • Azure Data Lake Blog https://blogs.msdn.microsoft.com/azuredatalake/ • U-SQL http://usql.io/ • Github https://github.com/Azure/USQL イベント セッション動画 • いざ無制限のデータの彼方へ! ~ Azure Data Lake 開発の知識とベスト プラクティス ~ https://channel9.msdn.com/Events/de-code/2016/DBP-020 • あらゆるデータをビジネスに活用! Azure Data Lake を中心としたビック データ処理基盤のアーキテクチャと実装 https://channel9.msdn.com/Events/de-code/2017/DI12 • あらゆるデータに価値がある!アンチ断捨離ストのための Azure Data Lake https://channel9.msdn.com/Events/de-code/2017/DI07 • AI 時代を生き抜くためのビッグデータ基盤 ~リコーの実案件で見えたAzure Data Lakeの勘所~ https://youtu.be/zfD7d0Kqk_s
  45. 45. https://aka.ms/W66jgk On Demand URL https://www.slideshare.net/hidwatanabe/ai-azure-data-lake SlideShare

×