Nutch 2.0 集群配置


 

目录

目录... 1

【 参考资料 】...1

【 目前问题 】...1

【Nutch 2.0 支持的模式 】...1

【Nutch 2.0 】...1

【SVN 地址& 源码 】...1

【 添加至MyEclipse 】...2

【Build 】...3

【 生成runtime方式 】...4

【 支持Hadoop -- Nutch 】...5

【 支持Mysql生成runtime 】...5

【 支持Hbase生成runtime 】...6

【Linux 环境准备 】...7

【Nutch爬虫准备 】...8

【Linux 配置Nutch+ Mysql 】...9

【Linux 配置Nutch+ Hadoop集群 】...9

【Linux 配置Nutch+ Hbase集群 】...10

【Java操作Hbase】...13

【FAQ 】...13

 

 

【 参考资料】

Testing Nutch 2.0 under Eclipse.doc

http://wiki.apache.org/nutch/GORA_HBase

 

 

【 目前问题】

 

 

【 Nutch 2.0 支持的模式 】

1.        Nutch +Hadoop

2.        Nutch +Mysql

3.        Nutch +Hbase

注:根据需要,三选一即可。

 

【 Nutch 2.0 】

【 SVN 地址 & 源码 】

地址:http://svn.apache.org/repos/asf/nutch/branches/nutchgora

将SVN中Nutch地址,添加到MyEclipse,SVN资源库中,如下图所示。

 

 

 

【 添加至MyEclipse 】

File  ->  New Project ->   ->

->



->



->


点击:Finish。

->

              配置成Java项目 -> End。

 

 

 

 

 

【 BuildBuild 】

              刚添加的项目,因为没有lib,所有报错。

将build.xml添加至Ant中,执行顺序: -> 。

Resolve-default后,会自动创建build/lib,将lib引用至项目中。

 

 

 

 

【 生成runtime方式】

              第一步:根据【Build】工程提示,让工程没有语法和编译异常。

              注:如果是Hbase配置,由于lib不同,

/NutchGora/src/test/org/apache/nutch/storage/TestGoraStorage.java,会报语法错误,可以忽略。

 

              第二步:将/NutchGora/build.xml拖向Ant View中,如下图显示。            

 

              执行Ant顺序:

clean  ->  init ->  resolve-default  -> -ivy-download-unchecked ->  runtime

              执行成功后,显示如下图。

             

 

【 支持Hadoop -- Nutch 】

       使用:Nutch 1.4

       因为原来Nutch 1.x的链接与数据的存储都是在HDFS上的,新的Nutch 2.0把存储层进行抽象,使用的是新的ORM框架GORA

       好像不支持文件式存储,必须进过Gora。支持:

       所以,Hadoop配置,使用Nutch 1.4。请到官网下载。

 

 

 

 

 

 

【 支持Mysql生成runtime 】

       修改:/NutchGora/ivy/ivy.xml。

 

<dependencyorg="mysql" name="mysql-connector-java"rev="5.1.13" conf="*->default"/>

 

 

修改:/NutchGora/conf/gora.properties。

###############################

#Default SqlStore properties #

###############################

 

#gora.sqlstore.jdbc.driver=org.hsqldb.jdbcDriver

#gora.sqlstore.jdbc.url=jdbc:hsqldb:hsql://localhost/nutchtest

#gora.sqlstore.jdbc.user=

#gora.sqlstore.jdbc.password=

 

 

gora.sqlstore.jdbc.driver=com.mysql.jdbc.Driver

gora.sqlstore.jdbc.url=jdbc:mysql://localhost:3306/nutch?createDatabaseIfNotExist=true

gora.sqlstore.jdbc.user=root

gora.sqlstore.jdbc.password=123

 

生成runtime。

 

 

 

【 支持Hbase生成runtime 】

       修改:/NutchGora/ivy/ivy.xml。

 

<dependencyorg="org.apache.gora" name="gora-hbase" rev="0.1"conf="*->compile" />

<dependencyorg="org.apache.zookeeper" name="zookeeper" rev="3.3.2"conf="*->default" />

 

 

修改:/NutchGora/conf/nutch-site.xml。

 

<configuration>

<property>

  <name>storage.data.store.class</name>

  <value>org.apache.gora.hbase.store.HBaseStore</value>

 </property>

</configuration>

 

 

修改:/NutchGora/conf/gora.properties。

 

###############################

#Default SqlStore properties #

###############################

 

#gora.sqlstore.jdbc.driver=org.hsqldb.jdbcDriver

#gora.sqlstore.jdbc.url=jdbc:hsqldb:hsql://localhost/nutchtest

#gora.sqlstore.jdbc.user=

#gora.sqlstore.jdbc.password=

 

 

#gora.sqlstore.jdbc.driver=com.mysql.jdbc.Driver

#gora.sqlstore.jdbc.url=jdbc:mysql://localhost:3306/nutch?createDatabaseIfNotExist=true

#gora.sqlstore.jdbc.user=root

#gora.sqlstore.jdbc.password=123

 

 

