Hadoop的核心基础主要源于Google的三大关键论文,其中最为著名的是关于BigTable的设计理念和实现。BigTable是Google在2004年初开发的一种专为处理大规模、半结构化数据而设计的分布式系统,其初衷是为了应对RSS数据源等海量数据的存储和查询需求。该系统的设计背后,离不开软件架构大师Jeff Dean的创新思维。
BigTable的核心概念包括以下几个方面:
1. **设计背景与目的**:Google Reader博客中提及,BigTable是为了解决内部服务的大数据处理问题,旨在降低新服务上线的运行成本,并充分利用廉价PC机的计算能力。它在GFS(Google File System)、Scheduler、LockService和MapReduce等Google自家技术的基础上构建。
2. **数据模型**:BigTable是一个多维度的稀疏图(sparse map),由行和列构成,每个存储单元(cell)都有时间戳,支持数据版本控制。例如,行可以代表URLs,列则可以表示如"contents"或"language"等属性,用于存储相应信息。
3. **分布式架构**:为了管理庞大的数据,BigTable将数据划分为较小的单元——Tablets,每个大小约为100-200MB。通过分布式的GFS文件系统,Tablets实现了负载均衡,当机器空闲时,系统会动态地调整Tablets的存储位置,确保高效响应。
4. **存储策略**:Tablets在系统中的存储是不可变的(immutable),以SSTables(Sorted String Tables)的形式存在,每台机器负责一个日志文件。当系统内存达到上限时,会进行数据压缩以优化存储空间。
5. **Jeff Dean的贡献**:Jeff Dean在华盛顿大学的演讲中强调了BigTable的设计原则和如何通过这种架构提高系统的灵活性和性能。他的工作体现了Google在软件架构设计方面的创新和追求效率的理念。
BigTable作为Hadoop的基础之一,不仅推动了大数据处理技术的发展,而且其设计理念和技术细节对于理解分布式计算、数据存储和处理有着重要意义。后续的Hadoop项目就是在BigTable的成功基础上进一步发展起来,扩展了其在云计算和大数据领域的应用。