Nutch1.9安装配置与基本使用介绍

本文介绍Nutch1.9的安装配置过程及基本使用方法,包括环境搭建、命令行操作、数据读取等内容。

Nutch1.9安装配置与基本使用介绍


一、Nutch1.9的安装配置

环境:Ubuntu14.10

在官网下载apache-nutch-1.9-src.tar.gz压缩包

官网地址:http://nutch.apache.org/downloads.html

进入压缩包所在目录,用tar–zxvf apache-nutch-1.9-src.tar.gz解压

进入解压出来的目录apache-nutch-1.9

使用ant命令进行编译,如果系统没有安装ant则先用sudo apt-get install ant命令安装

编译后会出现一个runtime目录,进入后有2个目录,一个deploy,一个local,deploy目录下是利用hadoop进行分布式爬取使用的,这里我先用local模式进行命令说明。

进入local目录下的conf目录,在nutch-site.xml文件中添加

<property>
 <name>http.agent.name</name>
 <value>Guardian</value>
 <description>HTTP 'User-Agent' request header. MUST NOT be empty -
 please set this to a single word uniquely related to your organization.
 
 NOTE: You should also check other related properties:
 
   http.robots.agents
   http.agent.description
   http.agent.url
   http.agent.email
   http.agent.version
 
  andset their values appropriately.
 
 </description>
</property>


至此配置完成,可以在local模式下开始爬取了

 

二、Nutch1.9的爬取命令

1.循环迭代爬取

进入local目录下后可以通过执行bin/crawl看到爬取命令的提示

bin/crawl <seedDir> <crawDir><solrURL> <numberOfRounds>

seedDir :url文件目录,在此目录下创建txt文件写入要爬取的url入口,txt文件可以为若干个。

crawDir:爬取数据存放目录,自由指定一个文件夹即可。

solrURL:solr配置好的url,这里我没配置好solr先设置为空

numberOfRounds:迭代次数

 

根据命令提示(如果还没有安装配置solr的话,可以先把solrURL设置一个不存在的值,但此时迭代爬取只会执行一轮然后在solr索引时异常退出),在local目录下创建一个urls目录在里面创建一个txt文件写入要爬取的url入口(一行一条),于是我们在local目录下执行下面的命令:

bin/crawl urls data http://localhost:8080/solr 3

nutch与solr的集成配置详见Solr4.10.2集成Nutch1.9与自带UI界面使用


然后可以看到运行结果如下:



2. nutch单步爬取命令

①inject 注入url(只执行一次就好)

Usage: Injector <crawldb> <url_dir>示例:

bin/nutch inject data/crawldb/ urls

②generate 迭代初始化

Usage: Generator <crawldb> <segments_dir>示例:

bin/nutch generate data/crawldb/ data/segments/

③fetch 抓取

Usage: Fetcher <segment> [-threads n]示例:

bin/nutch fetch data/segments/20150125005942/

④parse       解析

Usage: ParseSegment segment [-noFilter] [-noNormalize]示例:

bin/nutch parse data/segments/20150125005942/

⑤updatedb 更新

Usage: CrawlDb <crawldb> (-dir <segments> | <seg1> <seg2> ...)示例:

bin/nutch updatedb data/crawldb/ data/segments/20150125005942/

 

补充:以上命令参数未介绍完整,命令不清楚参数或命令下有哪些子选项可以输入bin/nutchbin/nutch inject类似的命令,nutch会给出提示。

 

 

3.在运行的日志输出中我们可以清楚看到nutch的运行步骤,nutch的爬取循环示意图如下:


在运行完crawl命令后,在指定的数据文件夹中会产生3个目录:crawdb、linkdb、segments

Crawdb:爬取数据的总体信息集合,多次爬取数据的爬取信息会在此文件夹中存放。

Linkdb:链接反转信息集合,多次数据的链接反转信息会在此文件夹中存放。

Segments:按照每次的爬取会生成新的文件夹,每个文件夹用日期标注,每个文件夹内存放了爬取状态,解析内容等相关详细信息。

以上3个文件夹中信息均为二进制的形式存放,文本转换在下面的命令会介绍到。

 

每个Segment中也有6个子目录,内容如下:

Content:页面内容(html、xml等)

Fetch:抓取状态及相关信息

Generate:抓取列表及相关信息

Parse:解析列表及相关信息

Parse_data:解析结果链接相关信息(outlink)

Parse_text:解析结果文本相关信息

 

4.Nutch整体框架图如下:


注:nutch1.2版本后lucene index模块取消,移交solr进行对应处理

 

三、Nutch1.9的读取命令

对应之前的三个文件夹,nutch的读取信息有3个,reabdb、readlinkdb、readseg,因为前面三个文件夹的信息均为二进制存储,所以要使用这三个指令来进行相应数据的读取和查询。

1.bin/nutch readdb

readdb <crawldbDir>

-stats 显示当前爬取信息的总体统计信息

-dump 以文本的方式导出总体url的相关信息

-url 以特定的url来查询对应概要信息

-topN 将前N个url导出文本信息,还可以设置以score的方式排列和用min值来过滤

示例:

bin/nutch readdb data/crawldb/ -stats
bin/nutch readdb data/crawldb/ -dump data/crawldb_dump

 

2. bin/nutch readseg

readseg <segmentDir>(对应到segments下的子目录)

-dump 文本导出–no*可以选择去掉不要的内容

-list 查询每个segement的状态信息

-get 获取特定url相关信息

示例(只dump出parsetext部分):

bin/nutch readseg -dump data/segments/20150125005942/ data/parsetext_dump -nocontent -nofetch -nogenerate -noparse -noparsedata

 

3. bin/nutch readlinkdb

-dump 导出链接分析相关文本(反转链接等)

-url 查找特定链接相关信息(链入信息)

