1
0

More than 1 year has passed since last update.

Databricksのシングルノードクラスター

Posted at

Single Node clusters | Databricks on AWS [2021/6/16時点]の翻訳です。

本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。

シングルノードクラスターはApache Sparkのドライバーで構成されるクラスターであり、ワーカーはありません。シングルノードクラスターはDelta Lakeを含む全てのSparkデータソース、Sparkジョブをサポートしています。スタンダードクラスターでは、Sparkジョブを実行するために最低1台のSparkワーカーが必要となります。

以下のようなケースでシングルノードクラスターは役立ちます。

  • データのロード、セーブにSparkを使用するシングルノードの機械学習ワークロード。
  • ライトな探索的データ分析。

シングルノードクラスターの作成

シングルノードクラスターを作成するには、クラスターを設定する際にCluster ModeSingle Nodeに設定します。

シングルノードクラスターの特徴

シングルノードクラスターには以下の特徴があります。

  • Sparkはローカルで実行されます。
  • ワーカーノードがないため、ドライバーがマスターかつワーカーとして動作します。
  • 論理的コアに対して1つのエグゼキュータースレッドが起動します。1コアはドライバー分となります。
  • すべてのstderrstdoutlog4j出力はドライバーログに保存されます。
  • シングルノードクラスターをスタンダードクラスターに変更することはできません。スタンダードクラスターを使用するには、スタンダードクラスターを作成し、ノートブックをアタッチしてください。

制限

  • 大規模なデータ処理は、シングルノードクラスターのリソースを全て使い尽くす場合があります。このようなワークロードに対しては、スタンダードクラスターを使用することをお勧めします。
  • シングルノードクラスターは共有を目的としたものではありません。リソース競合を回避するためには、クラスターを共有する際にはスタンダードモードのクラスターを使用することをお勧めします。
  • スタンダードクラスターは0個のワーカーにスケールすることはできません。この場合には、シングルノードクラスターを使ってください。
  • シングルノードクラスターはプロセス分離との互換性はありません。
  • シングルノードクラスターではGPUスケジューリングは有効化されません。
  • シングルノードクラスターでは、SparkはUDTカラムを持つParquetファイルを読み込むことができません。以下のようなエラーが発生します。

    The Spark driver has stopped unexpectedly and is restarting. Your notebook will be automatically reattached.
    

    この問題を回避するには、ネイティブのParquetリーダーを無効にします。

    Python
    spark.conf.set("spark.databricks.io.parquet.nativeReader.enabled", False)
    

REST API

シングルノードクラスターを作成するためにClusers APIを使用することができます。

シングルノードクラスターのポリシー

クラスターポリシーを用いることで、シングルノードクラスターの設定をシンプルにすることができます。

クラスター作成権限を持たないメンバーがいるデータサイエンスチームの例を考えてみます。管理者はプールクラスターポリシーを用いて、チームメンバーがある最大数のシングルノードクラスターの作成を許可するクラスターポリシーを作成することができます。

  1. プールを作成します。

    1. Max capacity10に設定します。
    2. Autopilot optionsautoscaling enabled for local storageを有効化します。
    3. Instance typeSingle Node clusterに設定します。
    4. Databricksのバージョンを選択します。可能であれば最新のバージョンを使用することをお勧めします。
    5. Createをクリックします。

    プールのプロパティページが表示されます。新規に作成したプールのプールIDとインスタンスタイプIDをメモしておきます。

  2. クラスターポリシーを作成します。

    • プールのプロパティから取得したプールIDとインスタンスタイプIDを設定します。
    • 必要に応じて制約を指定します。
  3. チームメンバーにクラスターポリシーへのアクセスを許可します。ユーザー管理をシンプルにするためにユーザーとグループの管理を活用することができます。

JSON
{
  "spark_conf.spark.databricks.cluster.profile": {
    "type": "fixed",
    "value": "singleNode",
    "hidden": true
  },
  "instance_pool_id": {
    "type": "fixed",
    "value": "singleNodePoolId1",
    "hidden": true
  },
  "spark_version": {
    "type": "fixed",
    "value": "7.3.x-cpu-ml-scala2.12",
    "hidden": true
  },
  "autotermination_minutes": {
    "type": "fixed",
    "value": 120,
    "hidden": true
  },
  "num_workers": {
    "type": "fixed",
    "value": 0,
    "hidden": true
  },
  "docker_image.url": {
    "type": "forbidden",
    "hidden": true
  }
}

シングルノードジョブクラスターのポリシー

ジョブに対するクラスターのポリシーを設定するために、同様のクラスターポリシーを定義することができます。cluster_type.typefixedcluster_type.valuejobに設定します。auto_termination_minutesを参照している箇所を全て削除します。

JSON
{
  "cluster_type": {
    "type": "fixed",
    "value": "job"
  },
  "spark_conf.spark.databricks.cluster.profile": {
    "type": "fixed",
    "value": "singleNode",
    "hidden": true
  },
  "instance_pool_id": {
    "type": "fixed",
    "value": "singleNodePoolId1",
    "hidden": true
  },
  "num_workers": {
    "type": "fixed",
    "value": 0,
    "hidden": true
  },
  "spark_version": {
    "type": "fixed",
    "value": "7.3.x-cpu-ml-scala2.12",
    "hidden": true
  },
  "docker_image.url": {
    "type": "forbidden",
    "hidden": true
  }
}

Databricks 無料トライアル

Databricks 無料トライアル

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0