nutch源码crawldb类源代码分析

本文深入探讨了Nutch的Crawldb类源代码,详细分析了其在爬虫数据存储和管理中的关键实现,包括URL抓取、数据库更新以及数据持久化等方面,为理解Nutch爬虫框架提供了重要参考。
摘要由CSDN通过智能技术生成
package org.apache.nutch.crawl;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;

// Commons Logging imports
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.apache.hadoop.io.*;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.util.*;

import org.apache.nutch.util.HadoopFSUtil;
import org.apache.nutch.util.LockUtil;
import org.apache.nutch.util.NutchConfiguration;
import org.apache.nutch.util.NutchJob;
import org.apache.nutch.util.TimingUtil;

//这是个MapReduce程序,crawldb继承Configured实现Tool的run方法
public class CrawlDb extends Configured implements Tool {
   
    //下面是日志和一些常量
  public static final Logger LOG = LoggerFactory.getLogger(CrawlDb.class);

  public static final String CRAWLDB_ADDITIONS_ALLOWED = "db.update.additions.allowed";

  public static final String CRAWLDB_PURGE_404 = "db.update.purge.404";

  public static final String CURRENT_NAME = "current";

  public static final String LOCK_NAME = ".locked";
  //空的构造函数
  public CrawlDb() {}
  //带参数的构造函数,参数是配置文件
  public CrawlDb(Configuration conf) {
    setConf(conf);
  }
//这个方法,查看crawldb和segments的路径是否存在这两个文件
  public void update(Path crawlDb, Path[] segments, boolean normalize, boolean filter) throws IOException {
    boolean additionsAllowed = getConf().getBoolean(CRAWLDB_ADDITIONS_ALLOWED, true);
    update(crawlDb, segments, normalize, filter, additionsAllowed, false);
  }

  public void update(Path crawlDb, Path[] segments, boolean normalize, boolean filter, boolean additionsAllowed, boolean force) throws IOException {
    //根据配置信息(执行crawldb时后面的参数)创建一个文件系统
      FileSystem fs = FileSystem.get(getConf());
    //创建crawldb文件路径
    Path lock = new Path(crawlDb, LOCK_NAME);
    //这个类主要是判断crawldb文件能不能创建的,看一下这个类的方法
//    public static void createLockFile(FileSystem fs, Path lockFile, boolean accept) throws IOException {
   
//因为输入的时候第二个参数是crawldb的目录位置,还因为ntuch的容错功能,所以他判断你这输入的是不是个文件,在判断这目录是不是有crawldb这个文件
//不满足条件直接退出,IO异常
//        if (fs.exists(lockFile)) {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值