Nutch-hadoop集群配置——Ubuntu10.04

原文:http://blog.csdn.net/duzidizou/article/details/6033462

一·集群配置——三台机器,njust01作为namenode,njust02,njust03作为datanode:

1.      修改各主机的主机名,以区分不同的机器:

打开/etc/hostname:sudo gedit /etc/hostname

对于namenode节点:

将主机名改成njust01,并保存关闭。如下图所示:


对于各个datanode节点:

依次将主机名改成njust02,njust03,……,并保存关闭。图略。

2.      配置各个主机之间IP与主机名的对应关系

修改集群中各个主机的/etc/hosts文件:sudo gedit /etc/hosts

将集群中各个主机的IP与主机名都列在此处,如图所示:

注意要将第一行注释掉:#127.0.0.1   localhost.localdomain      localhost


这里补充个小知识——如何更改主机的IP地址:

首先,要使用ifconfig命令,查看当前网卡IP地址。如果显示为eth1,下面就要将eth0改成eth1。如果就是eth0,下面的配置内容就不需要做更改。

sudo gedit /etc/network/interfaces

在打开的文件中,写入以下信息。要注意一点:#设定eth0的IP这句话是给您看的,不需要写在文件中。如果把这些注释写在文件中,会导致IP配置失败。


auto lo
iface lo inet loopback            #lo 是本地回环地址:127.0.0.1 并且打开文件就可以看到这两行

auto eth0
iface eth0 inet static
address 192.168.1.15
gateway 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
      #设定eth0的IP,这些是需要自己配的


关闭文件。
这样,IP并没有立即生效。
sudo /etc/init.d/networking restart

使得IP地址生效。此时,可以使用ifconfig命令来查看当前IP地址。这时候就能ping到局域网中的电脑了。但是上不了Internet,是因为没有设置DNS的原因。DNS信息保存在/etc/resolv.conf中,一旦更改,立即生效。

sudo gedit /etc/resolv.conf
在文件中写入DSN服务器的IP地址:
nameserver 202.119.80.10
nameserver 218.2.135.1


现在可以上网了。


3.      安装openssh-server,并配置各节点的公钥私钥

对于每个节点:

安装openssh-server:apt-get install openssh-server

创建公钥私钥:ssh-keygen –t rsa

期间会要求输入一些信息,直接按回车就可以。这样,在默认的路径(其中njust是当前用户名)/home/njust/.ssh目录下创建私钥id_rsa和一个公钥id_rsa.pub。

 

对于datanode节点:

将自己的公钥发送到namenode上:

cpid_rsa.pub datanode01.id_rsa.pub

scpdatanode01.id_rsa.pub namenode节点ip地址(在我的配置方案中,是192.168.1.13):/home/njust/.ssh

这里需要注意,由于每个datanode节点都要将自己的公钥传到namenode的相同路径下,因此,各个datanode发送的公钥文件名不能相同。这里使用cp命令,在每台datanode节点上将公钥文件复制为唯一名字的文件。

 

对于namenode节点:

在收到所有datanode发送过来的公钥文件之后,要综合这些文件(包括自身),并将这些文件发送到每个节点上:

cpid_rsa.pub authorized_keys

catdatanode01.id_rsa.pub >> authorized_keys

......

cat datanode0n.id_rsa.pub>> authorized_keys

scpauthorized_keys datanode的ip地址:/home/njust/.ssh

这时一定要查看一下ssh配置是否成功,查看方式是使用ssh命令:ssh 其他机器ip,如果不需要密码就可以登录,就说明配置成功。如果还需要密码,干脆无法登录,则需要重启电脑。重启之后再次使用ssh命令,如果还需要密码或者无法登录,则需要重新配置一遍。

 

4.      安装JDK

Namenode节点上新建文件夹/usr/program,下载JDK安装包jdk-6u22-linux-i586.bin,复制到目录/usr/ program下,在命令行进入该目Linux 下,执行命令./ jdk-6u22-linux-i586.bin,命令运行完毕,将在目录下生成文件夹jdk1.6.0_22,安装完毕。 安装完成后,修改/usr/program目录拥有着为njust用户:chown -R njust:njust /usr/program