示例:

bin/nutch readlinkdb data/linkdb/ -dump data/linkdb_dump

 

四、Nutch1.9的其他工具命令

1.      当小段过多需要合并压缩命令

对应到三个主data文件有

mergedb、mergelinkdb、mergesegs

 

2.      parsechecker

对一个url进行解析测试,用来检测爬取解析相关信息

 

3.      domainstats

域信息统计

host/domain/suffix/tld 四个统计范围从小到大

就http://www.gome.com.cn/*来说

host就是www.gome.com.cn

domain就是gome.com.cn(去掉第一个)

suffix就是com.cn(去掉前2个)

tld就是cn(最后一个)

 

4.      webgraph

针对已抓取的信息建立3个数据库

outlinkdb 输出链接

inlinkdb 输入链接

nodedb    分值

这些信息依旧是用二进制进行存储的

 

5.      nodedumper

将webgraph中的二进制以文本输出,可自定义topn与排序规则

-group可以以<domain|host><max|num>统计输出

 

6.      linkrank

按照nutch默认的方式计算每个链接的score

 

7.      scoreupdater

对crawldb更新所有在webgraphdb中计算出来的值,其他则score清零

 

8.      freegen

轻量级抓取

相对于generate命令来说略过了crawldb库直接从指定url生成抓取列表

generate是从crawldb中获取抓取列表





注:上述内容并未完整包含nutch所有命令,只列举了常用基本命令和整体介绍

本文固定连接:http://blog.csdn.net/fyfmfof/article/details/42522981

任务描述 本关任务:HDFS命令实战 相关知识 Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。 1.HDFS基本操作命令 1.1 启动HDFS服务。 1.使用start-dfs.sh命令启动 root@evassh-10644553:~# start-dfs.sh root@evassh-10644553:~# 2.使用JPS命令查看是否启动成功 root@evassh-10644553:~# jps 从截图中我们可以看到NameNode和DataNode服务已经启动成功。 1.2 help 命令 功能: 查看命令的帮助文档 root@evassh-10644553:~# hdfs dfs -help 1.3 ls 命令 功能:显示目录信息 root@evassh-10644553:~# hdfs dfs -ls / 可以看到找到一个/user文件 1.4 mkdir 命令 功能:在 hdfs 上创建目录 1.在根目录的 user 文件夹下创建 stu01 文件夹 root@evassh-10644553:~# hdfs dfs -mkdir /user/stu01 2.使用 ls 命令查看,可以看到出现了 stu01 文件夹: root@evassh-10644553:~# hdfs dfs -ls /user 1.5 put 命令 功能:上传 Linux 系统中的文件到 HDFS 文件系统的指定目录 1.首先使用 vi 命令在 linux本地编辑一份数据文件 输入命令:vi stu01.txt root@evassh-10644553:~# vi stu01.txt 按 i键进入编辑模式,左下角出现--INSERT--字符后,输入以下内容, 234 5678 Hadoop 然后按ESC 键,左下角--INSERT--字符消失后,在英文输入状态下输入 :wq ,回车保存退出文件。 2.将刚刚创建的stu01.txt文件上传到HDFS上面 root@evassh-10644553:~# hdfs dfs -put stu01.txt /user/stu01 3.使用 ls 命令查看,可以看到出现了stu01.txt文件 root@evassh-10644553:~# hdfs dfs -ls /user/stu01 1.6 cat 命令 功能:显示文件内容 root@evassh-10644553:~# hdfs dfs -cat /user/stu01/stu01.txt 1.7 text 命令 功能:以字符形式打印一个文件的内容 root@evassh-10644553:~# hdfs dfs -text /user/stu01/stu01.txt 1.8 cp 命令 功能:从 hdfs 的一个路径拷贝 hdfs 的另一个路径 1.查看HDFS上的根目录下的内容 root@evassh-10644553:~# hdfs dfs -ls / 2.查看HDFS上的/user/stu01下的内容 root@evassh-10644553:~# hdfs dfs -ls /user/stu01 3.将/user/stu01下的stu01.txt拷贝到根目录下 root@evassh-10644553:~# hdfs dfs -cp /user/stu01/stu01.txt / 4.再次查看HDFS上的根目录下的内容 root@evassh-10644553:~# hdfs dfs -ls / 从上面的图中可以看出文件已经被复制到了HDFS的根目录下。 1.9 mv 命令 功能:从 hdfs 的一个路径拷贝 hdfs 的另一个路径 1.在HDFS上面创建一个新的目录 root@evassh-10644553:~# hdfs dfs -mkdir /user/stu02 root@evassh-10644553:~# hdfs dfs -ls /user 2.查看HDFS上的根目录下的内容 root@evassh-10644553:~# hdfs dfs -ls / 3.将跟目录下的stu01.txt移动到/user/stu02下 root@evassh-10644553:~# hdfs dfs -mv /stu01.txt /user/stu02 4.再次查看HDFS上的根目录下的内容 root@evassh-10644553:~# hdfs dfs -ls / 5.查看/user/stu02下的内容 root@evassh-10644553:~# hdfs dfs -ls /user/stu02 从上面的图中可以看出文件已经被移动到了/user/stu02的根目录下。 1.10 rm 命令 功能:删除 hdfs 文件或文件夹 1.将HDFS上面的/user/stu01/stu01.txt文件删除 root@evassh-10644553:~# hdfs dfs -rm /user/stu01/stu01.txt root@evassh-10644553:~# hdfs dfs -ls /user/stu01 回显示结果为空,则正确。 2.将HDFS上面的/user/stu01/文件夹删除 root@evassh-10644553:~# hdfs dfs -rm -r /user/stu01 root@evassh-10644553:~# hdfs dfs -ls /user 显示如上图则成功。
最新发布
10-01
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值