图中c)的架构是在a的基础上的一种改进,Spark使用的是这个架构。HBase的compaction操作可以简化成join和sort这样两个RDD变换。

  Figure 17展示了local compaction的原理,原来的网络I/O的一半转化成了本地磁盘读I/O,而且可以利用读cache加速。我们都知道在数据密集型计算系统中网络交换机的I/O瓶颈非常大,例如MapReduce Job中Data Shuffle操作是耗时的操作,需要强大的网络I/O带宽。加州大学圣迭戈分校(UCSD)和微软亚洲研究院(MSRA)都曾经设计专门的数据中心网络拓扑来优化网络I/O负载,相关研究成果在计算机网络会议SIGCOMM上发表了多篇论文,但是由于其对网络路由器的改动伤筋动骨,后都没有成功推广开来。

  Figure 19展示了combined logging的原理。现在HBase的多个RS会向同一个DataNode发送写log请求,而目前DataNode端会把来自这三个RS的log分别写到不同的文件/块中,会导致该DataNode磁盘seek操作较多(不再是磁盘顺序I/O,而是随机I/O)。Combined logging是把来自不同RS的log写到同一个文件中,这样把DataNode的随机I/O转化成了顺序I/O。