初识 Map/Reduce
来源:互联网 发布:电脑cmd打开编程 编辑:程序博客网 时间:2024/05/17 22:52
刚刚接触hadoop平台三天时间,这三天里由原来的信心百倍变成了现在的无头苍蝇。现在唯一的感觉就是要看要学习的东西太多了。感觉每个知识点里包含了其它你不会的东西,所以就得看A的时候去看B,看B的时候还得学习C。有经验的同事告诉我还是先了解下Map/Reduce再看其它的。那就按着他成功的经历往下走吧。
首先从http://www.apache.org/dyn/closer.cgi/hadoop/core/ 上下载了hadoop0.20源码。同事说最好的学习方法就是读源码,读完一遍源码后再去看逻辑就不会晕,oh my lady gaga。希望吧 。基于hadoop的Map/Reduce应用程序包括Mapper和Reducer类。以及一个创建jobConf的执行程序。在一些应用程序中还包括Combiner类。它实际也是Reduce的实现。
(1) Mapper.java : 此类包括一个内部类(Context)和四个方法(setup,run,cleanup,map)。内部类Context继续于MapContext并没有引入任何新的方法。setup和cleanup用于管理Mapper生命周期中的资源。setup在完成mapper构造,即将执行map动作前调用。cleanup则在完成所有的map动作后调用。map方法用对一次输入的key,value进行map动作。 run protected void map(KEYIN key, VALUEIN value, Context context) throws IOException, InterruptedException { context.write((KEYOUT) key, (VALUEOUT) value方法执行了上面描述的这一过程。它调用setup,然后迭代所有的key/value键值对,进行map,最后调用cleanup。
(2)org.apache.hadoop.mapreduce.lib.map中实现了Mapper的三个子类。分别是:InverseMapper(将输入<key, value> map为输出<value, key>),MultithreadedMapper(多线程执行map方法)和TokenCounterMapper(对输入的value分解为token并计数),其中最复杂的就是MultithreadMapper。它会地动多个线程执行另一个Mapper的map方法。它会启动mapred.map.multithreadedrunner.threads(配置项)个线程执行。
Mapper:mapred.map.multithreadedrunner.class(配置项)。MultithreadedMapper重写了基类Mapper的run方法,启动N个线程(对应的类为MapRunner)执行mapred.map.multithreadedrunner.class(我们称为目标Mapper)的run方法(就是说,目标Mapper的setup和cleanup会被执行多次)。目标Mapper共享同一份InputSplit,这就意味着,对InputSplit的数据读必须线程安全。为此,MultithreadedMapper引入了内部类SubMapRecordReader,SubMapRecordWriter,SubMapStatusReporter,分别继承自RecordReader,RecordWriter和StatusReporter,它们通过互斥访问MultithreadedMapper的Mapper.Context,实现了对同一份InputSplit的线程安全访问,为Mapper提供所需的Context。这些类的实现方法都很简单。
- 初识 Map/Reduce
- 初识Map Reduce
- Hadoop — 分布式计算框架 Map-Reduce(初识 )
- map/reduce
- map reduce
- Map/Reduce
- map reduce
- Map Reduce
- map reduce
- map-reduce
- Map-Reduce
- Map Reduce
- Map Reduce
- Map/Reduce
- map&reduce
- map/reduce
- map/reduce
- map/reduce
- java(Web)中相对路径,绝对路径问题总结
- Windows Apache环境下运行Perl写的CGI
- LoadLibrary "xxxx" 找不到指定的模块
- 工作记录
- linux下程序设计-获取本机MAC地址
- 初识 Map/Reduce
- 修改用户密码方法总结
- Delphi dlgOpen的使用
- 数据库范式
- Facebook和聊天
- Hello ,这是从Windows Live的客户端发博客
- 通过OCP考试,留念
- C#开发指导--类型(类型、变量、值)
- commons—fileupload和输出流下载