我只是Hadoop框架的初学者。我想了解一些概念,我浏览了许多链接,但我想获得明确的答案1)为什么Map reduce只适用于键值对。我还读到我可以创建Mapreduce作业,而无需实际使用reduce 2)用于输入映射阶段的键是fileoffset键。我可以使用显式键值吗?还是自定义输入?
好,您正在挖掘Hadoop概念。
1)我可以使用显式键值吗?还是自定义输入?:是的,编写您自己的(覆盖)代码RecordReader
。
2)为什么Map reduce只对键值对起作用?:顾名思义,MapReduce只是将需要的数据从提供给程序的数据集中映射(过滤)所需的数据到Reduce(基于唯一键组合)。现在,为什么选择键值对?:由于您正在处理非结构化数据,因此也不想获得与输出相同的数据。我们将需要对数据进行一些操作。考虑在Java中使用Map,它有助于唯一地标识该对,而在hadoop中,借助Sort&Shuffle也是如此。
创建Map减少作业,而实际上不使用reduce ?:当然,这完全取决于但建议仅用于小规模操作,并且在不需要将映射器输出合并为预期输出的情况下,建议使用此方法。
原因:这是分布式概念,商品硬件优先考虑的地方。例如:我有一个大数据集要处理。在使用Java程序(仅Java,不是hadoop)处理数据集时,我们将所需的数据存储在Collection
对象中(就像使用RAM空间一样简单)。引入Hadoop是为了以不同的方式完成相同的工作:将所需的数据存储在中context
。映射器中的上下文是指中间数据(本地FS),精简器中的上下文是指输出(HDFS)。当然,两种情况下的上下文都存储在HardDisk中。
Hadoop帮助您在HardDisk(而不是RAM)中进行所有计算。
我建议阅读Hadoop Defenitive Guide,Data Algorithms一书,以更好地理解。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句