论文部分内容阅读
近年来随着网络技术的发展,网络用户数量在日益增长。用户在上网的过程中会产生用户行为数据,这其中包括浏览网页,网络购物,观看视频等一系列的信息。数以亿计的用户产生的数据量无疑是巨大的。存储和维护这些数据给我们带来了挑战,同时这些海量的用户行为数据也给我们带来了新时代的机遇。将海量的用户数据进行数据挖掘,并向用户提供定向推荐、实时推送成为了一种可盈利的商业模式。为了从海量数据中得到精确的用户分类信息,需要对数据进行多次迭代的计算。因此如何实现一个可支持高速迭代计算的分布式引擎是当前的问题之一。本文设计和实现了一个基于内存的轻量级分布式计算引擎,并对整个系统的整体架构和实现细节进行全方面的阐述。系统充分利用分布式计算的特点,将数据散列到不同的机器上,减轻每台机器的负担并且提高计算的速度。为了支持多次迭代的计算,将每次计算的数据保存在内存中而不是在磁盘上,减少了每次迭代磁盘I/O的时间,提高了计算的效率。在整个计算过程开始之前,系统生成本次计算的执行计划图,计划图保存了数据之间的转换关系。当数据由于意外故障丢失,系统可以根据计划图重新恢复丢失的数据。系统同时对用户提供了一套编程接口,数据的分布式和容错恢复对用户是完全透明的。系统同时将一个分布式计算任务的控制节点和计算执行节点都纳入统一的资源管理。系统引入负载均衡,实时监控每个节点的运行情况,根据节点的运行状况,下发计算任务。在实现方面,模块通信选型Epoll驱动满足异步事件到达的处理。在多路网络I/O通信的情况下依然可以高效并发的处理报文。此外引入线程池模型处理文件I/O操作,数据库操作,在进行相对慢速的磁盘操作的同时不降低高速的网络I/O的处理效率。本文最后对系统进行了全方面的测试,结果表明在功能上能够为一些分布式计算算法提供高效的运行支撑和容错处理。在性能上跟传统的分布式计算引擎相比有较大的改善。此外,在同时承载多个业务系统时,和当代主流的基于内存的分布式计算引擎相比有一定性能提升