注:ivy下载lib中,缺少gora--hbase-0.1.1-incubating.jar

报异常,找不到该类:org.apache.gora.hbase.store.HBaseStore。

请自行下载gora--hbase-0.1.1-incubating.jar,添加到:/runtime/local/lib/

 

下载地址:

http://grepcode.com/snapshot/repo1.maven.org/maven2/org.apache.gora/gora-hbase/0.1.1-incubating

 

 

生成runtime。

 

 

 

【 Linux 环境准备 】

1.      安装JDK。(略)

 

2.      设置环境变量。
#vi /etc/profile
在最后面加入 
#set java environment
JAVA_HOME=/home/jdk-1_7_0_02
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存退出。

 

3.      检查JDK是否安装成功。
#java -version
如果看到JVM版本及相关信息,即安装成功。

 

4.      下载:Mysql,Hadoop,Zookeeper,Hbase。

5.      Nutch 三个版本。

统一放在/home/目录中。(随意)

 

6.      /home/目录为:

/home/jdk-1_7_0_02

              /hom/hadoop-1.0.1/

              /hom/zookeeper-3.4.3/

              /home/hbase-0.92.1/

              /hom/nutch_hadoop/

              /hom/nutch_mysql/

              /hom/nutch_hbase/

 

 

 

【 Nutch爬虫准备 】

1.      打开Nutch 目录,例如:/hom/nutch_hadoop/runtime/local/。

 

2.      新建目录urls,在urls中新建一个文本文件nutch.txt,将要抓取的网站地址输入,比如http://www.163.com/(注意最后的/一定要有)

全路径:/hom/nutch_hadoop/runtime/local/urls/nutch.txt

 

3.      打开/hom/nutch_hadoop/runtime/local/conf/crawl-urlfilter.txt文件,根据正则表达式,修改为:

 

# accepthosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*.163.com/

 

 

4.      打开/hom/nutch_hadoop/runtime/local/conf/nutch-site.xml文件,添加。

<configuration>
                <property>
                                <name>http.agent.name</name>
                                <value>HDnutch agent</value>
                </property>

</configuration>

 

5.      命令说明,根据不同的情况调整,具体执行步骤,请参考下面(Hadoop/Mysql/Hbase),不同启动方式。

爬虫命令:$sh nutch crawl urls-dir sina -depth 4 -threads 5 -topN 1000 >&logs/log1.log

        crawl:通知nutch.jar,执行crawl的main方法。

        urls:存放需要爬行的url.txt文件的目录

        -dir sina 爬行后文件保存的位置

        -depth 2:爬行次数,或者成为深度,不过还是觉得次数更贴切,建议测试时改为1。

        -threads 指定并发的进程 这是设定为 4
         -topN :一个网站保存的最大页面数。

 

 

【 Linux 配置Nutch + Mysql 】

1.      安装Mysql数据库。(略)

2.      检查Mysql是否安装成功。

#mysql

如果看到mysql相关提示信息,即安装成功。

      

1.        启动Nutch爬虫,执行顺序:

/hom/nutch_mysql/runtime/local/bin/nutchcrawl urls -depth 4 -threads 5

 

 

 

【 Linux 配置Nutch + Hadoop集群 】

1.      修改:/hom/hadoop-1.0.1/conf/core-site.xml。

<configuration> 

        <property>

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

                <value>hdfs://10.10.10.17:9000</value>   

        </property>   

</configuration>

 

2.      修改:/hom/hadoop-1.0.1/conf/core-site.xml。

<configuration>  

        <property>

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

                <value>/hom/hadoop-1.0.1/data/</value>   

        </property>  

        <property>

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

                <value>/hom/hadoop-1.0.1/data/</value>   

        </property>  

        <property>

                <name>dfs.permissions</name>  

                <value>false</value>  

       </property>  

</configuration> 

 

3.      修改:/hom/hadoop-1.0.1/conf/mapred-site.xml。

<configuration>  

        <property>  

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

                <value>10.10.10.17:9001</value>  

        </property>  

        <property>  

                <name>mapred.system.dir</name>  

                <value>/hom/hadoop-1.0.1/mapredsystem</value>   

        </property>  

        <property> 

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

                <value>/hom/hadoop-1.0.1/data/mapredlocal</value>   

        </property>  

</configuration> 

 

4.      主从配置。

修改:/hom/hadoop-1.0.1/conf/下masters和slaves这两个文件。

Masters代码:

10.10.10.17

Slaves代码:

10.10.10.15

      

5.      Hadoop集群的所有机器的配置应该保持一致,一般我们在配置完master后,使用scp将配置文件同步到集群的其它服务器上。

 

6.      启动Nutch爬虫,执行顺序:

