Slides for Azure Webinar: Azure Databricks for Application Developers
Azure Databricks で実現できること
Azure Databricks とは何か
Azure Databricks上での分散アプリ開発の基礎
Demo
Bigdata システムの課題
POS システム、EC サイト、IoT データ分析、CDR 分析、コールセンター
データ、・・・
バッチ処理 ⇒ 限られた
時間で大量データを
処理したい
リアルタイム分析 ⇒ デー
タの生成から遅延時間を
最小限にして分析したい
蓄積された大量データを活用した
アドバンストアナリティクスを実施した
い
© Databricks 2018
SQL Query
Data Frame
Unresolved
Logical Plan
Logical Plan Optimized
Logical Plan
Selected
Physical
Plan
RDDsPhysical
Plans
CostModel
Catalog
Analysis Logical
Optimization
Physical
Planning
Code
Generation
Catalyst
分散処理
オプティマイザー
インメモリ処理
© Databricks 2018
https://databricks.com/blog/2015/02/17/introducing-dataframes-in-spark-for-large-scale-data-science.html
システムの要件をクリアする ソリューション
並列分散処理を可能にする
オープンソース分析エンジン
Apache Spark の
PaaS ソリューション
バッチ分析 ⇒ 限られた時間で大量データを処理をしたい
構造化データ
分析アプリ
ダッシュボード
ログ、メディ
ア
r
センサーデータ
CDR、POSデータど
データ加工集計非構造化データ
基幹業務
DWH
システム
オンライン
データ
リアルタイム分析 ⇒ データの生成から遅延時間を最小限にした分析をしたい
加工・集計データ
ライブストリーム
データ
ストリーム処
理センサーデータ
CDR、POS データなど
分析アプ
リ
ダッシュボード
データリポジトリ
蓄積された大量データを活用したアドバンストアナリティクスを実施したい
データコレクター
ストリームデー
タ
センサーデータ
CDR、POS など
データリポジトリ
基幹業務
オンラインデー
タ
アドバンスト
アナリティクス
分析アプリ
ダッシュボード
Azure Databricks とは
ジョブ
スケジュー
ル
グラフ種別
スクリプト
記述部分
実行結果
詳細表示
Standard Pool Serverless Pool
言語 Python, Scala, Java, R, SQL Python, R, SQL
Runtime (Spark, Scala) 選択可能 最新安定バージョンを自動
選択
Spark 構成設定可否 Yes No
なぜ Azure Databricks なのか
• Azure Databricks は Azure の 1st パーティーサービス
• Azure の各種サービスとの統合
• AAD 統合
Microsoft Azure
Azure の多様なビッグデータソリューション
Azure Data Lake
Analytics
Azure Data Lake Store
Azure Storage
Any Hadoop technology,
any distribution
Workload optimized,
managed clusters
Data Engineering in a
Job-as-a-service model
Azure Marketplace
HDP | CDH | MapR
Azure Data Lake
Analytics
IaaS Clusters Managed Clusters Big Data as-a-Service
Azure HDInsight
Frictionless & Optimized
Spark clusters
Azure Databricks
BIGDATA
STORAGE
BIGDATA
ANALYTICS
ReducedAdministration
CONTROL EASE OF USE
1st パーティーサービス
Azure の他のサービスとの比較
HDInsight with
Spark
Azure Databricks
Azure Data Lake
Analytics
マネージドサービス Yes Yes Yes
オートスケール No Yes Yes
スケール時停止不要 No Yes Yes
開発言語 Python, Scala, Java,
R, SQL
Python, Scala, Java,
R, SQL
C#/U-SQL
スケールアウト 単位 クラスター クラスター ジョブ単位
数分以内の スケールア
ウト No Yes Yes
インメモリ 処理 Yes Yes No
Azure ストレージサービスへのダイレクトデータアクセス
Azure ストレージサービスを Databricks に直接マウントして集約された
データを処理
IoT デバイスやメディアなどの非構造化データ、オンプレミスの構造化データを Azure ストレージ
サービスに集約
Blob
Storage
基幹系アプリ
(構造化データ)
r
センサーデータ
(非構造化データ)
ログ/ファイル/メ
ディア
(非構造化データ)
Azure Databricks
Data Lake
Store
Data
Factory
IoT
Hub
Stream
Analytics
Azure PaaS サービスへのダイレクトアクセス
Azure Databricks で加工された構造化データを Azure Data
Warehouse へロード(Polybase データロードをサポート)
Blob Storage
Azure Databricks
Data Lake Store
SQL Data
Warehouse
Azure Machine
Learning
Azure Analysis
Services
Data
Factory
Azure
Databricks
Blob
Storage
Cosmos DB
SQL
Database
SQL Data
Warehouse
Data Lake
Store
Power BI
Cosmos DB
Connector
JDBC
connection
DBFS
mount
DBFS
mount
Event Hubs
Connector SQL DB
Connector
SQL DW
Connector
Event Hubs
Kafka
Streaming
Data Factory
Activity
Kafka on
HDInsight
クラスター
ワークスペース
ジョブ
フォルダー
ノートブック
テーブル
MLlib
SparkML GraphX
• 分散ファイルシステム(HDFS),そ
の他多様なデータソースが利用可
能
分散処理エンジンを含むコア部分
• Scala/Java/Python/R/SQLから利用可能
• ストリーミング、機械学習、グラフ
などの複雑な処理を簡単に実現する
ための 標準ライブラリ
• DatabricksやYARN/Mesosなどクラス
タマネージャと連係可能
• もちろん単独でも
グラフ分析機械学習リアルタイム分析構造化データ
表形式データ
• RDD = Resilient Distributed Datasets (耐障害性
があり分散処理可能なデータセット)
• この抽象化オブジェクトを基本としたデータ操
作(RDDクラスが持つmap & reduceメソッドを
利用して並列処理を行う)
• 非構造化データに対して柔軟な処理が可能
• RDBMSのテーブルのように行、名前、データ
型が与えられスキーマを利用した構造化データ
処理を得意とする
• SQL形式で処理を行うことが可能でオプティマ
イザによる最適化が行われ最終的にRDDの物理
プランが生成される
• RDDと比べて可読性が高く、またRDDと違い
言語ごとのパフォーマンス差が少ない
name (string) Age (integer) Address
(string)
name1 age1 address1
name2 age2 address2
name3 age3 address3
https://ja.wikipedia.org/wiki/Apache_Spark
http://technicaltidbit.blogspot.com/2015/10/spark-16-datasets-best-of-rdds-and.html
https://spark.apache.org/docs/latest/index.html
• RDDを基本とした分散処理から
DataFramesを中心とした高レベルに抽象
化された処理にシフト
• Spark Streaming -> Structured Streaming
• spark.mllib -> spark.ml
• Graph X -> Graph Frames
• https://docs.azuredatabricks.net/spark/lates
t/data-sources/index.html
• https://docs.microsoft.com/en-
us/azure/azure-databricks/databricks-
connect-to-data-sources
Azure Cosmos
DB
Azure Databricks
(Spark)
Azure Blob
Storage
Notebook: elt-blob-storage-cosmosdb-python
https://github.com/yokawasa/databricks-notebooks/blob/master/notebooks/elt-blob-storage-cosmosdb-
python.ipynb
New data
Cosmos DB
Azure Databricks
(Spark)
Change Feed Processed data
https://github.com/Azure/azure-cosmosdb-spark/blob/master/samples/lambda/readme.md
Notebook: Twitter with Spark and Azure Cosmos DB Change Feed.ipynb
⇒ 大量データシステムのかかえる課題・問題を解決
⇒ Azure の 1st パーティーサービス
⇒ Azure の Spark 開発・運用・管理基盤
⇒ 各種コネクターを利用した Azure サービスとの容易な統合
⇒ Sparkアプリ開発に必要な基礎知識
⇒ DataFrame ベースのハイパフォーマンスなアプリ開発
アプリケーション開発者のためのAzure Databricks入門

アプリケーション開発者のためのAzure Databricks入門

Editor's Notes

  • #28 https://docs.databricks.com/_static/notebooks/databricks-for-data-engineers.html
  • #29 Hadoop の問題を解決するためのSparkは生まれた Calalyst optimizer
  • #33 Spark.mllib -> MLlib RDDベースのAPIは、今はメンテナンスモードにあります. データフレームはRDDよりももっと使いやすいAPIを提供します。 データフレームの利点: Spark Datasources, SQL/DataFrame クエリ, Tungsten および Catalyst 最適化を含み、言語間でAPIを揃えます。 Structured Streaming: Spark SQL上でストリーム処理アプリケーションを簡単に組むためのコンポーネント(Spar,2.2でProductionReady)   学習コストの低さ、Kafkaとの親和性の高さ
  • #38 Azure Databricks (Spark) アプリケーション開発のための基礎