实现方式:
Hadoop命令:
bin/hadoop jar nutch-2.0.job org.apache.nutch.crawl.Crawl 参数...
Nutch分布式,org.apache.nutch.crawl.Crawl流程:
1.利用hadoop这个脚本启动一个jvm进程;
2.jvm进程去运行org.apache.hadoop.util.RunJar这个java类;
3.org.apache.hadoop.util.RunJar解压nutch-2.0.jar到hadoop.tmp.dir/hadoop-unjar*/目录下;
4.org.apache.hadoop.util.RunJar动态的加载并运行Crawl;
5.Crawl中设定Job的各项属性
6.提交job到JobTracker上并监视运行情况。
实现:
1. Crawler extends NutchTool implements Tool
2. run()方法中,将各自定义的MapReduce,添加到
hadoop jar MyGoraMapReduce.jar com.suntang.testmapreduce.MapReduceRun
hadoop fs -put NOTICE.txt /input/
hadoop fs -put README.txt /input/
.handle.processTaskAttempt.createTaskAttempt.addNewTracker.resolveAndAddToTopology
JobTracker
submitJob
initJob
heartbeat
JobQueueTaskScheduler.assignTasks
JobTracker(父节点)不做事,只做任务分配。
heartbeat()调度器,
默认使用FIFO队列,随机性:JobQueueTaskScheduler.assignTasks
TaskTracker(子节点)
transmitHeartBeat()每隔10秒,请求JobTracker,是否有任务。