知识点
相关文章
更多最近更新
更多Hadoop实战实例
2019-03-28 14:03|来源: 网络
一、概论
作为Hadoop程序员,他要做的事情就是:
1、定义Mapper,处理输入的Key-Value对,输出中间结果。
2、定义Reducer,可选,对中间结果进行规约,输出最终结果。
3、定义InputFormat 和OutputFormat,可选,InputFormat将每行输入文件的内容转换为Java类供Mapper函数使用,不定义时默认为String。
4、定义main函数,在里面定义一个Job并运行它。
然后的事情就交给系统了。
1.基本概念:Hadoop的HDFS实现了google的GFS文件系统,NameNode作为文件系统的负责调度运行在master,DataNode运行在每个机器上。同时Hadoop实现了Google的MapReduce,JobTracker作为MapReduce的总调度运行在master,TaskTracker则运行在每个机器上执行Task。
2.main()函数,创建JobConf,定义Mapper,Reducer,Input/OutputFormat 和输入输出文件目录,最后把Job提交給JobTracker,等待Job结束。
3.JobTracker,创建一个InputFormat的实例,调用它的getSplits()方法,把输入目录的文件拆分成FileSplist作为Mapper task 的输入,生成Mapper task加入Queue。
4.TaskTracker 向 JobTracker索求下一个Map/Reduce。
Mapper Task先从InputFormat创建RecordReader,循环读入FileSplits的内容生成Key与Value,传给Mapper函数,处理完后中间结果写成SequenceFile.
Reducer Task 从运行Mapper的TaskTracker的Jetty上使用http协议获取所需的中间内容(33%),Sort/Merge后(66%),执行Reducer函数,最后按照OutputFormat写入结果目录。
TaskTracker 每10秒向JobTracker报告一次运行情况,每完成一个Task10秒后,就会向JobTracker索求下一个Task。
Nutch项目的全部数据处理都构建在Hadoop之上,详见Scalable Computing with Hadoop。
二、程序员编写的代码
(可以查看hadoop-examples-0.20.203.0.jar,里面也有一个类grep)
我们做一个简单的分布式的Grep,简单对输入文件进行逐行的正则匹配,如果符合就将该行打印到输出文件。因为是简单的全部输出,所以我们只要写Mapper函数,不用写Reducer函数,也不用定义Input/Output Format。
- package demo.hadoop
- public class HadoopGrep {
- public static class RegMapper extends MapReduceBase implements Mapper {
- private Pattern pattern;
- public void configure(JobConf job) {
- pattern = Pattern.compile(job.get( " mapred.mapper.regex " ));
- }
- public void map(WritableComparable key, Writable value, OutputCollector output, Reporter reporter)
- throws IOException {
- String text = ((Text) value).toString();
- Matcher matcher = pattern.matcher(text);
- if (matcher.find()) {
- output.collect(key, value);
- }
- }
- }
- private HadoopGrep () {
- } // singleton
- public static void main(String[] args) throws Exception {
- JobConf grepJob = new JobConf(HadoopGrep. class );
- grepJob.setJobName( " grep-search " );
- grepJob.set( " mapred.mapper.regex " , args[ 2 ]);
- grepJob.setInputPath( new Path(args[ 0 ]));
- grepJob.setOutputPath( new Path(args[ 1 ]));
- grepJob.setMapperClass(RegMapper. class );
- grepJob.setReducerClass(IdentityReducer. class );
- JobClient.runJob(grepJob);
- }
- }
RegMapper类的configure()函数接受由main函数传入的查找字符串,map() 函数进行正则匹配,key是行数,value是文件行的内容,符合的文件行放入中间结果。
main()函数定义由命令行参数传入的输入输出目录和匹配字符串,Mapper函数为RegMapper类,Reduce函数是什么都不做,直接把中间结果输出到最终结果的的IdentityReducer类,运行Job。
整个代码非常简单,丝毫没有分布式编程的任何细节。
相关问答
更多-
问哪位大神有《深入浅出Hadoop实战开发》的视频教程,跪求啊[2022-05-02]
邮件已经发出,过几分钟后记得查收(可能在垃圾箱里边),收到后觉得还算满意请点下边的采纳通知我。如果10分钟后还没收到,请直接在本问题里追问我,我会再次发送。 最后如果在采纳之余能加点分数,那就OK! -
请问哪位有《深入浅出Hadoop实战开发》的视频教程????[2022-06-12]
http://yun.baidu.com/s/1gdxfOrT -
如何运行spring实战4里的实例[2023-06-19]
2学习笔记系列学习比较Spring In Action学习笔记程序清单1.3在Spring中配置Hello Wo... 程序清单1.10 KnightApp.java(运行Knight例子) package com.springinaction.chapter0 -
陆嘉恒的hadoop实战怎么样[2022-10-15]
common:是为hadoop其他子项目提供支持的常用工具,它主要包括FileSystem、RPC和串行化库。它们为在廉价硬件上搭建云计算环境提供基本的服务,并会为运行在该平台上的软件开发提供所需的API Avro:Avro是用于数据序列化的系统 MapReduce:是一种编程模型,用于大规模数据集(>1TB)的并行运算 HDFS:一个分布式文件系统 Chukwa:开源数据收集系统,用于监控和分析大型分布式系统的数据 Hive:最早是由Facebook设计的,一个建立在Hadoop基础之上的数据仓库,提供了 ... -
想学hadoop,hadoop权威指南 和 大数据时代 两本书哪个更好?[2022-01-23]
权威指南听说将太多理论,新手容易无法理解,而实战注重的是应用,可能不会涉及太多理论,对于新手来说可以有个直观的认识。所以推荐实战。至于其他两本没有听过,所以不知道 -
Hadoop实战入门培训哪个最好[2022-02-22]
其它的不清楚,可以到魔据,条件不错,很注重基础教育,真正做到为学生负责到底,其它的,说实在的真的不敢保证。刚开始有些枯燥,入门就好了,现在缺大数据人才,好好学会有前途。 -
深入理解大数据和hadoop实战哪本书好[2022-12-04]
要是想好好深入学习的话,建议你都看一下,一本是讲理论的,一本更注重实战,做这个的,理论和实战是分不开的。大数据是很深的。入门的基础也有好多的。多看一些总归是没坏处的。柠檬学院大数据。 -
能给我一份吗?《深入浅出Hadoop实战开发》[2022-04-04]
这一份视频应该只能花钱购买 -
基于hadoop的云存储实例[2022-09-06]
基于Hadoop平台的云存储应用实践
http://cio.itxinwen.com/case_studies/2012/0327/402100.html
云计算(Cloud Computing)是一种基于因特网的超级计算模式,在远程的数据中心里,成千上万台电脑和服务器连接成一片电脑云。用户通过电脑、笔记本、手机等方式接人数据中心,按自己的需求进行运算。目前,对于云计算仍没有普遍一致的定义。结合上述定义,可以总结出云计算的一些本质特征,即分布式计算和存储特性、高扩展性、 ...
-
hadoop应用开发实战详解和hadoop应用开发技术详解哪个好[2021-12-17]
第1篇Hadoop技术篇 第1章初识Hadoop 1.1Hadoop简介 1.1.1Hadoop的起源 1.1.2什么是Hadoop 1.1.3Hadoop的核心技术是Google核心技术的开源实现 1.1.4Hadoop的功能与优点 1.1.5Hadoop的应用现状和发展趋势 1.2Hadoop的体系结构 1.2.1HDFS的体系结构 1.2.2MapReduce的体系结构 1.3Hadoop与分布式开发 1.4Hadoop的数据管理 1.4.1HDFS的数据管理 1.4.2HBase的数据管理 1.4. ...