Megosztás a következőn keresztül:


Ray-fürt indítása az Azure Databricksben

Az Azure Databricks leegyszerűsíti a Ray-fürtök indításának folyamatát úgy, hogy ugyanúgy kezeli a fürtöt és a feladatkonfigurációt, mint bármely Apache Spark-feladat esetében. Ennek az az oka, hogy a Ray-fürt valójában a felügyelt Apache Spark-fürt tetején van elindítva.

Ray futtatása helyi gépen

import ray

ray.init()

Ray futtatása az Azure Databricksben

from ray.util.spark import setup_ray_cluster
import ray

# If the cluster has four workers with 8 CPUs each as an example
setup_ray_cluster(num_worker_nodes=4, num_cpus_per_worker=8)

# Pass any custom configuration to ray.init
ray.init(ignore_reinit_error=True)

Ez a megközelítés bármilyen fürtméretben működik, néhánytól több száz csomópontig. Az Azure Databricks rayfürtjei szintén támogatják az automatikus skálázást.

A Ray-fürt létrehozása után bármilyen Ray-alkalmazáskódot futtathat egy Azure Databricks-jegyzetfüzetben.

Fontos

A Databricks azt javasolja, hogy telepítse az alkalmazáshoz %pip install <your-library-dependency> szükséges kódtárakat annak biztosítása érdekében, hogy azok a Ray-fürt és az alkalmazás számára ennek megfelelően legyenek elérhetők. A Ray init függvényhívás függőségeinek megadása olyan helyre telepíti a függőségeket, amely nem érhető el az Apache Spark feldolgozó csomópontjaihoz, ami verziókompatibilitást és importálási hibákat eredményez.

Futtathat például egy egyszerű Ray-alkalmazást egy Azure Databricks-jegyzetfüzetben az alábbiak szerint:

import ray
import random
import time
from fractions import Fraction

ray.init()

@ray.remote
def pi4_sample(sample_count):
    """pi4_sample runs sample_count experiments, and returns the
    fraction of time it was inside the circle.
    """
    in_count = 0
    for i in range(sample_count):
        x = random.random()
        y = random.random()
        if x*x + y*y <= 1:
            in_count += 1
    return Fraction(in_count, sample_count)

SAMPLE_COUNT = 1000 * 1000
start = time.time()
future = pi4_sample.remote(sample_count=SAMPLE_COUNT)
pi4 = ray.get(future)
end = time.time()
dur = end - start
print(f'Running {SAMPLE_COUNT} tests took {dur} seconds')

pi = pi4 * 4
print(float(pi))

Ray-fürt leállítása

A sugárfürtök automatikusan leállnak a következő körülmények között:

  • Leválaszthatja az interaktív jegyzetfüzetet az Azure Databricks-fürtről.
  • Az Azure Databricks-feladat befejeződött.
  • Az Azure Databricks-fürt újraindul vagy leáll.
  • A megadott tétlen időponthoz nincs tevékenység.

Az Azure Databricksen futó Ray-fürt leállításához meghívhatja az ray.utils.spark.shutdown_ray_cluster API-t.

from ray.utils.spark import shutdown_ray_cluster
import ray

shutdown_ray_cluster()
ray.shutdown()

Következő lépések