マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

Apache Sparkベースのビッグデータ、統合データ分析プラットフォーム

用途

ビッグデータ分析ワークロードで利用する。

  • ETLのようなバッチ処理
  • データ・パイプラインの過程
  • データ・サイエンティスト向けのフル稼働の計算資源
    には向かない(→ Data Science Virtual Machines)。

コンセプト

DataとAIの⺠主化

「DataとAIの⺠主化」を実現する機能

レイクハウス

  • ただ、
  • ブロンズ
  • シルバー
  • ゴールド

データ領域とか、そう言う概念はあるらしい。

詳細

機能

業務領域

  • ビジネス分析(BI/レポート)
  • ⾃由検索(SQLアナリティクス)
  • 機械学習(+深層学習)

データ種類

  • 構造化(CRM(のRDB)など)
  • 半構造化(JSON/XMLなど)
  • ⾮構造化(画像・動画など)

処理タイプ

拡張性

  • ストレージ拡張
  • リソース拡張
  • クラウド(マネージドサービス)

コラボレーション

同時編集・コメント・ロギング機能にて、チームでの開発を加速

  • ビジネス・アナリスト
  • データ・サイエンティスト
  • データ・エンジニア

デジタルイニシアティブ実⾏体制

⾔語

多⾔語対応にて、スキルの壁を跨いでコラボレーション

  • SQL
  • Python/R
  • Scala

スタック

データレイク

  • 多種多様な全てのデータをデータレイクに格納

