广州欧宝官网视频监控有限公司欢迎您!

在任务执行期间


PDF

Hadoop Map/Reduce教程

目标

这篇教程从用户的角度出发,全面地先容了Hadoop Map/Reduce框架的各个方面。

先决条件

请先确认Hadoop被正确安装、设置和正常运行中。更多信息见:

概述

Hadoop Map/Reduce是一个利用浅易的软件框架,基于它写出来的应用措施可以或许运行在由上千个商用呆板构成的大型集群上,并以一种靠得住容错的方法并行处理惩罚上T级此外数据集。

一个Map/Reduce 功课(job) 凡是会把输入的数据集切分为若干独立的数据块,由 map任务(task)以完全并行的方法处理惩罚它们。框架会对map的输出先举办排序, 然后把功效输入给reduce任务。凡是功课的输入和输出城市被存储在文件系统中。 整个框架认真任务的调治和监控,以及从头执行已经失败的任务。

凡是,Map/Reduce框架和漫衍式文件系统是运行在一组沟通的节点上的,也就是说,计较节点和存储节点凡是在一起。这种设置答允框架在那些已经存好数据的节点上高效地调治任务,这可以使整个集群的网络带宽被很是高效地操作。

Map/Reduce框架由一个单独的master JobTracker 和每个集群节点一个slave TaskTracker配合构成。master认真调治组成一个功课的所有任务,这些任务漫衍在差异的slave上,master监控它们的执行,从头执行已经失败的任务。而slave仅认真执行由master指派的任务。

应用措施至少应该指明输入/输出的位置(路径),并通过实现符合的接口或抽象类提供map和reduce函数。再加上其他功课的参数,就组成了功课设置(job configuration)。然后,Hadoop的 job client提交功课(jar包/可执行措施等)和设置信息给JobTracker,后者认真分发这些软件和设置信息给slave、调治任务并监控它们的执行,同时提供状态和诊断信息给job-client。

固然Hadoop框架是用JavaTM实现的,但Map/Reduce应用措施则不必然要用 Java来写 。

输入与输出

Map/Reduce框架运转在<key, value> 键值对上,也就是说, 框架把功课的输入看为是一组<key, value> 键值对,同样也产出一组 <key, value> 键值对做为功课的输出,这两组键值对的范例大概差异。

框架需要对keyvalue的类(classes)举办序列化操纵, 因此,这些类需要实现 Writable接口。 别的,为了利便框架执行排序操纵,key类必需实现 WritableComparable接口。

一个Map/Reduce 功课的输入和输出范譬喻下所示:

(input) <k1, v1> -> map -> <k2, v2> -> combine -> <k2, v2> -> reduce -> <k3, v3> (output)

例子:WordCount v1.0

在深入细节之前,让我们先看一个Map/Reduce的应用示例,以便对它们的事情方法有一个劈头的认识。

WordCount是一个简朴的应用,它可以计较出指定命据会合每一个单词呈现的次数。

这个应用合用于 , 或 三种Hadoop安装方法。

源代码 WordCount.java
1.   package org.myorg;  
2.    
3.   import java.io.IOException;  
4.   import java.util.*;  
5.    
6.   import org.apache.hadoop.fs.Path;  
7.   import org.apache.hadoop.conf.*;  
8.   import org.apache.hadoop.io.*;  
9.   import org.apache.hadoop.mapred.*;  
10.   import org.apache.hadoop.util.*;  
11.    
12.   public class WordCount {  
13.    
14.      public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {  
15.        private final static IntWritable one = new IntWritable(1);  
16.        private Text word = new Text();  
17.    
18.        public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {  
19.          String line = value.toString();  
20.          StringTokenizer tokenizer = new StringTokenizer(line);  
21.          while (tokenizer.hasMoreTokens()) {  
22.            word.set(tokenizer.nextToken());  
23.            output.collect(word, one);  
24.          }  
25.        }  
26.      }  
27.    
28.      public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {  
29.        public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {  
30.          int sum = 0;  
31.          while (values.hasNext()) {  
32.            sum += values.next().get();  
33.          }  
34.          output.collect(key, new IntWritable(sum));  
35.        }  
36.      }  
37.    
38.      public static void main(String[] args) throws Exception {  
39.        JobConf conf = new JobConf(WordCount.class);  
40.        conf.setJobName("wordcount");  
41.    
42.        conf.setOutputKeyClass(Text.class);  
43.        conf.setOutputValueClass(IntWritable.class);  
44.    
45.        conf.setMapperClass(Map.class);  
46.        conf.setCombinerClass(Reduce.class);  
47.        conf.setReducerClass(Reduce.class);  
48.    
49.        conf.setInputFormat(TextInputFormat.class);  
50.        conf.setOutputFormat(TextOutputFormat.class);  
51.    
52.        FileInputFormat.setInputPaths(conf, new Path(args[0]));  
53.        FileOutputFormat.setOutputPath(conf, new Path(args[1]));  
54.    
55.        JobClient.runJob(conf);  
57.      }  
58.   }  
59.    
用法

相关产品推荐

服务热线:4008-668-998

电子邮箱: 329465598@qq.com

公司地址:海南省海口市龙华区

东莞市欧宝官网监控有限公司在系统化的工作流程基础上,提供以工业设计为核心的品牌价值链整合服务,一站式服务内容包括:产品设计研究、产品差异...

友情链接:
Copyright © 欧宝官网视频监控有限公司 版权所有 网站地图