Hadoop 是什么?用普通服务器集群处理海量数据的开源框架
Hadoop 是一个用于在普通硬件集群上存储和处理海量数据的开源框架,由 Apache 软件基金会开发和维护。它基于谷歌在 2003 年和 2004 年发表的两篇论文的思想:谷歌文件系统(GFS)和 MapReduce。Doug Cutting 和 Mike Cafarella 最初在开发开源搜索引擎 Nutch 时实现了这些思想,2006 年独立成为 Hadoop 项目,雅虎在早期投入了大量资源推动它的发展。这个名字来自 Doug Cutting 儿子的一个黄色玩具大象,大象也因此成了 Hadoop 的标志。
它解决什么问题
互联网时代产生了前所未有的海量数据:网页、日志、交易记录、用户行为,规模动辄几百 TB 甚至 PB。单台计算机既存不下、也算不完这么多数据,而购买昂贵的大型专用服务器成本又太高。Hadoop 的思路是:用大量廉价的普通服务器组成集群,把数据和计算分散到成百上千台机器上并行处理。普通服务器难免会出故障,Hadoop 在设计上就假定硬件故障是常态,通过软件来保证可靠性。
核心组件
HDFS(Hadoop 分布式文件系统):负责存储。它把大文件切成很多块,分散存储在集群的不同机器上,并且每一块默认保存三份副本,放在不同的机器甚至不同的机架上。即使某台机器坏了,数据也不会丢失,系统会自动从其他副本恢复。
MapReduce:负责计算。它把大规模的数据处理任务分成两个阶段:Map 阶段,把任务拆成很多小块,分配给各台机器并行处理;Reduce 阶段,把各台机器的处理结果汇总起来。一个关键的设计是“把计算移到数据所在的地方”:尽量让每台机器处理自己本地存储的数据,而不是在网络上传输大量数据,大大提高了效率。
YARN:负责资源管理和任务调度,决定集群中的计算资源如何分配给不同的任务,让多种计算框架可以共享同一个集群。
发展和现状
Hadoop 在 2010 年前后成为大数据的代名词,围绕它形成了庞大的生态系统,包括数据仓库工具 Hive、数据库 HBase 等,被互联网、金融、电信等行业广泛使用。后来,基于内存计算的 Spark 因为速度快得多,逐渐取代了 MapReduce 成为主流的计算引擎;云计算的普及也让很多企业转向了云上的对象存储和托管的数据服务。但 Hadoop 开创的分布式存储和计算思想,深刻影响了此后的大数据技术,HDFS 等组件至今仍在很多地方使用。在 AI 时代,处理和准备大模型训练所需的海量数据,同样依赖这类分布式数据处理技术。