Hadoop 在MapReduce中,类似脚本的字数在哪里执行?
我在寻求知识?当运行带有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使用的类 映射器-映射器是您的字数将创建键值对映射的地方,键值为单词,值为出现的次数Hadoop 在MapReduce中,类似脚本的字数在哪里执行?,hadoop,mapreduce,hadoop2,Hadoop,Mapreduce,Hadoop2,我在寻求知识?当运行带有wordcount jar的MapReduce时,代码何时执行?是在mapper任务期间还是在driver方法期间 当运行带有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单词计数示例
$ jar cf wc.jar WordCount*.class
$ 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);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
Job.setCombinerClass(Class),
选择指定一个组合器,以执行中间输出的本地聚合,这有助于减少从映射器传输到减速机的数据量。请查看official以获得更好的理解。我用关键点来解释这个例子
让我们看一看java单词计数示例
$ jar cf wc.jar WordCount*.class
$ 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);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);