【发布时间】:2016-10-08 13:52:17
【问题描述】:
我刚刚开始学习 Hadoop 和 map-reduce 概念,并且在继续之前我想解决以下几个问题:
据我了解:
Hadoop 专门用于涉及大量数据的情况。当我们将文件存储在 HDFS 中时,会发生这种情况,文件被分割成不同的块(块大小通常为 64MB 或 128MB ......或为当前系统配置的任何内容)。现在,一旦大文件被拆分成不同的块,这些块就会存储在集群上。这是由 hadoop 环境在内部处理的。
问题的背景是:
假设系统中存储了多个如此巨大的文件。现在,这些不同文件的块可以存储在数据节点 A(有 3 个数据节点,A、B 和 C)。而且,同一个文件的多个块也可以存储在同一个数据节点A上。
场景1:
如果客户端请求访问同一数据节点上的同一个文件的多个块,那会发生什么?是否会有多个映射器分配给这些不同的块,或者同一个映射器将处理多个块?
同一问题的另一部分是,客户端如何知道哪些块或让我们说处理需要文件的哪个部分? 由于客户端不知道文件是如何存储的,它如何向 NameNode 询问块位置等? 或者对于每个这样的处理,相应文件的所有块都被处理?我的意思是问,NameNode上存储了哪些元数据?
场景2
如果有两个不同的请求访问同一个数据节点上不同文件的块,那会发生什么?这种情况下,会有其他数据节点无事可做,单个数据节点会不会出现瓶颈?
【问题讨论】:
标签: mapreduce hadoop2 hadoop-partitioning