提问者:小点点

Map Reduce中的键值


我只是Hadoop框架的初学者。我想在这里理解一些概念,我浏览了这么多链接,但我想得到明确的答案1)为什么Map duce只适用于键值对。我还读到我可以创建一个Map duce作业,而不需要实际使用减少2)映射阶段输入的键是fileoffset键。我可以使用显式键值吗?或自定义输入?


共1个答案

匿名用户

很好,你正在挖掘hadoop概念。

1)我可以使用显式键值吗?或自定义输入?:是的,编写您自己的(覆盖)RecordReader来执行此操作。

2)为什么Map duce只适用于键值对?:MapReduce,顾名思义,程序只是将所需的数据映射(过滤器)到Reduce(基于唯一键组合)从馈送到程序的数据集中。现在,为什么是键值对?:由于您正在处理非结构化数据,因此不希望获得与输出相同的结果。我们需要对数据进行一些操作。考虑在java中使用Map,它有助于唯一标识该对,在hadoop中借助Sort也是如此

创建一个地图减少作业,而不实际使用减少?:当然,完全依赖,但建议仅用于小型操作,并且在不需要将映射器输出组合为预期输出的场景中。

原因:这里是分布式概念,商品硬件优先考虑的地方。例如:我有一个大的数据集要处理。当使用java程序(只是java,不是hadoop)处理数据集时,我们将所需的存储在Collection对象中(就像使用RAM空间一样简单)。引入Hadoop以不同的方式完成相同的工作:将所需的数据存储在context中。映射器中的上下文是指中间数据(本地FS),减速器中的上下文是指输出(HDFS)。当然,这两种情况下的上下文都存储在HardDisk中。

Hadoop有助于在HardDisk中进行所有计算,而不是RAM。

我建议阅读Hadoop防御指南,数据算法书籍以更好地理解。