论文部分内容阅读
交叉证认是天文学领域中实现多波段数据融合的一项关键技术,它根据不同星表中天体分布位置上的相关性,来进行星表间的关联融合工作。交叉证认的主要意义在于,通过将不同波段电磁波对宇宙的探测数据相互融合,形成全波段数据,从而得到各种天体更加全面的观测信息。交叉证认是许多复杂天文应用的基础。
参与交叉证认的星表常是海量数据集,因此交叉证认是一种数据密集、计算密集的操作。天文数据的海量性使得传统的单点处理方式已不能满足需求,因此其必然要通过并行计算和分布式计算来处理,而擅长于海量数据处理的MapReduce模型很好地符合了这一需求。经过实际测试,交叉证认中最耗时的部分在于星表之间的连接操作,而现有的各种基于MapReduce模型的平台中,对大数据集间的连接操作尚缺乏很完善的支持,因此,本文在现有Map端连接算法的基础上,针对大数据集的特点提出了一种X-Match Join高效连接算法,并在Hive平台上对其进行了实现。本文的主要贡献如下:
1)提出并实现了基于分块策略的X-Match Join连接算法,提高了大表之间的连接效率,解决了交叉证认中连接耗时较多的问题。
2)在数据存储层面,使用了分块存储的策略。X-Match Join算法采用特定的数据划分方法保证了数据在物理和逻辑意义上的均匀分布,为上层连接逻辑的实现提供了底层支持。
3)在数据分发上,抛弃了用Hadoop分布式缓存简单分发数据的做法,采用按需拷贝技术,节点根据底层分块的编号来拷贝对应的远程文件块,数据传输量从单表的N(集群节点数)倍减少到单表的2倍,有效地避免了无用的数据冗余拷贝,节省了大量带宽和硬盘资源。
4)在执行逻辑上,对Hive的编译器和逻辑操作符做了修改,在执行连接操作之前增加了对数据集大小的判断,对大数据集采用多机处理的方式生成辅助文件,有效提高了辅助文件生成效率;在新的连接运算符中使用了缓存数据重用等技术,解决了本地计算过程中哈希表重复加载的问题。另外,系统保留了Hive原始的用户接口,降低了用户的学习成本。
通过实际数据测试,与Hive平台的Reduce端连接算法相比,采用X-Match Join算法进行交叉证认整个过程的平均执行时间减少了16%到20%,整体效率获得了一定程度的提升。与改进前的MapJoin算法相比,连接相关操作在交叉证认中所占用的时间从原来的94%降到了55%。X-Match Join算法通过以上对大数据集连接操作的优化,在Hive平台上为交叉证认应用提供了一套完整高效的解决方案。