论文部分内容阅读
随着数据规模在互联网、生物、天文学等领域的爆炸性增长,如何有效地从这些大规模的数据集中获取有价值信息的能力变得越发重要。R语言作为流行度最高的统计分析语言,它提供了丰富的数据统计功能,但却无法有效的处理海量数据。针对这一问题,设计并实现基于JVM的R语言海量数据统计分析集成框架JRBridge,并以Hadoop为例在该框架上实现R语言与Hadoop的结合,从而一定程度上实现了R语言对海量数据的分布式并行统计能力。为了利用已有海量数据计算框架和编程模型的研究成果,以R语言和海量数据计算框架的集成作为研究思路,分析了各计算框架与R语言进行集成的模型,总结并提出了基于SFAPI和UDFAPI的集成模型。在此模型的理论基础上,针对模型实现中必须满足的系统要求和公共组件,以及当前流行的开源海量数据计算框架大多基于Java虚拟机实现的特征,为了减小R语言与各框架之间的语言鸿沟,设计并实现了基于JRBridge集成框架的R语言海量数据统计分析系统。其中基于JVM的R语言解释执行机制解决了Java环境下执行嵌入式R语言代码的问题;R语言环境下Java类加载机制通过jload、import、$运算符实现了在R环境下对Java API类库调用并执行;R2J和J2R类型转换机制则为存在R与Java环境切换的方法调用提供参数与返回值的类型转换支持。上述机制的相互协作,配合R语言和Hadoop集成插件的实现,最终使得R语言具有了对海量数据统计分析的能力。从功能测试结果看出,通过HDFSAPI插件,它提供了一种使用R语言访问HDFS中海量数据集的方法;通过MapReduce API插件,它提供了一种使用R语言编写MapReduce统计分析代码的方法。性能测试中,在有5个工作节点并行统计的Hadoop集群环境下,词频统计程序在JRBridge集成框架下的执行时间可以达到原始R语言分析时间的1/7,并且随着测试数据集规模的不断提高,JRBridge集成框架呈现出线性可扩展的性能。