分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
Hadoop实战实例
Hadoop是Google MapReduce的一个Java实现。MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。就如同java程序员可以不考虑内存泄露一样,MapReduce的run-time系统会解决输入数据的分布细节,跨越机器集群的程序执行调度,处理机器的失效,并且管理机器之间的通讯请求。这样的模式允许程序员可以不需要有什么并发处理或者分布式系统的经验,就可以处理超大的分布式系统得资源。
一、概论
2.main()函数,创建JobConf,定义Mapper,Reducer,Input/OutputFormat和输入输出文件目录,最后把Job提交給JobTracker,等待Job结束。
3.JobTracker,创建一个InputFormat的实例,调用它的getSplits()方法,把输入目录的文件拆分成FileSplist作为Mappertask的输入,生成Mappertask加入Queue。
4.TaskTracker向JobTracker索求下一个Map/Reduce。
TaskTracker每10秒向JobTracker报告一次运行情况,每完成一个Task10秒后,就会向JobTracker索求下一个Task。
Nutch项目的全部数据处理都构建在Hadoop之上,详见Scalable?Computing?with?Hadoop。
二、程序员编写的代码
(可以查看hadoop-examples-0.20.203.0.jar,里面也有一个类grep)
我们做一个简单的分布式的Grep,简单对输入文件进行逐行的正则匹配,如果符合就将该行打印到输出文件。因为是简单的全部输出,所以我们只要写Mapper函数,不用写Reducer函数,也不用定义Input/OutputFormat。
package? demo.hadooppublic?? 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);?}}
整个代码非常简单,丝毫没有分布式编程的任何细节。
三.运行Hadoop程序
或者编译成jar包HadoopGrep.jar放入hadoop/build/classes/demo/hadoop/目录
找一个比较大的xx.log文件放,然后运行
3.2 集群运行模式
(查看集群配置:http://blog.csdn.net/hguisu/article/details/)
1 )执行bin/hadoopdfs可以看到它所支持的文件操作指令。
5 ) 查看输出文件:
重新执行前,运行hadoop/bin/hadoopdfs -rm output删除output目录
7.运行hadoop/bin/stop-all.sh结束。
四、效率
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203753.html原文链接:https://javaforall.net