DELTA LAKE

  • 以下を実現する
  • ⾼信頼性
    • ACIDトランザクション
    • タイムトラベル / スナップショット
    • バッチとストリーミング統合(Apache Spark
    • スキーマ妥当性検証とエボリューション
  • ⾼性能
    Apache Spark Optimized Engine
    • インデックス
    • コンパクション
    • データスキッピング
    • キャッシング
  • オープンソースのオープンな形式をベース(Parquet)

DELTA ENGINE

  • SQL分析・ダッシュボード(要するにウワモノ)の⾼速化を⽀える。
  • 高性能なクエリ・エンジン。
  • SQL や DataFrame?(Spark SQL)のワークロードを加速させる。
    • インプットを⾃動的にキャッシュ化
    • Apache Sparkのオプティマイザを拡張
    • ネイティブ(C++)でベクトル化された実⾏エンジン(Photon)

上モノ

違い

OSS版との違い

...

クラウド・サービスOSS
DELTA LAKEDELTA LAKE
DELTA ENGINE

Azure HDInsightとの違い

上モノ

多様なユースケース

さまざまなデータソースから集約された、
⾼品質なデータセットにアクセス可能であるため、
1つのプラットフォーム上で多様なユースケースを実現可能。

  • Redash
    BI レポート&ダッシュボード

Workspace

機械学習のツールの課題に対するソリューション

  • データ・サイエンスチームの⽣産性を向上
  • 1つのプラットフォームにて多種多様な
    ツール・⾔語・フレームワークを利⽤可能
  • コラボレーション可能なノートブック

MLflow

機械学習のデプロイの課題に対するソリューション

  • 標準化された機械学習ライフサイクル

    モデル学習→ モデル登録→ モデル⽐較→ 承認ワークフロー→ モデルデプロイ

  • シームレスにセキュアに機械学習モデルをステージングから本番環境へ連携可能
  • MLflowトラッキング
    • 実験のトラッキングと検索
    • レコードとクエリの実験:コード、データ、コンフィグ、結果
  • MLflowプロジェクト
    • 再現可能なプロジェクト
    • あらゆるプラットフォームで再現可能なように
      パッケージ化されたデータ・サイエンス・コード
  • MLflowモデル・レジストリ
    • モデル管理とレビュー
    • セントラルのレポジトリーにて
      モデルを保存、注釈付与、管理
  • MLflowモデル・サービング
    • 柔軟なデプロイ⽅法
    • 機械学習モデルを様々な環境に簡易にデプロイ可能
    • RESTエンドポイント

開発デプロイ実行

開発

.NET for Apache SparkガイドのGet started in 10 minutesをやる。

デプロイ

取り敢えず、.NET for Apache Spark ガイドのデプロイ・コンテンツをやってみる。

無料試用版

Azureの無料試用版サブスクリプションは利用不可との事。

  • ただし、
    • Databricksユニットには課金されないが、
    • クラスタのVMには課金されるので注意する。

ワークスペースを作成

  • 値を指定
    • ワークスペース名
      なおリソース・グループ名には、prefixにdatabricks-rg-が付与されるので、
      databricksXXXと入力すると、databricks-rg-databricksXXX-XXXXになってしまう。
  • サブスクリプション
    任意の値
  • リソース グループ
    任意の値
  • 場所(リージョン)
    任意の値(東日本にした
  • 価格レベル
    試用版を選択できる。
  • Virtual Network
    以下の項目は、共に「いいえ」を選択した。
    • Secure Cluster Connectivity による...デプロイ (パブリック IP なし)
    • 自分の仮想ネットワーク (VNet) に...デプロイします
  • ワークスペースの作成には数分かかる。
    • 「デプロイが完了しました」が表示されたら、
    • [リソースに移動]ボタンを押下する。
    • [ワークスペースの起動]ボタンを押下する。
    • Databricks のポータル・サイトに移動する。

ツールのインストール

  • Databricks CLIには、
    Python 3.6 以降が必要
  • Databricks CLIのインストール
  • pip3を使用してインストール
    >pip3 install databricks-cli
  • インストールの確認
    >databricks
    Usage: databricks [OPTIONS] COMMAND [ARGS]...
    
    Options:
      -v, --version   0.14.3
      ...

ツールの設定

  • 認証の詳細を設定
    >databricks configure --token
  • ホスト URLの入力
    Databricks Host (should begin with https://): https://<Location>.azuredatabricks.net
  • トークンの入力
  • 取得
    トークンの取得
  • 入力
    Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • 以下のようになる(Tokenの所は入力が表示されない)。
    >databricks configure --token
    Databricks Host (should begin with https://): https://.....azuredatabricks.net/
    Token:
    
    >

アプリの発行

  • ターゲットはubuntu
    >dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.16.04-x64
  • publishしたものをpublish.zipにまとめる。
    Windowsなので、PowerShellを使用してみる。
    powershell compress-archive publish ..\publish.zip

依存関係のダウンロード

  • 依存関係ファイルをダウンロードする。

※ URL : https://github.com/dotnet/spark/tree/master/deployment

  • install-worker.sh
    Apache Spark クラスタに Worker バイナリをインストール
  • db-init.sh
    • ワーカーとアプリの依存関係を Databricks Spark クラスタに インストール。
    • DOTNET_SPARK_RELEASEを修正するという手順があるが、コレは不要らしい。

※ *.shの行の終わりは Unix 形式 (LF) であることを確認

ファイルのアップロード

次のファイルをアップロードする

  • アプリケーション
  • 一式
  • publish.zip
    発行したアプリ
  • input.txt
    自分は、プロジェクト出力煮含めていたので、publishに同梱していたが、
    本来は、そうではなかったらしいので、別途アップロードが必要らしい。
  • dbfsにアップロード
    Databricks CLIを使って。
    databricks fs cp input.txt dbfs:/input.txt
    databricks fs cp publish.zip dbfs:/spark-dotnet/publish.zip
    databricks fs cp microsoft-spark-2-4_2.11-1.0.0.jar dbfs:/spark-dotnet/microsoft-spark-2-4_2.11-1.0.0.jar
    ※ 自分は、input.txtは、ZIP同梱のためアップロードせず。
  • 前述の一式
  • Microsoft.Spark.Worker
  • install-worker.sh
  • db-init.sh
  • dbfsにアップロード
    Databricks CLIを使って。
    databricks fs cp Microsoft.Spark.Worker.netcoreapp3.1.linux-x64-1.0.0.tar.gz dbfs:/spark-dotnet/Microsoft.Spark.Worker.netcoreapp3.1.linux-x64-1.0.0.tar.gz
    databricks fs cp install-worker.sh dbfs:/spark-dotnet/install-worker.sh
    databricks fs cp db-init.sh dbfs:/spark-dotnet/db-init.sh

実行

以下のように、ジョブの作成して実行する。

ジョブを作成する。

ワークスペース(Databricks のポータル・サイト)

  • 左メニュー中の [Job] アイコンを選択し、
  • 次に[+ Create Job] を選択して、Job名を入力、

spark-submitの構成

初めに、[Task]の[Type]を[Notebook]から[Spark Submit]に変更する。

クラスタ構成の設定

次に、Clusterの[Edit]を選択し、Configure New Clusterを表示させる。

  • Databricks Runtime Versionを選択
    • Spark 2.4.1が無かったので、最も近い、
    • Runtime: 5.5 LTS (Scala 2.11, Spark 2.4.3)に変更。
  • Initスクリプトを db-init.sh に設定
    • Advanced optionsを展開する。
    • [Init Scripts]タブを選択する。
    • [Destination]ドロップダウンリストでDBFSを選択する。
    • [Init Script Path]に以下を入力する。
      dbfs:/spark-dotnet/db-init.sh
    • [Confirm]を押下する。

※ コレにより、db-init.sh 内で install-worker.sh が構成される($1-3をパラメタライズ)。

Parametersの設定

  • Parametersに次の文字列を貼り付ける。
    ["--class","org.apache.spark.deploy.dotnet.DotnetRunner","/dbfs/spark-dotnet/microsoft-spark-2-4_2.11-1.0.0.jar","/dbfs/spark-dotnet/publish.zip","mySparkApp"]

※ 自分は、

  • mySparkApp?MySparkApp? としていたので、その様に変更した。
  • 引数を設定する必要があったが、
    • 設定方法が不明なので元に戻した。
    • 将来的には方法が発見されるかも...。
  • [Create]を押下する。

アプリの実行

  • ここで、Initスクリプトが実行される。
  • ジョブのクラスタが作成されるまで数分かかる。
  • Job名の横にある [Run Now] ボタンをクリックする。
  • Jobで構成した Spark クラスタでJobが実行される。

リソースのクリーンアップ

リソース グループを削除する。

Azure HDInsightとの比較

クラスタの作成中のdb-init.sh 設定アプリの実行

スクリプト アクション実行

チュートリアル

参考

YouTube?

gihyo.jp … 技術評論社

クリエーションライン株式会社

Microsoft Azure

Microsoft Docs

Azure Databricks のドキュメント

https://docs.microsoft.com/ja-jp/azure/databricks/

  • クイックスタート
    ワークスペースの作成
    • ポータル
    • Azure PowerShell
    • ARM テンプレート
    • 仮想ネットワーク
  • チュートリアル
    • Docker コンテナで稼働している SQL Server に対するクエリ
    • Azure Key Vault を使用したストレージへのアクセス
    • Cosmos DB サービス エンドポイントの使用
    • ETL 操作の実行
    • Event Hubs を使用したデータのストリーミング
    • Cognitive Services を使用した感情分析

.NET、C#

  • ...

.NET for Apache Spark ガイド

...

YouTube?

slideshare.net

開発基盤部会 Wiki & Blog


Tags: :クラウド, :Azure


添付ファイル: file無題.png 1件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-06-23 (水) 14:27:39 (59m)