01-Hadoop 核心三剑客通俗指南:从"单机搬砖"到"包工队"
在普通电脑上,我们处理数据就像是一个人在单干。比如你要统计一本 1000 页书里有多少个"爱"字,你可以自己一页页翻。
但如果是 100 亿页 的书呢?一个人干到死也干不完。这时不仅需要把书撕开存放在不同的房间里,还需要雇很多人同时去数。
Hadoop 就是这套分布式 存储和计算系统的"包工头"。它主要由三个核心组件组成,我们可以把它们看作一个超大型的数据处理工厂。
1. HDFS (分布式文件系统) - "巨大的物流仓库"
- 痛点:硬盘再大也有上限,而且硬盘坏了数据就丢了。
- HDFS 方案 :
- 切块 (Block):把那个 100T 的大文件,切成无数个 128MB 的小块。
- 分散存储 :把这些小块随机扔到成千上万台普通的服务器(DataNode)里。
- 冗余备份 (Replication) :为了防丢,默认每个小块存 3 份。坏了一台机器?没事,其他机器上还有备份。
- NameNode (仓库管理员):有一台特殊的机器负责记账:"文件 A 的第 1 块在机器 X 上,第 2 块在机器 Y 上"。你找数据得先问它。
一句话总结 :HDFS 让一堆廉价的普通硬盘组合成了一个超级巨大、永不丢失的硬盘。
2. MapReduce (分布式计算模型) - "流水线工人"
- 痛点:数据分散在 1000 台机器上,怎么统计总共有多少个"爱"字?把数据全拉到一台超级电脑上算?网线会爆的。
- MapReduce 方案 :移动计算,而不是移动数据 。
- Map (分发任务) :把"数数"的程序发给那 1000 台机器。每台机器只数自己硬盘里那部分数据。
- 机器 A:我这块有 5 个。
- 机器 B:我这块有 3 个。
- Reduce (汇总结果) :把所有机器数出来的结果汇总起来。
- 总和 = 5 + 3 + ... = 100 亿。
- Map (分发任务) :把"数数"的程序发给那 1000 台机器。每台机器只数自己硬盘里那部分数据。
一句话总结 :既然数据搬不动,就把计算程序派过去算好再回来。
3. YARN (资源调度器) - "工厂 HR / 调度中心"
- 痛点:这个工厂里既有 MapReduce 在干活,后来又来了 Spark、Flink 等其他工种。大家都抢 CPU 和内存,乱套了。
- YARN 方案 :它不管具体怎么算,只管分资源 。
- MapReduce 任务来了,找 YARN 申请:"我要 100 个 CPU 核,500G 内存"。
- YARN 看了看工厂现状:"行,批准,你去 1-10 号机器上跑吧"。
- Spark 任务来了,YARN 说:"现在没空位了,你排队"。
一句话总结 :YARN 是大管家,统一分配每台机器的算力资源,防止工种打架。
总结
Hadoop 的核心思想就是:分而治之。
- HDFS 解决了存不下、容易丢的问题。
- MapReduce 解决了算不完、网络堵的问题。
- YARN 解决了抢资源、不好管的问题。