分布式系统使用说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分布式系统使用说明
2016.8.17
目录
一.系统的大致结构 (2)
服务器master端 (2)
服务器slave节点 (2)
二.任务下达前的准备工作 (2)
2.1 移动硬盘的挂载卸载和分享 (2)
2.1.1 新加入的移动硬盘的挂载方法 (2)
2.2.2系统的启动 (4)
三.任务的下达方式 (5)
四.当前已知的需要改进的问题 (6)
一.系统的大致结构
服务器master端
当前的服务器的master节点ip地址为192.168.100.203
master节点的主要任务是提供web服务,用户访问服务器web页面进行任务的下达服务器slave节点
slave节点当前有一台,ip地址是192.168.100.233
slave节点的主要作用是执行分发的任务,这里举例第三种任务Snhoo的解图任务,下达的任务
是指定的根目录,其目录下所有子文件夹中的视频都会被解析,而每一个视频就是一个子任务,
子任务会轮询地分发到各个slave节点分布式执行
二.任务下达前的准备工作
2.1 移动硬盘的挂载卸载和分享
2.1.1 新加入的移动硬盘的挂载方法
使用sudofdisk–l命令来读取硬盘信息:
在图示的示例中,添加的移动硬盘是/dev/sda,使用命令sudo parted /dev/sda print来获得分区信息
根据这个输出的分区信息,知道sda中ntfs文件系统所在的位置是/dev/sda2
将硬盘的文件系统挂载到/media/disk 目录下:
执行命令:sudo mount –t ntfs /dev/sda2 /media/disk
如果因为nfs已经启动的原因导致挂载失败,可以考虑如下方式找出占用资源的进程:
可以发现这一情况是由于将之前已经在这个位置挂在了硬盘,其还未被卸载
/media/disk 和/mnt/task_scheduler_source两个文件夹是bind起来的,因为每个slave节点挂载的是/mnt/task_scheduler_source文件夹,而我们将硬盘挂载在/media/disk下并且进行文件夹绑定
为了完全卸载之前的硬盘,执行sudoumount /media/disk和sudoumount /mnt/task_scheduler_source
关闭nfs服务的命令是:sudo service nfs-kernel-server stop (在出现device is busy 的时候可以尝试暂时关闭服务)
在把之前占用的设备卸载之后,挂载好硬盘到/media/disk目录下
然后对文件夹进行绑定,使得/mnt/task_shceduler_source访问新挂载的/media/disk
执行命令sudo mount –-bind /media/disk /mnt/task_scheduler_source
挂载绑定之后开启nfs服务,执行sudo service nfs-kernel-server start
到这里移动硬盘就成功地挂载到nfs分享的/mnt/task_shceduler_source目录下了
从slave节点访问挂载的/mnt/task_shceduler_source目录,验证可以访问到该硬盘:
卸载硬盘的时候按照先关闭nfs服务再卸载硬盘的顺序即可
2.2 系统的启动
2.2.1. master节点的服务启动:
首先使用ps aux | grep service.py和ps aux | grep flower查看有没有已经启动后台进程
这里示范将原来的服务进程杀死再重启:
在~/task_shceduler文件加下启动web服务
执行命令nohup python3 service.py 1>/dev/null 2>/dev/null &
和nohup flower celery –-broker=’192.168.100.233’1>/dev/null 2>/dev/null &来分别启动web服务和flower提供的任务监控服务
通过jobs可以看到后台正在执行这两个程序:
2.2.2 slave节点的服务启动:
首先使用ps aux | grep celery 看时候已经存在,有的话可以杀死进程来重启
在~/task_shceduler目录下执行命令nohup celery –A proj worker 1>/dev/null 2>/dev/null &来启动celery 准备接受任务
同样的可以用jobs来获取刚刚启动的celery程序
三.任务的下达方式
使用浏览器访问192.168.100.203:8888 根据页面提示填写任务的位置并进行任务提交
这里以/mnt/task_shceduler_source/160811赵一鸣测试/test 测试,提交任务之后,在对应地址的5555端口访问flower服务可以看到任务状态:
等State变为SUCCESS即表示任务结束,但是如果之前传入的参数不对或者因为文件权限等问题导致任务失败的话,有可能State显示success但是得到的结果不正确,即因为权限不够或者路径不存在导致的任务直接结束。
四.当前已知的需要改进的问题
首先当前每次只能挂载一个硬盘,如果需要挂载过个硬盘的话需要到slave节点上进行而外的挂载操作,正在替代的寻找解决方案
Get_images_from_video调用的程序unpack_video的指定特定帧的新功能还没有集成,另外需要修改为先拷贝到本地再执行。