传统的Hadoop架构是建立在相信通过大规模分布式数据处理获得良好性能的***途径是将计算带入数据。在本世纪初,这确实是事实。当时,典型的企业数据中心的网络基础架构不能完成在服务器之间移动大量数据的任务,数据必须与计算机共存。
现在,企业数据中心的网络基础设施以及公有云提供商的网络基础设施不再是大数据计算的瓶颈,是时候将Hadoop的计算与存储解耦。不少行业分析师也认识到了这一点,正如最近IDC关于分离大数据部署计算和存储的报告中指出:
“解耦计算和存储在大数据部署中被证明是有用的,它提供了更高的资源利用率,更高的灵活性和更低的成本。” - Ritu Jyoti,IDC
2018年,关于大数据基础设施的讨论不再围绕使用高质量的数据布局算法减少网络流量的方法展开。相反,现在有更多关于如何可靠地降低分布式存储成本的讨论。
Hadoop开源社区最近引入了Apache Hadoop版本3.0,即便被Gartner连续唱衰,但Hadoop发布的3.0版本还是有不少值得注意的改进。这一版本的发布也将计算和存储解耦的讨论推向舆论高峰。Hadoop 3.0的一个关键特性是Hadoop分布式文件系统(HDFS)的Erasure Coding (擦除编码)。作为历史悠久的HDFS 3x数据复制的替代方案,在配置相同的情况下,Erasure Coding与传统3x数据复制相比,可以将HDFS存储成本降低约50%。
在过去几年,Hadoop社区已经讨论了Erasure Coding将为HDFS带来的潜在存储成本的降低。鉴于过去十年在硬件和网络方面的进步,许多人质疑3x数据复制是否有存在的意义。现在,HDFS Erasure Coding已经从根本改变了Hadoop的存储经济性——Hadoop社区也最终承认这一事实:数据不必与计算位于同一位置。
为了了解这个结果有多么戏剧性,我们可以比较一下2010年雅虎发布的关于Hadoop扩展的性能数据,并将其与HDFS和Erasure Coding进行比较。
如下的幻灯片上呈现的是DFSIO基准测试,读取吞吐量为66 MB / s,写入吞吐量为40 MB / s。Sort基准测试的性能数据是基于非常仔细的调优之后获得的。曾经,在HDFS中使用3x复制被认为是数据保护和性能提高的强大工具。
在如下的幻灯片上,同样基于DFSIO基准,具有3x复制的HDFS读取吞吐量为1,262MB / s,而对于使用Erasure Coding(6+3 Striping)的HDFS,读取吞吐量为2,321MB / s。这是30个同步映射器,并没有提到仔细的应用程序调优!HDFS使用的3x复制现在被视为实现(有限)数据可靠性的陈旧、昂贵和不必要的开销。
带有Erasure Coding(EC)的HDFS利用网络为每个文件读写。这也在间接承认网络不是性能的瓶颈。事实上,HDFS EC的主要性能影响是由于其CPU周期消耗而非网络延迟。 总的来说,这表明存储成本显著降低(在这种情况下,可降低6美元/ TB),而不会牺牲性能。
即便接连被不看好,但Hadoop依旧是大数据领域坚实的底层基础。随着新版本被正式推入生产环境,Hadoop生态也开始逐渐壮大,取其精华,去其糟粕,Hadoop生态一直在努力改善表现不佳的组件,并不断根据新的业务需求进行扩展,Hadoop生态或许并不是老了,而是成熟了。