论文部分内容阅读
随着大数据时代的来临,信息爆炸式增长。在这个信息过载的互联网环境下,用户获取感兴趣信息的难度逐渐增大,如何让用户在海量数据信息中高效地获取自己感兴趣的信息成为了当前大数据行业的研究热点。推荐系统为这个问题提供了解决方案,它是一种主动式消息推送系统,消息生产者通过在海量信息基础上预测用户的偏好,将消息主动推送给可能对信息感兴趣的用户。由于需要海量信息来为用户做兴趣预测,推荐系统要处理的数据量是巨大的。为了快速满足用户对消息的需求,推荐系统必须有大数据处理能力。第一代大数据处理框架Hadoop在过去几年一直被国内外推荐系统作为解决方案,但是随着推荐算法的进步,Hadoop的Map Reduce计算模型已经难以满足性能要求。Spark是最近几年流行的新一代大数据处理框架,非常适合推荐算法,用Spark实现推荐系统的离线推荐与实时推荐将大大提高推荐系统性能。本文以大数据推荐提供解决方案为目的,从推荐系统需要的计算服务和存储服务这两个层次进行了研究。计算层次上,使用Spark设计实现离线推荐算法与实时推荐算法,且进行针对计算效率的优化;存储层次上在大数据存储系统HDFS上集成纠删码,并提供Mongo DB数据存储等。具体的研究内容包括:(1)基于Spark编程模型,实现了基于ALS的离线推荐算法,并对Spark调度策略进行了优化。在执行离线计算任务中,发现在集群异构情况下Spark调度策略不合理的问题,并提出了优化的Spark调度策略:基于节点资源优先级的调度策略。实验结果表明,基于节点资源优先级的调度策略在离线计算情况下具有更优的运行效率。(2)提出一种快速的实时推荐算法,并基于Spark Streaming编程模型实现,而且进行了基于Spark Streaming的优化。实时推荐算法的设计基于“用户偏好随时间不断变化”的理论,每次执行实时推荐时仅对用户近期评分进行建模预测,极大地减少了计算数据量。在Spark Streaming实现算法时,通过设置多数据源获取、数据重分片提高实时推荐的并行粒度,并利用Spark broadcast变量机制节省算法执行时间。实验结果表明,本文实现的实时推荐系统拥有很好的数据实时处理能力。(3)提出一种HDFS结合纠删码的存储策略“先冗余、后编码”,并设计了支持此存储策略的HDFS with Erasure Code架构。冗余备份存储策略本身对磁盘空间消耗大但数据恢复简单,而纠删码存储策略虽然空间消耗小但是数据恢复困难,会影响大数据计算效率,所以对较长一段时间没有处理的数据使用纠删码存储,而对其他数据使用冗余备份,进而在磁盘空间消耗与数据恢复效率上达到平衡,以便更好地为大数据推荐系统提供存储服务。