分布式计算框架(一)介绍

10 篇文章 0 订阅
5 篇文章 3 订阅

    大学时光飞逝,转眼就到大四。毕业设计作为在大学编写的最后一个程序必须精益求精。在刚开始选题时,我并没有想写分布式计算框架,只是想试试N皇后算法如何分布式计算,结果随着版本的迭代变成了分布式计算框架。

一、综述

    随着大数据时代的来临,现有计算方式已不能满足工作需求,并且CPU近几年往多核方面发展,单台电脑性能有限不足以完成复杂计算任务。分布式计算框架能很好的解决此类需要巨大计算量问题,分布式计算框架允许使用商用服务器组成一个计算集群并提供一个并行计算软件框架,服务器之间的通信、负载均衡、任务计算与处理、任务储存等复杂的操作都交由系统自动处理,减少了软件开发人员的负担。

    本系统是一个基本C++平台的分布式计算框架,使用了Digia公司开发工具QT5.10;任务储存使用了开源数据库MYSQL。该分布式框架实现了动态链接库的上传、任务文件上传、任务文件解析、计算任务的分发、计算任务的计算、计算结果的储存、计算结果的汇总等功能。在分配任务过程中,本框架优先分配给最先执行完任务的计算节点,高效利用计算资源。当计算节点断开连接时,本框架会自动将其任务重置,并分发给其他计算节点。使用了任务队列与任务报错等容错手段保证了分布式计算框架的稳定运行。

    用户编写模板对应函数Read、Handle、Sum,生成动态链接库后上传至服务器中,随后将任务文件上传即可完成整个分布式计算过程。服务器调用Read函数对任务文件进行任务读取与分解,随后将分解任务分配至空闲计算节点,计算节点调用Handle函数进行任务计算,计算完毕后回传任务结果至服务器,当整个计算任务完成时服务器调用Sum函数进行任务的汇总,最后完成分布式任务的计算。

(一)、系统结构

    系统结构大致如下

                          

1、服务器模块

     服务器模块负责接收转发来自客户端、计算模块、计算节点发送的数据并调用相关函数进行处理。当服务器接收动态链接库时会保存并转发给所有计算节点。接收计算任务时则调用计算模块中的Read函数,获取分解任务后开始分发至计算节点开始计算。当所有计算任务完成时,服务器调用计算模块中的Sum函数,获取汇总结果后保存至数据库。

2、计算节点模块

     计算节点负责监控其机器实时状态,并作为守护程序监控计算模块程序实时状态,在其崩溃时做出相应响应,并且负责传递计算任务给计算模块。

3、客户端模块

    客户端模块是一个与系统交互的模块,当用户查询相关数据时,客户端将请求数据发送给服务器,服务器处理任务将数据发送给客户端,客户端接收并显示数据。用户编写好动态链接文件与任务文件,客户端将其传输至服务器即可开始分布式计算。

4、计算模块

    计算模块负责处理计算任务,调用相应动态链接库的相应函数进行任务的计算,计算完毕后传输数据给计算节点。为了防止因动态链接库原因导致所有程序崩溃,本系统将计算模块划分出一个单独的程序。即使因动态链接库原因使计算模块崩溃,系统也可重新启动计算模块并上报至服务器,提高了系统的稳定性。

(二)、设计性能   

    性能测试有误差,仅供参考(云服务器太贵测试不起)

     (一)压力测试

    在配置为2核(intel E5  2.29GHZ) 、内存2G、网络带宽1M、系统Windows Server2012的云服务器上进行性能测试中,程序平均每秒分发处理600个任务,CPU平均利用率50%,内存占用随着任务数的减小而下降,IO读写频繁。(带宽为瓶颈)

      (二)Hadoop性能对比测试

    本次性能测试算法采用N皇后算法,在四台虚拟机中进行性能测试。单个虚拟机配置为单核 内存768M 网络带宽100M 。Hadoop测试采用CetOS7.3系统,本程序采用Win7。测试算法内容为18阶皇后,在不进行分布式算法处理计算耗时为986秒。为了形成对比,将18阶皇后分解任务数分为:321700、36264、3420、272。测试结果如下(这个结果我测了几次每次都不一样,太费时间就这样吧)


     (三)效率测试

    采用19阶皇后算法进行测试,将相同计算量的任务分配给不同数量的计算节点,通过计算时间分析整个分布式计算框架的计算效率。

为了更好做出对比,以节点个数为1的计算时间为基准计算时间,那么理想计算消耗时间为:

                    

计算效率为:

             

以下是计算效率折线图(看看就行)

(三)、主要界面




源码地址:点击打开链接

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值