如何使用java在hadoop中跨多个映射器同步全局变量的更改?

如何使用java在hadoop中跨多个映射器同步全局变量的更改?,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,我想记录遇到的元组数,所以我使用了一个全局变量,并在每次运行映射器时递增它。我想知道不同的映射程序如何同步这个全局变量,因为它给出了正确的答案?我还想知道这个例程是否强制映射程序按顺序运行 如果您使用的是hadoop流媒体,您不应该这样做 当为映射器指定可执行文件时,每个映射器任务将在映射器初始化时作为独立进程启动可执行文件。当mapper任务运行时,它将其输入转换为行,并将这些行提供给进程的stdin。同时,映射器从进程的stdout收集面向行的输出,并将每一行转换为键/值对,作为映射器的输出

我想记录遇到的元组数,所以我使用了一个全局变量,并在每次运行映射器时递增它。我想知道不同的映射程序如何同步这个全局变量,因为它给出了正确的答案?我还想知道这个例程是否强制映射程序按顺序运行

如果您使用的是
hadoop流媒体
,您不应该这样做

当为映射器指定可执行文件时,每个映射器任务将在映射器初始化时作为独立进程启动可执行文件。当mapper任务运行时,它将其输入转换为行,并将这些行提供给进程的stdin。同时,映射器从进程的stdout收集面向行的输出,并将每一行转换为键/值对,作为映射器的输出进行收集

mapper
reducer
都是可执行文件,它们从stdin(逐行)读取输入并将输出发送到stdout