社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
Ray是UC Berkeley RISE Lab新推出的高性能分布式执行框架,它使用了和传统分布式计算系统不一样的架构和对分布式计算的抽象方式,具有比Spark更优异的计算性能。Ray是一个基于Python的分布式执行引擎。相同的代码可以在单个机器上运行以实现高效的多处理,并且可以在群集上用于大量的计算。
Ray学习文档地址:
https://ray.readthedocs.io/en/latest/index.html
github地址:
https://github.com/ray-project/ray
近期,研究了其在python环境下集群的搭建,在此做个记录。
两台或两台以上ubuntu电脑
python 3.7.9
ray 0.8.7
两台电脑的ip分别为:
头节点:10.201.83.14
从节点:10.201.224.169
在两台电脑上均运行以下命令,以打开所有端口:
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F
sudo iptables-save
目前,官方文档里面的步骤只开放了6379端口,但实际上,还需要开放其他端口。但是,为并没有找到具体的需要开放的端口,这里就只能全部打开了。
ray start --head --port=6379
任选一台电脑作为头节点,首先激活含有ray的python环境,然后运行上述命令。执行结果如下图:
从图中可以看到,头节点的IP是10.201.83.14;从节点可以通过运行"ray start --address=‘10.201.83.14:6379’ --redis-password=‘5241590000000000’"加入集群;若想关闭ray,则可以通过"ray stop"命令停止ray。在使用过程中,还可以通过"localhost:8265"查看集群的资源情况,即下图:
ray start --address='10.201.83.14:6379' --redis-password='5241590000000000'
在非头节点的所有电脑上,首先激活含有ray的python环境,然后运行上述命令。'10.201.83.14:6379’是头节点的ip和主端口,'5241590000000000’是头节点启用后显示的密码。另外,可用–num-cpus=10 和 --num-gpus=1分别指定cpu和gpu数量。
从节点运行命令后的窗口图:
从节点加入集群后,可以在主节点上看下资源情况:
可以发现,上面多了一个电脑。
import time
import ray
ray.init(redis_address="10.201.83.14:6379")
def f1():
time.sleep(1)
@ray.remote
def f2():
time.sleep(1)
#不使用ray 以下时间长
time1=time.time()
[ f1() for _ in range(50)]
print(time.time()-time1)
#使用ray 以下时间短
time2=time.time()
ray.get([ f2.remote() for _ in range(50)])
print(time.time()-time2)
在从节点,新建main.py文件,代码如上,然后在命令行用python main.py运行即可。如下图所示,两个时间分别是50秒和7秒,用了ray的时间明显变短。
同样地用python运行程序,运行时间与从节点的类似。
作者:hui_0_
出处:https://blog.csdn.net/hui_0_/article/details/111568809
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!