/usr/ program目录需要复制到所有数据节点上。

 

Java环境变量的配置

命令行中执行命令gedit /etc/profile,并加入以下内容,配置环境变量(注意/etc/profile这个文件很重要,后面Hadoop的配置还会用到)。

# setjava environment

exportJAVA_HOME=/usr/program/jdk1.6.0_22/

export JRE_HOME=/usr/program/jdk1.6.0_22/jre

exportCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

保存并退出,执行以下命令使配置生效 chmod +x /etc/profile source /etc/profile 配置完毕,在命令行中使用命令”java -version”可以判断是否成功。

在njust下测试java -version

/etc/profile复制到所有数据节点上。

 

5.      集群配置

在namenode上执行:

下载nutch-1.2,将其解压到/usr/local目录下:

cd /usr/local

tar zxvfnutch-1.2.tar.gz

 

配置Hadoop的配置文件——与以往版本不同,Nutch-1.2中的配置文件(xxx-site.xml)散落在三处,均在nutch-1.2/conf/目录下:

(a)配置hadoop-env.sh

gedit nutch-1.2/conf/hadoop-env.sh

# set java environment

exportJAVA_HOME=/usr/program/jdk1.6.0_22/

(b)配置其他xml文件

打开core-site.xml

<configuration>

 

         <property>

                   <name>fs.default.name</name>

                   <value>hdfs://njust01:9000</value>

         </property>

 

         <property>

                   <name>hadoop.tmp.dir</name>

                   <value>/usr/local/hadoop-0.20.2/hadooptmp</value>

         </property>

 

</configuration>

 

打开hdfs-site.xml

<configuration>

 

         <property>

                   <name>dfs.data.dir</name>

                   <value>/usr/local/hadoop-0.20.2/data</value>

         </property>

 

         <property>

                   <name>dfs.name.dir</name>

                   <value>/usr/local/hadoop-0.20.2/name</value>

         </property>

 

         <property>

                   <name>dfs.replication</name>

                   <value>2</value>

<description>副本个数,不配置默认是3,应小于datanode机器数量</description>

 

         </property>

 

</configuration>

 

打开mapred-site.xml

<configuration>

 

         <property>

                   <name>mapred.job.tracker</name>

                   <value>njust01:9001</value>

         </property>

 

         <property>

                   <name>mapred.local.dir</name>

                   <value>/usr/local/hadoop-0.20.2/temp</value>

         </property>

 

         <property>

                   <name>mapred.map.tasks</name>

                   <value>40</value>

         </property>

 

         <property>

                   <name>mapred.reduce.tasks</name>

                   <value>4</value>

         </property>

 

</configuration>

在配置完xml文件之后,需要手动创建目录/usr/local/hadoop-0.20.2,并使用chown –R njust:njust/usr/local/hadoop-0.20.2,赋予njust用户权限。

 

打开masters文件,加入namenode主机名

njust01

打开slaves文件,加入datanode主机名

 njust02

njust03

 

最后,将/etc/hosts,/etc/profile复制到所有机器的相应位置上;将/usr/program和/usr/local/nutch-1.2这两个目录全部复制到所有机器的相应位置上。

 

6.      集群启动

在namenode上执行以下命令:

cd nutch所在目录/bin

./hadoop namenode –format

./start-all.sh

 

Hadoop会依次启动namenode, datanode1,datanode2,然后启动secondarynamenode。再启动jobtracker,然后启动tasktracker1,最后启动tasktracker2。

启动hadoop成功后,在namenode中生成了hadooptmp文件夹,在datanode中生成了hdfs文件夹和mapred文件夹。 namenode上用java自带的小工具jps查看进程 njust@njust01:~/$ jps

8383JobTracker

8733 Jps

8312SecondaryNameNode

8174NameNode

 

每个datanode上查看进程

njust@njust02:~/$ jps

7636 DataNode

7962 Jps

7749TaskTracker

 

在namenode上查看集群状态(以下状态信息是抄的配置那份经典配置教程)

bin/hadoopdfsadmin report

 

ConfiguredCapacity: 16030539776 (14.93 GB)

PresentCapacity: 7813902336 (7.28 GB)

DFSRemaining: 7748620288 (7.22 GB)

