2023年6月29日发(作者:)
Linux下nutch-1.0 的分布式配置和使用
Linux下Nutch分布式配置和使用
詹坤林 2010年5月
目 录
介绍 ............................................................... 2
0 集群网络环境介绍 ................................................. 2
1 /etc/hosts文件配置 ............................................... 2
2 SSH无密码验证配置 ................................................ 2
2.1配置所有节点之间SSH无密码验证................................ 2
3 JDK安装和Java环境变量配置 ........................................ 3
3.1 安装 JDK 1.6 ................................................ 3
3.2 Java环境变量配置 ............................................ 4
4 Hadoop集群配置 ................................................... 4
5 Hadoop集群启动 ................................................... 6
6 Nutch分布式爬虫 .................................................. 9
6.1配置Nutch配置文件............................................ 9
6.2 执行Nutch分布式爬虫 ........................................ 10
7 Nutch检索 ....................................................... 13
7.1 Windows下Nutch单机搜索本地索引数据 ......................... 13
7.2 Linux下Nutch单机搜索本地索引数据 ........................... 14
7.2.1 WEB前端搜索........................................... 14
7.2.2 命令行搜索............................................ 15
7.3 Linux下Nutch搜索HDFS中索引数据 ............................. 15
7.3.1 WEB前端搜索........................................... 16
7.3.2 命令行搜索............................................ 17
附 Nutch-1.1 介绍 ................................................. 18
1
Linux下nutch-1.0 的分布式配置和使用
介绍
这是本人在完全分布式环境下在Cent-OS中配置Nutch-1.1时的总结文档,但该文档适合所有Linux系统和目前各版本的nutch。
0 集群网络环境介绍
集群中所有节点均是Cent-OS系统,防火墙均禁用,sshd服务均开启;所有节点上均有一个名为nutch的用户(非超级用户,安装前root使用useradd添加),用户主目录是/home/nutch。
集群包含三个节点:1个namenode,2个datanode,节点之间局域网连接,
可以相互ping通。节点IP地址和主机名分布如下:
10.10.97.132 gc03vm12 namenode
10.10.97.142 gc04vm12 datanode01
10.10.97.144 gc04vm14 datanode02
本配置将Nutch安装在/home/nutch/nutchinstall目录下。一般最好建议安装在其它非主目录路径下,例如/usr/local下,但此时需要使nutch用户对目录有rwx权限(nutch用户对主目录有rwx权限),一般做法是root用户在/usr/local下创建一个目录,并修改该目录拥有者为nutch(chown –R
nutch:nutch 目录路径)。
1 /etc/hosts文件配置
namenode节点上vi /etc/hosts,将所有节点的名字和IP地址写入其中,写入如下内容,注意注释掉127.0.0.1行:
10.10.97.132 gc03vm12
10.10.97.142 gc04vm12
10.10.97.144 gc04vm14
# 127.0.0.1 centos54 omain localhost
/etc/hosts文件需要复制到所有数据节点上。
2 SSH无密码验证配置
Nutch是基于Hadoop的,Hadoop需要使用SSH协议,namenode将使用SSH协议启动namenode和datanode进程,datanode向namenode传递心跳信息可能也是使用SSH协议,这是我认为的,还没有做深入了解,datanode之间可能也需要使用SSH协议。假若是,则需要配置使得所有节点之间可以相互SSH无密码登陆验证)。
2.1配置所有节点之间SSH无密码验证
(0)原理
2
Linux下nutch-1.0 的分布式配置和使用
节点A要实现无密码公钥认证连接到节点B上时,节点A是客户端,节点B是服务端,需要在客户端A上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到服务端B上。当客户端A通过ssh连接服务端B时,服务端B就会生成一个随机数并用客户端A的公钥对随机数进行加密,并发送给客户端A。客户端A收到加密数之后再用私钥进行解密,并将解密数回传给B,B确认解密数无误之后就允许A进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端A公钥复制到B上。
因此如果要实现所有节点之间无密码公钥认证,则需要将所有节点的公钥都复制到所有节点上。
(1)所有机器上生成密码对
(a)所有节点用nutch用户登陆,并执行以下命令,生成rsa密钥对:
zkl@zkl-ubuntu:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zkl/.ssh/id_rsa): 默认路径
Enter passphrase (empty for no passphrase): 回车,空密码
Enter same passphrase again:
Your identification has been saved in /home/zkl/.ssh/id_rsa.
Your public key has been saved in /home/zkl/.ssh/id_.
这将在/home/nutch/.ssh/目录下生成一个私钥id_rsa和一个公钥id_。
(b)将所有datanode节点的公钥id_传送到namenode上:
cp id_ _
scp _ namenode节点ip地址:/home/nutch/.ssh
......
cp id_ _
(c)namenode节点上综合所有公钥(包括自身)并传送到所有节点上
cp id_ authorized_keys namenode自己的公钥
cat _ >> authorized_keys
......
cat _ >> authorized_keys
然后使用SSH协议将所有公钥信息authorized_keys复制到所有DataNode的.ssh目录下
zkl@zkl-ubuntu:~$ scp authorized_keys data节点ip地址:/home/zkl/.ssh
这样配置过后,所有节点之间可以相互SSH无密码登陆,可以通过命令
“ssh 节点ip地址”来验证。
3 JDK安装和Java环境变量配置
3.1 安装 JDK 1.6
root用户登陆,在Namenode节点上新建文件夹/usr/program,下载JDK安装包,复制到目录/usr/ program下,在命令行进入该目3
Linux下nutch-1.0 的分布式配置和使用
录,执行命令“./ ”,命令运行完毕,将在目录下生成文件夹jdk1.6.0_13,安装完毕。
安装完成后,修改/usr/program目录拥有着为nutch用户,
Chown -R nutch:nutch /usr/program
/usr/ program目录需要复制到所有数据节点上。
3.2 Java环境变量配置
root用户登陆,命令行中执行命令”vi /etc/profile”,并加入以下内容,配置环境变量(注意/etc/profile这个文件很重要,后面Hadoop的配置还会用到)。
# set java environment
export JAVA_HOME=/usr/program/jdk1.6.0_13/
export JRE_HOME=/usr/program/jdk1.6.0_13/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
保存并退出,执行以下命令使配置生效
chmod +x /etc/profile
source /etc/profile
配置完毕,在命令行中使用命令”java -version”可以判断是否成功。
在nutch下测试java -version
/etc/profile复制到所有数据节点上。
4 Hadoop集群配置
在namenode上执行:
下载nutch-1.0,将其解压到/home/nutch/nutchinstall目录下,使用如下命令:
tar zxvf
(1)配置Hadoop的配置文件
(a)配置
$ vi nutch-1.0/conf/
# set java environment
export JAVA_HOME=/usr/program/jdk1.6.0_13/
(b)配置conf/
Hadoop配置参数的含义请参考,在4
Linux下nutch-1.0 的分布式配置和使用
lib/中能找到。
5
Linux下nutch-1.0 的分布式配置和使用
(c)配置masters文件,加入namenode的主机名
gc03vm12
(d)配置slaves文件, 加入所有datanode的主机名
gc04vm12
gc04vm14
(2)复制配置好的各文件到所有数据节点上。
root用户下:
scp /etc/hosts 数据节点ip地址:/etc/hosts
scp /etc/profile 数据节点ip地址:/etc/profile
scp /usr/program 数据节点ip地址:/usr/program
nutch用户下:
scp /home/nutch/nutchinsta 数据节点ip地址:/home/nutch/
5 Hadoop集群启动
Namenode执行:
格式化namenode,格式化后在namenode生成了hdfs/name文件夹
bin/hadoop namenode –format
启动hadoop所有进程,
bin/(或者先后执行和)。
可以通过以下启动日志看出,首先启动namenode,然后启动datanode1,datanode2,然后启动secondarynamenode。再启动jobtracker,然后启动tasktracker1,最后启动tasktracker2。
6
Linux下nutch-1.0 的分布式配置和使用
启动hadoop成功后,在namenode中生成了hadooptmp文件夹,在datanode中生成了hdfs文件夹和mapred文件夹。
namenode上用java自带的小工具jps查看进程
zkl@zkl-ubuntu:~/$ jps
8383 JobTracker
8733 Jps
8312 SecondaryNameNode
8174 NameNode
每个datanode上查看进程
zkl@zkl-ubuntu:~/$ jps
7636 DataNode
7962 Jps
7749 TaskTracker
在namenode上查看集群状态
bin/hadoop dfsadmin –report
Configured Capacity: (14.93 GB)
Present Capacity: 7813902336 (7.28 GB)
DFS Remaining: 7748620288 (7.22 GB)
DFS Used: 65282048 (62.26 MB)
DFS Used%: 0.84%
-------------------------------------------------
Datanodes available: 2 (2 total, 0 dead)
Name: 10.10.97.142:50010
Decommission Status : Normal
Configured Capacity: 8015269888 (7.46 GB)
DFS Used: 32641024 (31.13 MB)
Non DFS Used: 4364853248 (4.07 GB)
DFS Remaining: 3617775616(3.37 GB)
DFS Used%: 0.41%
DFS Remaining%: 45.14%
Last contact: Thu May 13 06:17:57 CST 2010
Name: 10.10.97.144:50010
Decommission Status : Normal
7
Linux下nutch-1.0 的分布式配置和使用
Configured Capacity: 8015269888 (7.46 GB)
DFS Used: 32641024 (31.13 MB)
Non DFS Used: 3851784192 (3.59 GB)
DFS Remaining: 4130844672(3.85 GB)
DFS Used%: 0.41%
DFS Remaining%: 51.54%
Last contact: Thu May 13 06:17:59 CST 2010
Hadoop 的web 方式查看: namenode ip地址:50070
Hadoop查看工作情况:
namenode ip地址:50030
8
Linux下nutch-1.0 的分布式配置和使用
6 Nutch分布式爬虫
6.1配置Nutch配置文件
(1)配置所有节点上的conf/文件
文件
(2)配置所有节点上的conf/文件
9
Linux下nutch-1.0 的分布式配置和使用
# skip file:, ftp:, & mailto: urls
-^(file|ftp|mailto):
# skip image and other suffixes we can't yet parse
-.(gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|sit|eps|wmf|zip|ppt|mpg|xls|gz|rpm|tgz|mov|MOV|exe|jpeg|JPEG|bmp|BMP)$
# skip URLs containing certain characters as probable queries, etc.
-[?*!@=]
# skip URLs with slash-delimited segment that repeats 3+ times, to break loops
-.*(/[^/]+)/[^/]+1/[^/]+1/
# accept hosts in
# 允许下载所有
+^
# skip everything else
-.
6.2 执行Nutch分布式爬虫
Nutch爬虫命令是:
bin/nutch Crawl
其中的
(1)入口地址文件
在本地磁盘中新建一个文件,写入一个入口url,然后将其复制到HDFS中,使用如下命令:
bin/hadoop dfs -copyFromLocal crawltest/urls urls
(3)爬虫测试,在namenode、datanode或者与集群网络连通的安装有Hadoop或者nutch并且配置相同的客户机上上均可使用如下命令分布式爬虫:
bin/nutch crawl urls -dir data -depth 3 -topN 10
crawl started in: data
10
Linux下nutch-1.0 的分布式配置和使用
rootUrlDir = urls
threads = 10
depth = 3
topN = 10
Injector: starting
Injector: crawlDb: data/crawldb
Injector: urlDir: urls
Injector: Converting injected urls to crawl db entries.
Injector: Merging injected urls into crawl db.
Injector: done
Generator: Selecting best-scoring urls due for fetch.
Generator: starting
Generator: segment: data/segments/22
Generator: filtering: true
Generator: topN: 10
Generator: Partitioning selected urls by host, for politeness.
Generator: done.
Fetcher: Your '' value should be listed first in
'' property.
Fetcher: starting
Fetcher: segment: data/segments/22
Fetcher: done 第一层的网页下载完毕,depth=0
CrawlDb update: starting
CrawlDb update: db: data/crawldb
CrawlDb update: segments: [data/segments/22]
CrawlDb update: additions allowed: true
CrawlDb update: URL normalizing: true
CrawlDb update: URL filtering: true
CrawlDb update: Merging segment data into db.
11
Linux下nutch-1.0 的分布式配置和使用
CrawlDb update: done
Generator: Selecting best-scoring urls due for fetch.
Generator: starting
Generator: segment: data/segments/24
Generator: filtering: true
Generator: topN: 10
Generator: 0 records selected for fetching, exiting ...
Stopping at depth=1 - no more URLs to fetch. 此处就停止了,不能下载第二层的网页,正常情况下是不会出现此错误的。
LinkDb: starting
LinkDb: linkdb: data/linkdb
LinkDb: URL normalize: true
LinkDb: URL filter: true
LinkDb: adding segment:
hdfs://gc03vm12:9000/user/nutch/data/segments/22
LinkDb: done
Indexer: starting
Indexer: done
Dedup: starting
Dedup: adding indexes in: data/indexes
Dedup: done
merging indexes to: data/index
Adding hdfs://gc03vm12:9000/user/nutch/data/indexes/part-00000
done merging
crawl finished: data
爬虫完毕,hdfs中生成data目录,data目录下面有这些子目录:crawldb,index,
indexes,linkdb,segments。所有节点上的爬虫日志在logs/中。上述“Stopping at depth=1 - no more URLs to fetch.”这个错误不知何故,我在另12
Linux下nutch-1.0 的分布式配置和使用
几台机器上相同配置爬虫却没有出现任何错误,不知何原因。一般情况下按此配置没有任何问题。
从浏览器中可以查看到分布式爬虫时作业状态:
7 Nutch检索
Nutch的爬虫和搜索可以说是分离的两块,爬虫可以是M/R作业,但搜索不是M/R作业。搜索有两种方式:一是将爬虫数据(或者称索引数据)放在本地硬盘,进行搜索。二是直接搜索HDFS中的爬虫数据。
Nutch自带了一个WEB前端检索程序,即主目录下的,实现WEB前端检索时需要安装Tomcat,执行应用程序。此外,在命令行中也可执行Nutch检索命令。
7.1 Windows下Nutch单机搜索本地索引数据
(1)将HDFS中生成的存储爬虫数据的data目录复制到本地,并将data目录拷贝到windows下的某个目录中,例如D盘下。
bin/hadoop fs –copyToLocal data data
(2)
安装tomcat,请确保安装路径没有空格,这很重要,在windows上如果有空格将导致搜索结果始终为0。启动tomcat服务。
(3)将Nutch主目录下的WEB前端程序复制到 ***/
tomcat/webapps/目录下。
(4)浏览器中输入localhost:8080/nutch-1.0,将自动解压,在webapps下生成nutch-1.0目录。
13
Linux下nutch-1.0 的分布式配置和使用
(5)配置WEB前端程序中的文件,该文件所在目录是***/tomcat/webapps/nutch-1.0/WEB-INF/classes/下,配置如下:
(6)重启tomcat。更改配置文件后必须重启tomcat,否则不会生效。
(7)在localhost:8080/nutch-1.0下检索关键字。
7.2 Linux下Nutch单机搜索本地索引数据
7.2.1 WEB前端搜索
(1)将HDFS中生成的存储爬虫数据的data目录复制到本地某一目录下。
bin/hadoop fs –copyToLocal data data
(2)
安装tomcat,请确保安装路径没有空格,这很重要,否则将导致搜索结果始终为0。安装完后启动tomcat服务,bin/catalina start。
(3)将Nutch主目录下的WEB前端程序复制到 ***/
tomcat/webapps/目录下。
(4)浏览器中输入localhost:8080/nutch-1.0,将自动解压,在webapps下生成nutch-1.0目录。
14
Linux下nutch-1.0 的分布式配置和使用
(5)配置WEB前端程序中的文件,该文件所在目录是***/tomcat/webapps/nutch-1.0/WEB-INF/classes/下,配置如下:
data是爬虫生成的索引数据目录。参数值请使用绝对路径
(6)重启tomcat,可以先执行bin/catalina stop停止再start。更改配置文件后必须重启tomcat,否则不会生效。
(7)在localhost:8080/nutch-1.0下检索关键字。
7.2.2 命令行搜索
(1)机器上安装nutch,即解压nutch软件包即可。
(2)配置nutch主目录下conf目录下的和文件。
由于是单机模式搜索,使用的是本地文件系统,中不要做任何配置;中和以上配置一致
(3)使用命令检索
bin/nutch ean apache
Total hits: 10
0 23/10.10.97.132:8080/docs/
... changes made to Apache Tomcat. Status - Apache Tomcat development
status. Developers - List ... for Apache Tomcat's internals.
1 27/10.
7.3 Linux下Nutch搜索HDFS中索引数据
分布式爬虫时Nutch生成的索引数据存储的HDFS中,nutch支持搜索HDFS中的数据。检索HDFS中的索引数据和检索本地种的索引数据的配置差别是文件。搜索hdfs中的数据时,nutch在搜索的时候首先通过15
Linux下nutch-1.0 的分布式配置和使用
rpc检索lucene索引文件,然后定位到segment对应的14位数字时间作为文件夹的名字,然后从这个文件夹中获取结果信息的。
7.3.1 WEB前端搜索
(0)选择一台机器,该机器可以是Hadoop集群中的节点,也可以是集群之外的机器,但保证机器和Hadoop集群网络连通。
(1)
安装tomcat,请确保安装路径没有空格,这很重要,否则将导致搜索结果始终为0。安装完后启动tomcat服务,bin/catalina start。
(3)将Nutch主目录下的WEB前端程序复制到 ***/
tomcat/webapps/目录下。
(4)浏览器中输入localhost:8080/nutch-1.0,将自动解压,在webapps下生成nutch-1.0目录。
(5)配置WEB前端程序中的文件,该文件所在目录是***/tomcat/webapps/nutch-1.0/WEB-INF/classes/下。至少需要配置参数,指定HDFS文件系统URI:
(6)配置WEB前端程序中的文件,该文件所在目录是***/tomcat/webapps/nutch-1.0/WEB-INF/classes/下,配置如下:
该值是HDFS中的目录,这里是绝对路径,即爬虫生成的data目录在HDFS中的/user/nutch/data目录下。
由中的参数可以决定它的HDFS绝对路径是:
hdfs://gc04vm12:9000/user/nutch/data
对应HDFS中的目录情况如下:
16
Linux下nutch-1.0 的分布式配置和使用
hdfs中的目录情况
bin/hadoop dfs -ls
drwxr-xr-x - nutch supergroup 0 2010-05-18 17:31
/user/nutch/data
-->
(6)重启tomcat,可以先执行bin/catalina stop停止,再start。更改配置文件后必须重启tomcat,否则不会生效。
(7)在localhost:8080/nutch-1.0下检索关键字。
7.3.2 命令行搜索
(0)选择一台机器,该机器可以是Hadoop集群中的节点,也可以是集群之外的机器,但保证机器和Hadoop集群网络连通。
(1)集群之外的机器上必须安装nutch并做相关配置,安装即解压nutch软件包即可。
(2)配置Nutch主目录下的和文件
配置文件,至少需要配置参数,指定HDFS文件系统URI:
配置文件,配置如下:
17
Linux下nutch-1.0 的分布式配置和使用
该值是HDFS中的目录,这里是绝对路径,即爬虫生成的data目录在HDFS中的/user/nutch/data目录下。
由中的参数可以决定它的HDFS绝对路径是:
hdfs://gc04vm12:9000/user/nutch/data
对应HDFS中的目录情况如下:
hdfs中的目录情况
bin/hadoop dfs -ls
drwxr-xr-x - nutch supergroup 0 2010-05-18 17:31
/user/nutch/data
-->
(3)使用命令检索
bin/nutch ean apache
Total hits: 10
0 23/10.10.97.132:8080/docs/
... changes made to Apache Tomcat. Status - Apache Tomcat development
status. Developers - List ... for Apache Tomcat's internals.
1 27/10.
附 Nutch-1.1 介绍
nutch-1.1使用的是hadoop-0.20.2,目前还未发布,但在SVN上能够下载到,/repos/asf/nutch/tags/1.1/。
刚刚下载下来的nutch-1.1源码包编译前需要把属性由plugins改成src/plugin ,还需要在conf下面把相关的*.template文件重命名为* 。然后再ant,编译生成jar文件。
Apache所有开源项目下载地址是:/dist/
18
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687986282a64012.html
评论列表(0条)