知识卡片
MapReduce与HDFS:无共享架构及计算贴近数据原则
内容
HDFS(Hadoop分布式文件系统,Google文件系统GFS的开源实现)走的是无共享路线,而非网络连接存储(NAS)/存储区域网络(SAN)那种依赖专用硬件(如光纤通道)的集中式共享磁盘方案:每台普通机器运行一个守护进程对外暴露本机存储的文件,一个叫NameNode的中央服务器只负责记录”哪个文件块存在哪台机器上”,靠这套机制把上万台普通机器的磁盘拼成一个逻辑上的大文件系统,为容错还要把文件块复制到多台机器(或用纠删码降低存储开销)。MapReduce作业的执行紧扣这个存储布局:调度器会尽量把每个Mapper任务安排在存有对应输入文件副本的机器上运行(只要该机器有空闲的RAM和CPU),这个原则叫”将计算放在数据附近”,好处是省掉通过网络搬运大量输入数据的开销,只需把体积小得多的程序代码(如JAR包)分发到目标机器即可。发散:这个”挪计算不挪数据”的思路是分布式批处理性能优化里反复出现的母题,本质上是承认网络带宽往往比本地磁盘I/O更稀缺。
参考来源
- 位置:《数据密集型应用系统设计》第十章《批处理》"MapReduce和分布式文件系统""MapReduce作业执行"(源文件:_epub-src/ch10_split_001.html)
- 结论依据:原文说明HDFS基于无共享原则、用NameNode跟踪文件块位置,并解释MapReduce调度器把Mapper任务安排在存储对应输入副本的机器上运行以节省网络开销,直接支撑本卡片结论。
- 原始内容:HDFS基于无共享原则……名为NameNode的中央服务器会跟踪哪个文件块存储在哪台机器上……MapReduce调度器试图在其中一台存储输入文件副本的机器上运行每个Mapper……这个原则被称为将计算放在数据附近。