Hadoop 在MapReduce中,类似脚本的字数在哪里执行?

Hadoop 在MapReduce中,类似脚本的字数在哪里执行?,hadoop,mapreduce,hadoop2,Hadoop,Mapreduce,Hadoop2,我在寻求知识?当运行带有wordcount jar的MapReduce时,代码何时执行?是在mapper任务期间还是在driver方法期间 当运行带有wordcount jar的MapReduce时,代码何时执行? 它使用主代码(即驱动程序代码)执行,然后是映射代码,后面是减速机代码(如果有) 是在mapper任务期间还是在driver方法期间? 是的,两者都有 驱动程序-将驱动map reduce,您可以在其中定义我应该为mapper、reducer、paritioner和combiner使用

我在寻求知识?当运行带有wordcount jar的MapReduce时,代码何时执行?是在mapper任务期间还是在driver方法期间

当运行带有wordcount jar的MapReduce时,代码何时执行? 它使用主代码(即驱动程序代码)执行,然后是映射代码,后面是减速机代码(如果有)

是在mapper任务期间还是在driver方法期间? 是的,两者都有

驱动程序-将驱动map reduce,您可以在其中定义我应该为mapper、reducer、paritioner和combiner使用的类

映射器-映射器是您的字数将创建键值对映射的地方,键值为单词,值为出现的次数

Reducer-Reducer将从每个映射器获取值,并将所有值与同一个键accross映射器相加,并给出最终结果

当运行带有wordcount jar的MapReduce时,代码何时执行? 它使用主代码(即驱动程序代码)执行,然后是映射代码,后面是减速机代码(如果有)

是在mapper任务期间还是在driver方法期间? 是的,两者都有

驱动程序-将驱动map reduce,您可以在其中定义我应该为mapper、reducer、paritioner和combiner使用的类

映射器-映射器是您的字数将创建键值对映射的地方,键值为单词,值为出现的次数


Reducer-Reducer将从每个映射器中获取值,并根据同一个键accross映射器对所有值求和,并给出最终结果。

正如SMA正确回答的那样,代码执行从驱动程序类的main方法开始,该方法使用方法setMapperClass将控制传递给映射器和Reducer类,作业对象的setReducerClass。

正如SMA正确回答的那样,代码执行从驱动程序类的main方法开始,该方法使用作业对象的setMapperClass、setReducerClass方法将控制传递给映射器和reducer类。

查看official以更好地理解。我用关键点来解释这个例子

让我们看一看java单词计数示例

  • 假设您已经创建了wc.jar,如下所示

    $ jar cf wc.jar WordCount*.class 
    
  • 现在运行WordCount示例

    $ bin/hadoop jar wc.jar WordCount /user/joe/wordcount/input /user/joe/wordcount/output
    
    现在您已经分别传递了用于读取和写入数据的输入目录和输出目录

  • 假设:

    /user/joe/wordcount/input - input directory in HDFS
    /user/joe/wordcount/output - output directory in HDFS
    
    映射程序使用HDFS中的输入目录读取数据,reducer使用HDFS中的输出目录存储数据。

    应用程序通常实现
    Mapper
    Reducer
    接口,以提供map和reduce方法。这些构成了工作的核心

    如果您看到WordCount类的main方法(您可以将其称为
    Driver
    program)

    我们正在设置映射器类、还原器类、组合器类、输出键和值类以及输入/输出文件位置

    有些作业可能只有映射器。有些作业将使用映射器和还原器。除了Mapper和Reducer类之外,有些作业还将具有Partitioner和Combiner。因此,流程基本上由您决定,Hadoop框架将根据您的输入形成一个工作流

    对于上述示例:

  • 映射程序将从
    FileInputFormat.addInputPath
    API从HDFS文件位置读取输入数据。映射器由下面的行设置

    job.setMapperClass(TokenizerMapper.class);
    
  • Combiner是一个小型缩减器,它将在映射器输出上运行。它将通过组合映射器的输出来减少网络IO

    job.setCombinerClass(IntSumReducer.class);
    
  • 减速器由以下API设置

    job.setReducerClass(IntSumReducer.class);
    
  • 映射器

    映射器将输入键/值对映射到一组中间键/值对。Hadoop MapReduce框架为作业的InputFormat生成的每个InputSplit生成一个映射任务

    减速器

    Reducer将共享一个键的一组中间值减少为一组较小的值

    组合器:

    用户可以通过
    Job.setCombinerClass(Class),
    选择指定一个组合器,以执行中间输出的本地聚合,这有助于减少从映射器传输到减速机的数据量。

    请查看official以获得更好的理解。我用关键点来解释这个例子

    让我们看一看java单词计数示例

  • 假设您已经创建了wc.jar,如下所示

    $ jar cf wc.jar WordCount*.class 
    
  • 现在运行WordCount示例

    $ bin/hadoop jar wc.jar WordCount /user/joe/wordcount/input /user/joe/wordcount/output
    
    现在您已经分别传递了用于读取和写入数据的输入目录和输出目录

  • 假设:

    /user/joe/wordcount/input - input directory in HDFS
    /user/joe/wordcount/output - output directory in HDFS
    
    映射程序使用HDFS中的输入目录读取数据,reducer使用HDFS中的输出目录存储数据。

    应用程序通常实现
    Mapper
    Reducer
    接口,以提供map和reduce方法。这些构成了工作的核心

    如果您看到WordCount类的main方法(您可以将其称为
    Driver
    program)

    我们正在设置映射器类、还原器类、组合器类、输出键和值类以及输入/输出文件位置

    有些作业可能只有映射器。有些作业将使用映射器和还原器。除了Mapper和Reducer类之外,有些作业还将具有Partitioner和Combiner。因此,流程基本上由您决定,Hadoop框架将根据您的输入形成一个工作流

    对于上述示例:

  • 映射程序将从
    FileInputFormat.addInputPath
    API从HDFS文件位置读取输入数据。映射器由下面的行设置

    job.setMapperClass(TokenizerMapper.class);
    
  • Combiner是一个小型缩减器,它将在映射器输出上运行。它将通过组合映射器的输出来减少网络IO

    job.setCombinerClass(IntSumReducer.class);
    
  • 减速器由以下API设置

    job.setReducerClass(IntSumReducer.class);
    
  • 映射器

    映射器将输入键/值对映射到一组内部