在解决大规模计算问题时,不能单纯依赖于制造越来越大型的服务器(即纵向扩展)。横向扩展显示出了强大的灵活性,并已经获得广泛应用,即把许多低端的机器组织在一起,形成一个功能专一的分布式系统。
横向扩展的分布式系统与纵向扩展大型单机服务器之间的比较,需要考虑现有I/O技术的性价比。对于一个有4个I/O通道的高端机,即使每个通道的吞吐量各为100MB/s,读取4TB的数据集也需要大约3个小时。而利用Hadoop,同样的数据集会被划分为较小的块(通常为64MB),通过Hadoop分布式文件系统(HDFS)分布在集群内多台机器上。使用适度的复制,集群可以并行读取数据,进而提供很高的吞吐量。而这样一组通用机器比一台高端服务器更加便宜。
前面的解释充分展示了Hadoop相对于单机系统的高效率。现在将Hadoop与其他分布式系统架构进行比较。一个众所周知的例子是利用普适计算来协助寻找外星生命。利用一台中央服务器存储来自太空的无线电信号,并在网上发布给世界各地的客户端台式机去寻找异常的迹象。这种方法是以计算为中心的方法,将数据移动到计算即将发生的地方,经过计算后,再将返回的数据结果存储起来。(www.daowen.com)
Hadoop与普适计算不同。普适计算需要客户端和服务器之间重复地传输数据。这虽然能够很好地适应数据密集型的计算工作,但由于数据规模太大,数据移动变得十分困难。Hadoop强调将代码向数据迁移,而不是相反。从图2-4中可以看出,Hadoop的集群内部既包含数据又包含计算环境。客户端仅需发送待执行的Map Reduce程序,而这些程序代码一般都很小(通常为几千字节)。更重要的是,处理程序向数据迁移的理念被应用在Hadoop集群自身。数据被拆分后分布于集群中,并且尽可能使对一段数据的计算发生在同一台机器上,即这段数据驻留的地方。
程序代码向数据迁移的理念符合Hadoop面向数据密集型处理的设计目标。要运行的程序规模比数据小几个数量级,更容易移动。此外,在网络上移动数据要比在其上加载代码花费更多时间。因此,数据不移动,而将可执行代码移动到数据所在的机器上去,这就是常说的以数据为中心的理念。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。