DFS Used:65282048 (62.26 MB)

DFS Used%: 0.84%

Datanodesavailable: 2 (2 total, 0 dead)

 

Name:10.10.97.142:50010

DecommissionStatus : Normal

ConfiguredCapacity: 8015269888 (7.46 GB)

DFS Used:32641024 (31.13 MB)

Non DFS Used:4364853248 (4.07 GB)

DFSRemaining: 3617775616(3.37 GB)

DFS Used%:0.41%

DFSRemaining%: 45.14%

Last contact:Thu May 13 06:17:57 CST 2010

 

Name: 10.10.97.144:50010

DecommissionStatus : Normal

ConfiguredCapacity: 8015269888 (7.46 GB)

DFS Used:32641024 (31.13 MB)

Non DFSUsed: 3851784192 (3.59 GB)

DFSRemaining: 4130844672(3.85 GB)

DFS Used%:0.41%

DFSRemaining%: 51.54%

Lastcontact: Thu May 13 06:17:59 CST 2010

 

Hadoop 的web 方式查看:http:// namenode ip地址:50070

Hadoop查看工作情况: http:// namenode ip地址:50030

 

 

7.      开始爬网页

配置Nutch配置文件

(1)配置所有节点上的nutch-1.2/conf/nutch-site.xml文件

nutch-site.xml文件

<?xmlversion="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. -->

<configuration>

<property>

<name>http.agent.name</name>

<value>nutch-1.2</value>

<description>爬虫和搜索此参数必须配置</description>

</property>

</configuration>

 

(2) 配置所有节点上的conf/crawl-urlfilter.txt文件

# skip file:,ftp:, & mailto: urls

-^(file|ftp|mailto):

# skip imageand 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 URLscontaining certain characters as probable queries, etc.

-[?*!@=]

# skip URLswith slash-delimited segment that repeats 3+ times, to break loops-.*(/[^/]+)/[^/]+/1/[^/]+/1/

# accepthosts in MY.DOMAIN.NAME

# 允许下载所有

+^

# skipeverything else

-.

 

在执行爬虫之前,要创建一个本地文件,名为urls:touch /usr/local/nutch-1.2/urls

在文件内写入要爬的网址,如http://blog.sina.com.cn/twocold

执行爬虫命令:

cd /usr/local/nutch-1.2/bin

./hadoop dfs –copyFromLocal /usr/local/nutch-1.2/urlsurls

./nutch crawl  urls -dir data -depth 3 -topN 10

 

注意:

./hadoop dfs –copyFromLocal/usr/local/nutch-1.2/urls urls

该命令中的最后一个参数urls指的是hdfs中的urls文件,也就是说,将本地的某个urls文件复制到hdfs中。该命令执行之后,就会在hdfs中的/user/njust/目录下创建一个名为urls的文件。

 

./nutch crawl  urls -dir data-depth 3 -topN 10

该命令就是以hdfs中的urls文件作为爬虫要爬的入手地址。

 

如果在爬行过程中出现以下语句:

Generator: 0 records selected for fetching, exiting ...

Stoppingat depth=1 - no more URLs to fetch.

 

就说明爬虫运行失败。

但是,不是什么情况下都失败。具体为什么会失败,还不清楚。估计是网址不能爬导致的。

我们的需求是,爬论坛,爬博客,爬微博。

比如我试过爬CSDN论坛上的某个人发的一个贴,但是就报上面的错。

但是我爬韩寒的博客,就可以。但是也不是什么都能爬下来,博文的回复就爬不到。

还请大侠指教一二!多谢啦!

 

关闭整个hadoop:

在namenode中,使用以下命令:

cd  /usr/local/nutch-1.2/bin

./stop-all.sh

 

 

8.      检索

(1)      命令行下检索

使用Hadoop集群中的一台机器,配置nutch-site.xml文件,配置如下:

<property>

<name>http.agent.name</name> 不可少,否则无搜索结果

<value>nutch-1.0</value>

<description>HTTP 'User-Agent' requestheader.</description>

</property>

<property>

<name>searcher.dir</name>

<value>/user/njust/data</value>

<!—

