Single Node clusters | Databricks on AWS [2021/6/16時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
シングルノードクラスターはApache Sparkのドライバーで構成されるクラスターであり、ワーカーはありません。シングルノードクラスターはDelta Lakeを含む全てのSparkデータソース、Sparkジョブをサポートしています。スタンダードクラスターでは、Sparkジョブを実行するために最低1台のSparkワーカーが必要となります。
以下のようなケースでシングルノードクラスターは役立ちます。
- データのロード、セーブにSparkを使用するシングルノードの機械学習ワークロード。
- ライトな探索的データ分析。
シングルノードクラスターの作成
シングルノードクラスターを作成するには、クラスターを設定する際にCluster ModeをSingle Nodeに設定します。
シングルノードクラスターの特徴
シングルノードクラスターには以下の特徴があります。
- Sparkはローカルで実行されます。
- ワーカーノードがないため、ドライバーがマスターかつワーカーとして動作します。
- 論理的コアに対して1つのエグゼキュータースレッドが起動します。1コアはドライバー分となります。
- すべての
stderr
、stdout
、log4j
出力はドライバーログに保存されます。 - シングルノードクラスターをスタンダードクラスターに変更することはできません。スタンダードクラスターを使用するには、スタンダードクラスターを作成し、ノートブックをアタッチしてください。
制限
-
大規模なデータ処理は、シングルノードクラスターのリソースを全て使い尽くす場合があります。このようなワークロードに対しては、スタンダードクラスターを使用することをお勧めします。
-
シングルノードクラスターは共有を目的としたものではありません。リソース競合を回避するためには、クラスターを共有する際にはスタンダードモードのクラスターを使用することをお勧めします。
-
スタンダードクラスターは0個のワーカーにスケールすることはできません。この場合には、シングルノードクラスターを使ってください。
-
シングルノードクラスターはプロセス分離との互換性はありません。
-
シングルノードクラスターではGPUスケジューリングは有効化されません。
-
シングルノードクラスターでは、SparkはUDTカラムを持つParquetファイルを読み込むことができません。以下のようなエラーが発生します。
The Spark driver has stopped unexpectedly and is restarting. Your notebook will be automatically reattached.
```
この問題を回避するには、ネイティブのParquetリーダーを無効にします。
```py:Python
spark.conf.set("spark.databricks.io.parquet.nativeReader.enabled", False)
```
REST API
シングルノードクラスターを作成するためにClusers APIを使用することができます。
シングルノードクラスターのポリシー
クラスターポリシーを用いることで、シングルノードクラスターの設定をシンプルにすることができます。
クラスター作成権限を持たないメンバーがいるデータサイエンスチームの例を考えてみます。管理者はプールとクラスターポリシーを用いて、チームメンバーがある最大数のシングルノードクラスターの作成を許可するクラスターポリシーを作成することができます。
-
プールを作成します。
-
Max capacityを
10
に設定します。 - Autopilot optionsでautoscaling enabled for local storageを有効化します。
- Instance typeをSingle Node clusterに設定します。
- Databricksのバージョンを選択します。可能であれば最新のバージョンを使用することをお勧めします。
- Createをクリックします。
プールのプロパティページが表示されます。新規に作成したプールのプールIDとインスタンスタイプIDをメモしておきます。
-
Max capacityを
-
クラスターポリシーを作成します。
- プールのプロパティから取得したプールIDとインスタンスタイプIDを設定します。
- 必要に応じて制約を指定します。
-
チームメンバーにクラスターポリシーへのアクセスを許可します。ユーザー管理をシンプルにするためにユーザーとグループの管理を活用することができます。
{
"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.type
をfixed
、cluster_type.value
をjob
に設定します。auto_termination_minutes
を参照している箇所を全て削除します。
{
"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
}
}