使用射線磚
預覽
這個特性是在公共預覽。
雷tripwire以上支持創建雷集群和射線應用程序運行在Apache引發集群數據磚。對射線開始使用機器學習的信息,包括教程和示例,請參見射線的文檔。關於雷和Apache火花集成的更多信息,見射線引發API文檔。
創建一個射線集群
創建一個射線集群,使用ray.util.spark.setup_ray_clusterAPI。
從ray.util.spark進口setup_ray_cluster,shutdown_ray_clustersetup_ray_cluster(num_worker_nodes=2,num_cpus_per_node=4,collect_log_to_path=“/ dbfs /道路/ / ray_collected_logs”)
的ray.util.spark.setup_ray_cluster
API創建一個射線簇火花。在內部,它創建一個背景火花工作。工作中的每個火花任務創建一個射線工作者節點,和雷頭節點上創建驅動程序。這個論點num_worker_nodes
創建代表射線工作者節點的數量。指定數量的CPU或GPU核心分配給每個射線工作者節點,設置參數num_cpus_per_node
或num_gpus_per_node
。
雷集群創建之後,您就可以直接在你的筆記本運行任何射線應用程序代碼。一個HTML鏈接在新選項卡中打開雷集群儀表板也顯示,允許您查看集群的射線儀表板。
提示
如果您正在使用一個磚分配模式集群,您可以設置num_worker_nodes
來ray.util.spark.MAX_NUM_WORKER_NODES
為了使用所有可用的資源為你雷集群。
setup_ray_cluster (#……num_worker_nodes = ray.util.spark.MAX_NUM_WORKER_NODES,)
你可以設置參數collect_log_to_path
指定目的地的路徑,你想收集射線集群日誌。日誌收集運行射線集群後關閉。磚建議你設置一個路徑開始/ dbfs /
所以日誌保存即使你終止集群的火花。
請注意
調用ray.util.spark.setup_ray_cluster
將設置RAY_ADDRESS
環境變量的地址創建集群射線,射線應用程序將自動使用這個雷集群。您可以指定一個替代集群地址使用地址
論點的ray.initAPI。
運行一線的應用程序
雷集群創建之後,您可以運行任何射線磚筆記本的應用程序代碼。例如,您可以運行一個簡單的射線應用程序在一個數據磚筆記本如下:
進口雷進口隨機進口時間從分數進口分數雷。初始化()@ray。遠程defpi4_sample(sample_count):”““pi4_sample sample_count實驗運行,並返回部分時間內循環。”“”in_count=0為我在範圍(sample_count):x=隨機。隨機()y=隨機。隨機()如果x*x+y*y< =1:in_count+ =1返回分數(in_count,sample_count)SAMPLE_COUNT=1000年*1000年開始=時間。時間()未來=pi4_sample。遠程(sample_count=SAMPLE_COUNT)pi4=雷。得到(未來)結束=時間。時間()大調的=結束- - - - - -開始打印(f“運行{SAMPLE_COUNT}測試了{大調的}秒的)π=pi4*4打印(浮動(π))
從火花DataFrame加載數據
加載一個火花DataFrame射線數據集,首先你需要保存火花DataFrame DBFS使用鑲花或δ格式。為了控製DBFS安全地訪問、磚建議你山雲DBFS對象存儲。然後,您可以創建一個ray.data.Dataset
實例從保存的火花DataFrame路徑使用以下輔助方法:
進口雷進口操作係統從urllib.parse進口urlparsedefcreate_ray_dataset_from_spark_dataframe(spark_dataframe,dbfs_tmp_path):spark_df。寫。模式(“覆蓋”)。拚花(dbfs_tmp_path)fuse_path=“/ dbfs”+urlparse(dbfs_tmp_path)。路徑返回雷。數據。read_parquet(fuse_path)#例如,讀表作為火花DataFrame三角洲spark_df=火花。讀。表(“diviner_demo.diviner_pedestrians_data_500”)#提供dbfs位置寫表data_location_2=(“dbfs: / home / example.user@m.eheci.com/data/ray_test/test_data_2”)#火花DataFrame轉換為一線的數據集ray_dataset=create_ray_dataset_from_spark_dataframe(spark_dataframe=spark_df,dbfs_tmp_path=data_location_2)
關閉集群一線
關閉射線集群上運行數據磚,你可以調用ray.utils.spark.shutdown_ray_clusterAPI。
調優射線集群配置
每個射線工作者節點的推薦配置是:
每個雷工人最低4個CPU核心節點。
最低10 gb堆內存為每個射線工作者節點。
所以,當調用ray.util.spark.setup_ray_cluster
,磚建議設置num_cpus_per_node
一個值> = 4。
看到射線工作者節點的內存分配細節調優堆內存為每個射線工作者節點。
射線工作者節點的內存分配
每個射線工作者節點使用兩種類型的內存:堆內存和對象存儲內存。每種類型的分配的內存大小是決定如下所述。
總內存分配給每個射線工作者節點是:
RAY_WORKER_NODE_TOTAL_MEMORY=(SPARK_WORKER_NODE_PHYSICAL_MEMORY/MAX_NUMBER_OF_LOCAL_RAY_WORKER_NODES*0.8)
MAX_NUMBER_OF_LOCAL_RAY_WORKER_NODES
是射線工作者節點的最大數量,可以引發工人節點上啟動。這是由參數決定num_cpus_per_node
或num_gpus_per_node
。
如果你不設置參數object_store_memory_per_node
,然後堆內存大小和對象存儲內存大小分配給每個射線工作者節點是:
RAY_WORKER_NODE_HEAP_MEMORY=RAY_WORKER_NODE_TOTAL_MEMORY*0.7OBJECT_STORE_MEMORY_PER_NODE=RAY_WORKER_NODE_TOTAL_MEMORY*0.3
如果你設置參數object_store_memory_per_node
:
RAY_WORKER_NODE_HEAP_MEMORY=RAY_WORKER_NODE_TOTAL_MEMORY- - - - - -argument_object_store_memory_per_node
此外,對象存儲內存大小/射線工作者節點有限的共享內存操作係統。最大的價值是:
OBJECT_STORE_MEMORY_PER_NODE_CAP=(SPARK_WORKER_NODE_OS_SHARED_MEMORY/MAX_NUMBER_OF_LOCAL_RAY_WORKER_NODES*0.8)
SPARK_WORKER_NODE_OS_SHARED_MEMORY
是/dev/shm
磁盤容量配置的火花工作節點。