Hadoop 按用户指定的次数将每个数字加倍

Hadoop 按用户指定的次数将每个数字加倍,hadoop,mapreduce,Hadoop,Mapreduce,我是hadoop新手,我正在通过几个例子学习。我目前正试图传递一个带有随机整数的文件。对于每个数字,我希望它是用户在运行时指定的数字的双基 3536 5806 2545 249 485 5467 1162 8941 962 6457 665 6754 889 5159 3161 5401 704 4897 135 907 8111 1059 4971 5195 3031 630 6265 827 5882 9358 9212

我是hadoop新手,我正在通过几个例子学习。我目前正试图传递一个带有随机整数的文件。对于每个数字,我希望它是用户在运行时指定的数字的双基

3536 5806 2545 249 485 5467 1162 8941 962 6457 665 6754 889 5159 3161 5401 704 4897 135 907 8111 1059 4971 5195 3031 630 6265 827 5882 9358 9212 9540 676 3191 4995 8401 9857 4884 8002 3701 931 875 6427 6945 5483 545 4322 5120 1694 2540 9039 5524 872 840 8730 4756 2855 718 6612 4125

上面是文件示例

例如,当用户在运行时指定

 jar ~/dissertation/workspace/TestHadoop/src/DoubleNum.jar DoubleNum Integer Output 3
例如,第一行的输出将是 3536*8 5806*8 2545*8 249*8 485*8 5467*8 1162*8 8941*8 962*8 6457*8


因为每次迭代的次数都是双倍的,所以3次迭代的次数是2^3。如何使用mapreduce实现这一点?

要将一个作业链接到下一个作业,请查看:

此外,这可能是了解序列文件的好时机,因为它们提供了一种将数据从一个map/reduce作业传递到另一个map/reduce作业的有效方法

对于您的特定问题,这里不需要减缩器,因此只需将减缩器的数量设置为零即可映射。将输出发送到减速机只会产生额外的网络开销。但是,请注意随着时间的推移创建的文件数量,最终NameNode将不会欣赏它。每个映射器将创建一个文件


我知道你想用这个例子来说明更复杂的事情。。。但在这种情况下,您可以使用一种常见的优化技术:如果您发现自己想要将一个仅映射器任务链接到另一个映射/缩减作业,则可以将两个映射器挤压在一起。例如,与其乘以2,然后再乘以2,再乘以2,为什么不在同一个映射器中乘以2,再乘以2和?基本上,如果您的所有操作都独立于一个数字或一行,那么您可以在同一个映射器中对每个记录应用迭代。这将大大减少开销。

要将一个作业链接到下一个作业,请查看:

此外,这可能是了解序列文件的好时机,因为它们提供了一种将数据从一个map/reduce作业传递到另一个map/reduce作业的有效方法

对于您的特定问题,这里不需要减缩器,因此只需将减缩器的数量设置为零即可映射。将输出发送到减速机只会产生额外的网络开销。但是,请注意随着时间的推移创建的文件数量,最终NameNode将不会欣赏它。每个映射器将创建一个文件


我知道你想用这个例子来说明更复杂的事情。。。但在这种情况下,您可以使用一种常见的优化技术:如果您发现自己想要将一个仅映射器任务链接到另一个映射/缩减作业,则可以将两个映射器挤压在一起。例如,与其乘以2,然后再乘以2,再乘以2,为什么不在同一个映射器中乘以2,再乘以2和?基本上,如果您的所有操作都独立于一个数字或一行,那么您可以在同一个映射器中对每个记录应用迭代。这将显著减少开销。

您确定mapreduce适合此任务吗?@Thomas Jungblut我只想在mapreduce上实现它。重点是,我只想看看如何将一个子骨架像地图一样迭代多次。iterMap,4允许它并行运行映射器4次,但第一个映射的输出将作为输入传递给第二个。你确定mapreduce适合此任务吗?@Thomas Jungblut我只想在mapreduce上实现它。重点是,我只想看看如何将一个子骨架像地图一样迭代多次。iterMap,4,它将并行运行映射器4次,但第一个映射的输出将作为输入传递给第二个映射。链接将等待第一个映射运行,然后在前一个映射的输出上运行另一个映射?我真正想做的就是举个例子。使用Mapper类的草图会更容易。基本上我只希望map函数迭代多次。上面的示例只是为了简化解释,但映射中的操作可以是任何操作。链接将等待第一个映射运行,然后在前一个映射的输出上运行另一个映射?我真正想做的就是举个例子。使用Mapper类的草图会更容易。基本上我只希望map函数迭代多次。上面的例子只是为了简化解释,但是地图中的操作可以是任何东西。