该值是HDFS中的目录,这里是绝对路径,即爬虫生成的data目录在HDFS中的/user/nutch/data目录下。由Hadoop-site.xml中的fs.default.name参数可以决定它的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

 -->

<description>index dir </description>

</property>

 

使用检索命令:

cd /usr/local/nutch-1.2/bin

./nutchorg.apache.nutch.searcher.NutchBean 要检索的关键字,如中国

 

如果出现Total hits: 0,则说明没有找到与关键字匹配的内容。这个还要测一下。为什么在tomcat中就可以搜索到内容。在命令行里就搜索不到!

也请大侠指教!

(2)      Tomcat下检索

安装tomcat-6.0.29

在官网下载Core版本的apache-tomcat-6.0.29.tar.gz

解压缩到/usr/program目录下:

cd  /usr/program

tar zxvf apache-tomcat-6.0.29.tar.gz

 

配置tomcat环境变量

sudo gedit /etc/profile

umask 022 之前添加:

export CATALINA_HOME=/opt/apache-tomcat-6.0.29

重启!重启计算机后,/etc/profile 的改变才会生效。

 

启动和测试

cd  /usr/program/apache-tomcat-6.0.28/bin,可以看见里面有几个bash 脚本,在bin目录下使用

./startup.sh 命令就可以开启服务了。

运行$./startup.sh结果应该显示:

   Using CATALINA_BASE: /usr/share/tomcat6

   Using CATALINA_HOME: /usr/share/tomcat6

   Using CATALINA_TMPDIR: /usr/share/tomcat6/temp

   Using JRE_HOME:    /usr/lib/jvm/java/jdk1.6.0_22

  Using CLASSPATH: /usr/share/tomcat6/bin/bootstrap.jar

 

打开你的浏览器,输入:localhost:8080。出现 tomcat 欢迎界面表示配置成功。

 

在tomcat中配置nutch

将nutch-1.2目录下的nutch-1.2.war复制到tomcat安装目录下的webapps目录下(***/ tomcat/webapps/)

浏览器中输入http://localhost:8080/nutch-1.2,将自动解压nutch-1.2.war,在webapps下生成nutch-1.2目录。

 

配置***/tomcat/webapps/nutch-1.2/WEB-INF/classes/目录下的core-site.xml文件

<property>

<name>fs.default.name</name>

<value>hdfs://njust01:9000</value><!-这里njust01是当前机器的主机名-à

<description></description>

</property>

 

配置***/tomcat/webapps/nutch-1.2/WEB-INF/classes/目录下的nutch-site.xml文件

<property>

<name>http.agent.name</name>不可少,否则无搜索结果

<value>nutch-1.0</value>

<description>HTTP'User-Agent' request header.</description>

</property>

<property>

<name>searcher.dir</name>

<value>/user/njust/data</value>

<!该值是HDFS中的目录,这里是绝对路径,即爬虫生成的data目录在HDFS中的/user/njust/data目录下。由Hadoop-site.xml中的fs.default.name参数可以决定它的HDFS绝对路径是: hdfs://njust01:9000/user/njust/data对应HDFS中的目录情况如下:

hdfs中的目录情况bin/hadoop dfs -ls drwxr-xr-x - nutch supergroup 0 2010-05-18 17:31/user/nutch/data -->

<description>index dir </description>

</property>

 

 

按照上面的配置之后,启动tomcat,可以成功,但是在使用中文时会发现乱码,因为NUTCH本身页面是unicode, 而TOMCAT给的应该是GBK,所以有这个问题,改一下tomcat/conf/server.xml

    <Connector port="8080"protocol="HTTP/1.1" 

              connectionTimeout="20000" 

              redirectPort="8443"/>

改为

    <Connector port="8080"protocol="HTTP/1.1" 

              connectionTimeout="20000" 

              redirectPort="8443" URIEncoding='utf-8'/>

就是加了个编码。

 

重启tomcat

cd  /usr/program/apache-tomcat-6.0.29/bin

./shutdown.sh

./startup.sh

 

在浏览器中输入http://localhost:8080/nutch-1.2,出现如下页面:

在搜索框中输入中文搜索内容(在此之前tomcat的编码一定要按照上面的方式添加过),如浓烟升起,点击搜索,就可以查看到结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值