Memulai kluster Ray di Azure Databricks
Azure Databricks menyederhanakan proses memulai kluster Ray dengan menangani kluster dan konfigurasi pekerjaan dengan cara yang sama seperti halnya dengan pekerjaan Apache Spark apa pun. Ini karena kluster Ray sebenarnya dimulai di atas kluster Apache Spark yang dikelola.
Menjalankan Ray pada komputer lokal
import ray
ray.init()
Menjalankan Ray di Azure Databricks
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)
Pendekatan ini bekerja pada skala kluster apa pun, dari beberapa hingga ratusan simpul. Kluster ray di Azure Databricks juga mendukung penskalakan otomatis.
Setelah membuat kluster Ray, Anda dapat menjalankan kode aplikasi Ray apa pun di buku catatan Azure Databricks.
Penting
Databricks merekomendasikan penginstalan pustaka yang diperlukan untuk aplikasi Anda untuk %pip install <your-library-dependency>
memastikan tersedia untuk kluster dan aplikasi Ray Anda yang sesuai. Menentukan dependensi dalam panggilan fungsi init Ray menginstal dependensi di lokasi yang tidak dapat diakses oleh simpul pekerja Apache Spark, yang mengakibatkan ketidakcocokan versi dan kesalahan impor.
Misalnya, Anda dapat menjalankan aplikasi Ray sederhana di notebook Azure Databricks sebagai berikut:
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))
Mematikan kluster Ray
Kluster Ray secara otomatis dimatikan dalam keadaan berikut:
- Anda melepaskan notebook interaktif dari kluster Azure Databricks Anda.
- Pekerjaan Azure Databricks Anda selesai.
- Kluster Azure Databricks Anda dimulai ulang atau dihentikan.
- Tidak ada aktivitas untuk waktu menganggur yang ditentukan.
Untuk mematikan kluster Ray yang berjalan di Azure Databricks, Anda dapat memanggil ray.utils.spark.shutdown_ray_cluster
API.
from ray.utils.spark import shutdown_ray_cluster
import ray
shutdown_ray_cluster()
ray.shutdown()