2016-03-02 65 views
0

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

+0

1)您需要理解shuffle和sort阶段的概念,以了解为什么键值有意义。 2)你可以使用任何你想要的密钥。为了读取几乎任何可触发的文件,该偏移量是完美的,因为它允许在整个 –

+0

之间映射可均匀分割的块。请阅读http://stackoverflow.com/questions/10630447/hadoop-difference-between-0-reducer-and-identity-reducer –

回答

1

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

1)我可以使用显式键值吗?或自定义输入?:是的,编写自己的(覆盖)RecordReader这样做。

2)为什么Map仅使用Key Value对减少作品?: MapReduce,顾名思义,程序只是将所需数据映射(过滤)到从程序提供的数据集中Reduce(基于唯一键的Combination)。 现在,为什么键值对?:因为你正在处理非结构化数据,所以不希望得到与输出一样的结果。我们将需要对数据进行一些操作。想一想在java中使用Map,它有助于唯一标识这对,在hadoop中也是如此,在Sort的帮助下也是如此。

创建一个Map reduce作业,但实际上并没有使用reduce?: Ofcourse完全依赖但建议仅用于小型操作,并且不需要将您的mapper输出组合为预期输出。

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

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

我建议阅读Hadoop Defenitive Guide,数据算法书为更好的理解。