Hadoop++是对Hadoop Map Reduce的非入侵式优化,通过自定义Hadoop框架中的split等函数来提升,提升查询和联接性能。 项目由德国Saarland大学Jens Dittrich教授主持。项目主页是 http://infosys.uni-saarland.de/hadoop++.php。
Hadoop++对Hadoop的优化主要是Trojan Index、Trojan Join和Trojan Layout三方面。
1、Trojan Index
Trojan index的核心是将数据组织成依次由数据、索引、Header和Footer这四部分构成的split,其中Footer是split的分界符,最后一 个Footer一定位于文件末尾。索引构建时由MapReduce完成排序。查询时split函数从文件末尾开始根据Footer信息解析出各个 split,itemize函数根据搜索范围条件快速定位满足条件的内容。
以数据库技术类比,Trojan Index类似于索引组织表。
2、Trojan Join
Trojan Join根据联接属性将来自多表的相关记录分到一个split,组织成类似于Trojan Index的结构,itemize出来的记录同时包含了参与联接的双方的属性,这样不再需要在查询时再根据联接属性用map/shuffle /reduce来计算联接。
以数据库技术类比,Trojan Join类似于多表聚簇。
3、Trojan Layout
类似于PAX,为block内部的数据组织方法,将查询中经常一起访问的属性组合在一起。不同复本用不同的Layout。根据负载计算最优的Layout,类似于背包算法。
以数据库技术类似,Trojan Layout类似于垂直分区,亮点是不同复本用不同的垂直分区。