你好! 这几个月我将分享我用树莓派做的一些项目,希望能对大家有所帮助。 这是项目1,这个项目我们来制作分布式集群计算机。其中需要用到4个树莓派。
具体怎么搭建路由器我就不说了。说说关键点。 确保路由器的IP地址是192.168.1.1。尽量不要用手机热点,亲测无法使用。
安装dispy
sudo pip3 install dispy安装psutil
sudo pip3 install psutil其中dispy是一种分布式并行计算框架,可以通过在客户端写程序并在服务端执行。而dispy需要使用psutil获取服务器CPU的使用量。 再在/home/pi目录下,创建一个sh文件
nano start_dispynode.sh内容为
#!/bin/sh -e sleep 30 _IP=$(hostname -I) dispynode.py -i $_IP --daemon接着配置开机自动启动这个sh文件。 另外三个树莓派按同样方法进行配置。 也可以将需要配置的树莓派的SD卡进行格式化,在已配置好的树莓派上,插入SD卡(一个一个分开烧录,确保USB卡槽没有其他U盘),将整个系统克隆到已格式化的SD卡中。通过以下命令
sudo dd bs=4M if=/dev/mmcblk0 of=/dev/sda安装dispy
sudo pip3 install dispy下载nmap,让客户端可以查询到服务器的IP地址从而根据需要控制服务器的重启或关闭。
sudo apt-get install nmap接着在终端/home/pi目录下下载客户端软件
git clone https://github.com/raspberrypilearning/octapi-setup.git接下来通过nmap查询出连接到路由器的服务器IP
nmap -sP 192.168.1.*接着输入如下命令建立ssh信赖密钥。
ssh-keygen通过如下命令,使用ssh远程复制到对应IP的服务器,其中为你对应的服务器的IP地址
ssh-copy-id -i ~/.ssh/id_rsa.pub <remote ip>客户端搭建完毕。
我们选择计算圆周率pi作为我们的计算目标,这次采用的方法是利用概率分布进行计算的。具体实现可查看代码。 在客户端树莓派终端,来到之前下载的client目录下,执行如下命令
sudo python3 compute_pi_efficient.py 50000 2000我们这里规定每个任务需要产生50000个随机点,总共有2000个任务分配至服务端。当计算完毕时,总共是产生了50000*2000个点。 运行之后的大致结果如下图所示 由图可知我们的总用时是24.65s,计算过程中同时有12个cpu进行工作。 为了对比,我们需要修改这个程序,改为一个服务器进行计算,来体现出集群计算机计算的优势。 首先
cp compute_pi_efficient.py compute_pi_single.py再
nano compute_pi_single.py找到server_nodes =‘192.168.1.*’,将其改为你所对应的具体服务器IP地址。 运行
sudo python3 compute_pi_single.py 50000 2000结果如下 可以看出,分布式计算可以大大提高计算速度和空闲cpu的使用率。
参考 https://projects.raspberrypi.org/en/projects/build-an-octapi https://github.com/raspberrypilearning/octapi-setup