我正在通过hadoop权威指南,它清楚地解释了输入分裂.它就像
输入拆分不包含实际数据,而是具有HDFS数据的存储位置
和
通常,输入分割的大小与块大小相同
1)假设一个64MB的块在节点A上并在其他2个节点(B,C)之间复制,map-reduce程序的输入分割大小是64MB,这个分割只有节点A的位置吗?或者它是否具有所有三个节点A,b,C的位置?
2)由于数据是所有三个节点的本地数据,框架如何决定(选择)在特定节点上运行的maptask?
3)如果输入分割大小大于或小于块大小,如何处理?
tha*_*_DG 26
@ user1668782的答案是对这个问题的一个很好的解释,我将尝试给出一个图形描述.
假设我们有一个400MB的文件,包含4个记录(例如:400MB的csv文件,它有4行,每行100MB)
这是输入拆分解决的确切问题.输入拆分遵循逻辑记录边界.
让我们假设输入分割大小为200MB
因此,输入分割1应该同时具有记录1和记录2.并且输入分割2不会以记录2开始,因为记录2已被分配给输入分割1.输入分割2将以记录3开始.
这就是输入拆分仅是逻辑数据块的原因.它指向以块为单位的起始位置和结束位置.
希望这可以帮助.
小智 20
块是数据的物理表示.Split是Block中数据的逻辑表示.
可以在属性中更改块和拆分大小.
Map通过拆分从Block读取数据,即split作为Block和Mapper之间的代理.
考虑两个块:
第1座
aa bb cc dd ee ff gg hh ii jj
第2块
ww ee yy uu oo ii oo pp kk ll nn
现在map将块1读取到aa到JJ,并且不知道如何读取块2,即块不知道如何处理不同的信息块.这里有一个Split它将形成一个Block 1和Block 2的Logical分组作为单个Block,然后它使用inputformat和record reader形成offset(key)和line(value)并发送map来处理进一步的处理.
如果您的资源有限并且您想限制地图数量,则可以增加分割大小.例如:如果我们有640 MB的10个块,即每个64 MB的块和资源有限,那么你可以提到拆分大小为128 MB,然后形成128 MB的逻辑分组,只有5个地图将被执行,大小为128 MB.
如果我们指定分割大小为false,则整个文件将形成一个输入分割并由一个映射处理,当文件很大时需要更多时间来处理.
| 归档时间: |
|
| 查看次数: |
31399 次 |
| 最近记录: |