为非本地映射程序执行hadoop缓存hdfs块



假设我有在DN1上运行的映射器任务。我感兴趣的hdfs块在DN2上。据我所知,hadoop不会缓存DN1上的块。这意味着,如果我正在读取1MB的记录,而块是512MB,那么我将通过网络512次。这是正确的吗?


也许我的问题措辞不正确。我知道数据本地化,我的问题是关于数据本地化不可能的时候。如果DN2上的一个块中有512 MB的数据,但映射器在DN1上运行,并且记录读取器提供的每个记录都是1MB,这是否意味着我们要通过网络512次?或者hadoop缓存该块——这意味着它将512MB的块从DN2复制到DN1,然后开始为记录读取器提供服务。我认为它不会缓存。。。我认为它通过网络512次,并逐个记录地获取信息。

Hadoop的基石之一是"数据位置"。第一个数据处理(映射器)将在数据物理存在的节点上运行。例外情况是,当映射程序处理块的最后一行时,该行可以在其他节点中拆分为一个块,在这种情况下,数据将被复制到开始处理的映射程序。

最新更新