Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Spark Analytics - スケーラブルな分散処理

821 views

Published on

DEEP LEARNING LAB「Ignite 2019 最新アップデート AI & BigData 」での登壇資料

Published in: Data & Analytics
  • Be the first to comment

Spark Analytics - スケーラブルな分散処理

  1. 1. Spark Analytics スケーラブルな分散処理 Azure Databricks と Spark を実装する Azure サービス Tsuyoshi Matsuzaki Cloud Solution Architect, One Commercial Partner, Microsoft Japan
  2. 2. Big Data & AI における課題 Silo 化するテクノロジー Great for Data, but not AI Great for AI, but not for data Customer Data Emails / Web Pages Sensor Data (IoT) Video/ Speech Click Streams …
  3. 3. Azure Databricks ニーズに応じた構築 ロールベースアクセスコントロール (RBAC) 自動スケール ライブコラボレーション エンタープライズレベルの SLA 高機能なノートブック 簡易で迅速なジョブスケジューリング Azure ポートフォリオと柔軟に統合 生産性の向上 セキュアで信頼性あるサービス リミットなしのスケール 高速で, 容易で, 連携可能な Apache Spark™ ベースの分析プラットフォーム
  4. 4. なぜ Apache Spark か ?
  5. 5. なぜ Apache Spark か ? Driver Executor Task Task Executor Task Executor Executor Task Task 分散処理 インメモリ処理 パフォーマンス インメモリコンピューティングにより Hadoop よりも 高速に実行 (テストケースにより 100 倍以上) バッチとリアルタイムデータ処理の双方で利用可能
  6. 6. 開発生産性 大規模データセットのために設計された簡易な API 群 100 を超えるの変換処理を提供 なぜ Apache Spark か ? パフォーマンス インメモリコンピューティングにより Hadoop よりも 高速に実行 (テストケースにより 100 倍以上) バッチとリアルタイムデータ処理の双方で利用可能 Driver Executor Task Task Executor Task Executor Executor Task Task 分散処理 インメモリ処理
  7. 7. なぜ Apache Spark か ? エコシステム さまざまなデータソースのサポート, ISV アプリの 豊富なエコシステム, 開発コミュニティの充実 主要な複数のパブリッククラウド (AWS, Google, Azure) やオンプレミス・ディストリビュータも既 定でサポート 統一のエンジン インタラクティブ SQL, ストリーム分析, ML, グラフ処 理のための高レベルのライブラリを含む統一フレー ムワーク 単一のアプリで、これら複数の処理を同時に組み合 わせることができる。 パフォーマンス インメモリコンピューティングにより Hadoop よりも 高速に実行 (テストケースにより 100 倍以上) バッチとリアルタイムデータ処理の双方で利用可能 開発生産性 大規模データセットのために設計された簡易な API 群 100 を超えるの変換処理を提供
  8. 8. Microsoft Azure における Apache Spark CONTROL EASE OF USE Install-based,fully customized infrastructure Frictionless & Optimized Spark clusters Azure Databricks IaaS Clusters Managed Clusters Azure Virtual Machine (VMSS, VNet, etc) Workload optimized, managed clusters Azure HDInsight STORAGE LAYER ANALYTICS LAYER ReducedAdministration Azure Data Lake Store Azure Storage
  9. 9. Microsoft Azure における Apache Spark CONTROL EASE OF USE Install-based,fully customized infrastructure Frictionless & Optimized Spark clusters Azure Databricks IaaS Clusters Managed Clusters Azure Virtual Machine (VMSS, VNet, etc) Workload optimized, managed clusters Azure HDInsight STORAGE LAYER ANALYTICS LAYER ReducedAdministration Azure Data Lake Store Azure Storage
  10. 10. Azure Databricks Azure リソース マネージャ ワークスペース、リソース、 ロックされたリソース グルー プの作成 VM の作成/削除
  11. 11. Unified Analytics Platform Databricks Workspace Collaborative Notebooks, Production Jobs Databricks Runtime Databricks Cloud Service Transactions Indexing ML Frameworks Blob Storage Data Lake Storage AZURE DATA SOURCES Event Hub IoT Hub Synapse Analytics Cosmos DB Azure Data Factory
  12. 12. Unified Analytics Platform Databricks Workspace Collaborative Notebooks, Production Jobs Databricks Runtime Databricks Cloud Service Transactions Indexing ML Frameworks Blob Storage Data Lake Storage AZURE DATA SOURCES Event Hub IoT Hub Synapse Analytics Cosmos DB Azure Data Factory # Read Configuration readConfig = { "Endpoint": "https://doctorwho.documents.azure.com:443/", "Masterkey": "YOUR-KEY-HERE", "Database": "DepartureDelays", "Collection": "flights_pcoll", "query_custom": "SELECT c.date, c.delay, c.origin, c.destination FROM c WHERE c.origin = 'SEA'" // Optional } # Connect via azure-cosmosdb-spark to create Spark DataFrame flights = spark.read.format( "com.microsoft.azure.cosmosdb.spark").options(**readConfig).load() flights.count()
  13. 13. Unified Analytics Platform Databricks Workspace Collaborative Notebooks, Production Jobs Databricks Runtime Databricks Cloud Service Transactions Indexing ML Frameworks Blob Storage Data Lake Storage AZURE DATA SOURCES Event Hub IoT Hub Synapse Analytics Cosmos DB Azure Data Factory # Set up the Blob Storage account access key in the notebook session conf. spark.conf.set( "fs.azure.account.key.<your-storage-account-name>.blob.core.windows.net", "<your-storage-account-access-key>") # Load data from a Synapse Analytics query. df = spark.read .format("com.databricks.spark.sqldw") .option("url", "jdbc:sqlserver://<the-rest-of-the-connection-string>") .option("tempDir", "wasbs://<your-container-name>@<your-storage-account- name>.blob.core.windows.net/<your-directory-name>") .option("forwardSparkAzureStorageCredentials", "true") .option("query", "select x, count(*) as cnt from my_table_in_dw group by x") .load()
  14. 14. Structured Streaming Data Stream Unbounded Table Data Stream の新しいデータ = Table に追加される新しい行
  15. 15. 共通のプログラミングスタイル df = (spark.readStream.format("kafka"). option("kafka.bootstrap.servers", "..."). option("subscribe", "topic1, topic2"). option("startingOffsets", "latest"). load() df = (spark.read.format("csv"). option("header", "true"). option("nullValue", "NA"). option("inferSchema", True). load("/mnt/flight_weather.csv")) df = pipelinemodel.transform(df) df = pipelinemodel.transform(df) new_df = (df. withWatermark(df.ev_time,"10 minutes"). groupBy( df.device_id, window(df.ev_time,"5 minutes")). count()) new_df = (df. withWatermark(df.ev_time,"10 minutes"). groupBy( df.device_id, window(df.ev_time,"5 minutes")). count()) (df.write. mode("overwrite"). parquet("/mnt/test")) (df.writeStream. format(“com.databricks.spark.sqldw”). option("url", "..."). option("tempDir", "wasbs://... "). option("dbTable", "testTable"). option("checkpointLocation", "/tmp/chk"). start())
  16. 16. Structured Streaming を使った分析 (例) データソース Apache Kafka (HDInsight) Initial Stream Processing Map, Filter, Join, Windowing, …
  17. 17. Structured Streaming を使った分析 (例) データソース Apache Kafka (HDInsight) Databricks # create streaming dataframe from Kafka df = spark .readStream .format("kafka") .option("kafka.bootstrap.servers", "host1:port1,host2:port2") .option("subscribe", "topic1") .option("startingOffsets", "earliest") .load()
  18. 18. Structured Streaming を使った分析 (例) データソース Apache Kafka (HDInsight) Databricks Advanced Analysis # Watermarking and windowing analysis analyzed_df = ( df .withWatermark(df.event_time, "10 minutes") .groupBy( df.device_id, window(df.event_time, "5 minutes")) .count() ) ... # Inferencing analyzed_df = pipelinemode.transform(df) ...
  19. 19. Structured Streaming を使った分析 (例) データソース Apache Kafka (HDInsight) Databricks # Sink and Start streaming ! df.writeStream .format("com.databricks.spark.sqldw") .option("url", "...") .option("tempDir", "wasbs://... ") .option("forwardSparkAzureStorageCredentials", "true") .option("dbTable", "testTable") .option("checkpointLocation", "/tmp_checkpoint_location") .start() Synapse Analytics
  20. 20. Input Stream (Kafka or Event Hub) Structured Streaming (Databricks) Synapse Analytics File Cosmos DB Event Hub or Kafka BI SEMS BizApp Function Grid dashboard logging transaction alert or workflow …
  21. 21. Delta Lake Streaming Batch Updates/Deletes トランザクション ログ Parquet ファイル
  22. 22. Delta Lake Streaming Batch Updates/Deletes トランザクション ログ Parquet ファイル CREATE TABLE ... USING delta … dataframe .write .format("delta") .save("/data") CREATE TABLE ... USING parquet ... dataframe .write .format("parquet") .save("/data") Instead of parquet... … simply say delta
  23. 23. Delta Lake – Reliability Streaming ● ACID トランザクション ● スキーマエンフォース ● 統合 Batch & Streaming ● Time Travel / スナップショット 主要機能 高品質で高信頼な データ いつでも分析に 活用可能 Batch Updates/Deletes トランザクション ログ Parquet ファイル
  24. 24. Delta Lake – Reliability Streaming ● ACID トランザクション ● スキーマエンフォース ● 統合 Batch & Streaming ● Time Travel / スナップショット 主要機能 高品質で高信頼な データ いつでも分析に 活用可能 Batch Updates/Deletes トランザクション ログ Parquet ファイル SELECT count(*) FROM events TIMESTAMP AS OF timestamp SELECT count(*) FROM events VERSION AS OF version spark.read.format("delta").option("timestampAsOf", timestamp_string).load("/events/") INSERT INTO my_table SELECT * FROM my_table TIMESTAMP AS OF • date_sub(current_date(), 1) 過去のデータの再生成 誤った書き込み時のロールバック
  25. 25. Delta Lake – Performance Streaming Batch Updates/Deletes トランザクション ログ Parquet ファイル Databricks optimized engine 高いパフォーマンス スケーラブルなクエリ ● インデクス ● 圧縮 ● データスキップ ● キャッシュ 主要機能
  26. 26. MLflow Tracking 実験内容の記録と検索 : コード、データ、構成、 結果 Projects あらゆる環境で実行可能 で再利用可能なパッケー ジフォーマット Models 多様なデプロイツールに モデル送信可能な一般 フォーマット
  27. 27. MLflow Tracking 実験内容の記録と検索 : コード、データ、構成、 結果 Projects あらゆる環境で実行可能 で再利用可能なパッケー ジフォーマット Models 多様なデプロイツールに モデル送信可能な一般 フォーマット Managed https://github.com/tsmatz/azure-databricks-exercise
  28. 28. Apache Spark 3.0 • Catalyst optimizer accelerations • Pluggable Data Catalog • Spark Graph • Dynamic Partition Pruning • Binary format • recursiveFileLookUp • pathGlobalFilter http://spark.apache.org/community.html
  29. 29. Dynamic Partition Pruning
  30. 30. Analytics & AI is the #1 investment for business leaders, however they struggle to maximize ROI 80% 55% From : “Understanding Why Analytics Strategies Fall Short for Some, but Not Others” https://azure.microsoft.com/en-us/resources/why-analytics-strategies-fall-short-for-some-but-not-others/
  31. 31. Apache Spark を内包する製品やサービス • Azure Synapse Analytics • Azure Data Factory - Mapping Data Flow * • Azure Data Factory - Wrangling Data Flow • SQL Server 2019 Big Data Cluster * : Azure Databricks を使用
  32. 32. Mapping Data Flow • Resilient data transformation Flows • Transform at scale • Code-free • Operationalized with Data Factory
  33. 33. Apache Spark を内包する製品やサービス • Azure Cosmos DB • Azure Synapse Analytics • Azure Data Factory - Mapping Data Flow * • Azure Data Factory - Wrangling Data Flow • SQL Server 2019 Big Data Cluster * : Azure Databricks を使用
  34. 34. Azure Cosmos DB <3’s Azure Synapse Jupyter Notebook のビルトイン Analytical Storage のビルトイン Azure Synapse による Spark 分析 冗長な ETL は不要 Transactional と Analytical Storage のパフォーマンス分離 グローバルな分散と拡張 (伸縮) Global distribution, elastic scale, low latency, intuitive consistency modes, 99.999 SLA Multi-model Key-value Column-family Document Graph SQL Cassandra MongoDB Gremlin Table API ETCD Jupyter NotebooksAzure Synapse - Spark Transactional store (rows) Analytical store (columns)
  35. 35. Azure Cosmos DB <3’s Azure Synapse

×