论文部分内容阅读
天文望远镜技术的发展实现了天体观测数据的全波段覆盖。交叉证认用来确立不同波段数据间天体的对应关系,是多波段数据融合的关键技术。随着天文数据采集量越来越大,交叉证认这种计算密集型操作的复杂性与难度不断增加,传统的依靠单节点进行证认计算的方式变得十分低效。
基于MapReduce的分布式计算环境可以利用多个节点的计算资源并行处理数据,迎合了大数据间交叉证认的计算需求。设计高效的MapReduce程序实现大数据间交叉证认是本文研究的主要内容。
但是分布式计算环境会带来单机环境不具备的新问题,比如分布式算法的选择、不同计算节点间的负载均衡、数据在网络中传输造成的IO影响等。本文综合多方面因素提出一种简单高效的交叉证认处理方案,并基于Hadoop进行相关实现,主要工作如下:
(1)设计了一种紧凑且易处理的二进制数据存储格式。该格式对数据记录各个属性占用的物理空间进行了详细的定义,属性值可通过随机访问二进制数据得出,解析方便高效。此外,在我们的实验中,二进制数据比使用字符数据节省了22%的物理空间,从本质上降低了分布式计算环境中数据IO造成的影响;
(2)提供了一种高效的证认数据分割方法。该方法将参与证认的两份数据分别物理划分为多个数据块,同一数据的不同数据块保存不同天球区域的数据,把两份大数据间的证认转换为两份大数据所有对应数据块间的证认,不同对应数据块间的计算完全独立,为证认过程的并行处理带来了便利;
(3)给出了一种Map-Only的交叉证认过程,并用真实数据USNOA和2MASS进行了测试。在Map阶段完成证认计算工作并写回证认结果,省去了Reduce阶段需要的shuffle和排序过程,在我们的实验中,Map-Only方式比Map-Reduce方式有83%的性能提升,比分布式数据仓库Hive中Common Join性能提高了86%。