/hom/hadoop-1.0.1/bin/hadoopnamenode –format (首次执行,需要格式化NameNode

       /hom/hadoop-1.0.1/bin/start-all.sh

/hom/hadoop-1.0.1/hadoopdfs –ls

(验证一下是否启动成功,如果没有错误提示或者出现文件列表,那么恭喜你,Hadoop成功启动了。另外,我们可以通过访问http://10.10.10.17:50070来查看hdfs的状态,访问http://10.10.10.17:50030来查看map/reduce的状态。
如果出现错误,或Hadoop集群未启动,可以查看/hom/hadoop-1.0.1/logs/下的日志文件。)

       /hom/hadoop-1.0.1/bin/hadoopdfsadmin -safemode leave

       /hom/nutch_hadoop/runtime/local/nutchcrawl urls -dir sina -depth 4 -threads 5

 

【 Linux 配置Nutch + Hbase集群 】

2.        根据前面Hadoop配置集群。

3.        配置Zookeeper。

 

修改:/hom/zookeeper-3.4.3/conf/zoo.cfg

# The number of milliseconds of each tick  

tickTime=2000  

# The number of ticks that the initial   

# synchronization phase can take  

initLimit=10  

# The number of ticks that can pass between   

# sending a request and getting an acknowledgement  

syncLimit=5  

# the directory where the snapshot is stored.  

# do not use /tmp for storage, /tmp here is just   

# example sakes.  

dataDir=/hom/zookeeper-3.4.3/data/

dataLogDir=/hom/zookeeper-3.4.3/data/

# the port at which the clients will connect  

clientPort=2181  

#  

# Be sure to read the maintenance section of the   

# administrator guide before turning on autopurge.  

#  

# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance  

#  

# The number of snapshots to retain in dataDir  

#autopurge.snapRetainCount=3  

# Purge task interval in hours  

# Set to "0" to disable auto purge feature  

#autopurge.purgeInterval=1  

server.1=10.10.10.17:2888:3888  

server.2=10.10.10.15:2888:3888  

在/hom/zookeeper-3.4.3/创建,data目录。全路径:/hom/zookeeper-3.4.3/data/

在/hom/zookeeper-3.4.3/data/创建myid文件。

Myid内容对应IP地址,与conf/zoo.cfg配置。

如:

10.10.10.17/hom/zookeeper-3.4.3/data/myid文件内容:1

10.10.10.15/hom/zookeeper-3.4.3/data/myid文件内容:2

将Zookeeper配置同步到其他集群机器上。相应修改myid标识。

 

4.        配置Hbase集群。

修改:/home/hbase-0.92.1/conf/hbase-site.xml

<configuration>
        <property>
               <name>hbase.rootdir</name>
               <value>hdfs://10.10.10.17:9000/hbase</value>
        </property>

        <property>
               <name>hbase.cluster.distributed</name>
               <value>true</value>
        </property>
       
        <property>
               <name>hbase.master</name>
               <value>10.10.10.17:60000</value>
        </property>
       
        <property>
               <name>hbase.zookeeper.quorum</name>
               <value>10.10.10.17,10.10.10.15</value>
        </property>

        <property>
               <name>hbase.master.info.port</name>
               <value>60010</value>
        </property>

        <property>
               <name>hbase.master.port</name>
               <value>60000</value>
        </property>
</configuration>

             

修改:/home/hbase-0.92.1/conf/hbase-env.sh

# ExtraJava runtime options.
# Below are what we set by default.  May only work with SUN JVM.
# For more on why as well as other possible settings,
# see http://wiki.apache.org/hadoop/PerformanceTuning
export HBASE_OPTS="-ea -XX:+UseConcMarkSweepGC-XX:+CMSIncrementalMode"
export JAVA_HOME=/home/jdk-1_7_0_02
export HBASE_MANAGES_ZK=true
export HBASE_HOME=/home/hbase-0.92.1/

 

              修改:/home/hbase-0.92.1/conf/regionservers。

10.0.0.17
10.0.0.15

 

              将Hbase配置同步到其他集群机器上。

 

5.        启动Nutch爬虫,执行顺序:

/hom/hadoop-1.0.1/bin/start-all.sh

/hom/hadoop-1.0.1/bin/hadoopdfsadmin -safemode leave

分别在主从执行:

/hom/zookeeper-3.4.3/bin/zkServer.shstart

       /home/hbase-0.92.1/bin/start-hbase.sh

       /hom/nutch_hbase/runtime/local/bin/nutchcrawl urls -depth 4 -threads 5

 

 

【 Java操作Hbase 】

参考:http://www.cnblogs.com/ylqmf/archive/2012/2/18.html

 

 

【 FAQ 】

1.      关闭linux防火墙。

2.      集群环境,最好添加Linux密匙,自动登录,不用手工输入密码。

3.      关闭Hadoop安全模式,/hom/hadoop-1.0.1/bin/hadoopdfsadmin -safemode leave

4.      配置文件使用IP地址,使用主机名称部分不识别(由于环境造成)。

5.      如果Hadoop配置后,最好删除Hadoop配置中,dfs.name.dir目录中,name文件夹。重新执行:/hom/hadoop-1.0.1/bin/hadoopnamenode –format。

6.      将各框架的lib相互替换成版本一致的lib。

如:/home/hbase-0.92.1/lib/hadoop-core-x.x.x.jar删除。

将/hom/hadoop-1.0.1/hadoop-core-1.0.1.jar复制过来。

 

相关内容