1分布式系统使用说明2016.8.17目录一.系统的大致结构...................................................................................................................2服务器master端.....................................................................................................................2服务器slave节点....................................................................................................................2二.任务下达前的准备工作.........................................................................................................22.1移动硬盘的挂载卸载和分享...........................................................................................22.1.1新加入的移动硬盘的挂载方法............................................................................22.2.2系统的启动............................................................................................................4三.任务的下达方式.....................................................................................................................5四.当前已知的需要改进的问题...................................................................................................62一.系统的大致结构服务器master端当前的服务器的master节点ip地址为192.168.100.203master节点的主要任务是提供web服务,用户访问服务器web页面进行任务的下达服务器slave节点slave节点当前有一台,ip地址是192.168.100.233slave节点的主要作用是执行分发的任务,这里举例第三种任务Snhoo的解图任务,下达的任务是指定的根目录,其目录下所有子文件夹中的视频都会被解析,而每一个视频就是一个子任务,子任务会轮询地分发到各个slave节点分布式执行二.任务下达前的准备工作2.1移动硬盘的挂载卸载和分享2.1.1新加入的移动硬盘的挂载方法使用sudofdisk–l命令来读取硬盘信息:在图示的示例中,添加的移动硬盘是/dev/sda,使用命令sudoparted/dev/sdaprint来获得分区信息根据这个输出的分区信息,知道sda中ntfs文件系统所在的位置是/dev/sda2将硬盘的文件系统挂载到/media/disk目录下:执行命令:sudomount–tntfs/dev/sda2/media/disk如果因为nfs已经启动的原因导致挂载失败,可以考虑如下方式找出占用资源的进程:3可以发现这一情况是由于将之前已经在这个位置挂在了硬盘,其还未被卸载/media/disk和/mnt/task_scheduler_source两个文件夹是bind起来的,因为每个slave节点挂载的是/mnt/task_scheduler_source文件夹,而我们将硬盘挂载在/media/disk下并且进行文件夹绑定为了完全卸载之前的硬盘,执行sudoumount/media/disk和sudoumount/mnt/task_scheduler_source关闭nfs服务的命令是:sudoservicenfs-kernel-serverstop(在出现deviceisbusy的时候可以尝试暂时关闭服务)在把之前占用的设备卸载之后,挂载好硬盘到/media/disk目录下然后对文件夹进行绑定,使得/mnt/task_shceduler_source访问新挂载的/media/disk执行命令sudomount–-bind/media/disk/mnt/task_scheduler_source挂载绑定之后开启nfs服务,执行sudoservicenfs-kernel-serverstart到这里移动硬盘就成功地挂载到nfs分享的/mnt/task_shceduler_source目录下了从slave节点访问挂载的/mnt/task_shceduler_source目录,验证可以访问到该硬盘:4卸载硬盘的时候按照先关闭nfs服务再卸载硬盘的顺序即可2.2系统的启动2.2.1.master节点的服务启动:首先使用psaux|grepservice.py和psaux|grepflower查看有没有已经启动后台进程这里示范将原来的服务进程杀死再重启:在~/task_shceduler文件加下启动web服务执行命令nohuppython3service.py1/dev/null2/dev/null&和nohupflowercelery–-broker=’192.168.100.233’1/dev/null2/dev/null&来分别启动web服务和flower提供的任务监控服务通过jobs可以看到后台正在执行这两个程序:52.2.2slave节点的服务启动:首先使用psaux|grepcelery看时候已经存在,有的话可以杀死进程来重启在~/task_shceduler目录下执行命令nohupcelery–Aprojworker1/dev/null2/dev/null&来启动celery准备接受任务同样的可以用jobs来获取刚刚启动的celery程序三.任务的下达方式使用浏览器访问192.168.100.203:8888根据页面提示填写任务的位置并进行任务提交这里以/mnt/task_shceduler_source/160811赵一鸣测试/test测试,提交任务之后,在对应地址的5555端口访问flower服务可以看到任务状态:6等State变为SUCCESS即表示任务结束,但是如果之前传入的参数不对或者因为文件权限等问题导致任务失败的话,有可能State显示success但是得到的结果不正确,即因为权限不够或者路径不存在导致的任务直接结束。四.当前已知的需要改进的问题首先当前每次只能挂载一个硬盘,如果需要挂载过个硬盘的话需要到slave节点上进行而外的挂载操作,正在替代的寻找解决方案Get_images_from_video调用的程序unpack_video的指定特定帧的新功能还没有集成,另外需要修改为先拷贝到本地再执行。