国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html
内部邀请码:C8E245J (不写邀请码,没有现金送)
国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
原文地址: http://www.cnblogs.com/i80386/p/3540389.html
参考网站:
http://blog.csdn.net/weijonathan/article/details/10178919 一个完整的部署过程,只是版本有所区别
http://m.blog.csdn.net/blog/WeiJonathan/9251597 杨尚川的博客(nutch 分布式运行)
http://qindongliang1922.iteye.com/blog/1977053 三劫散仙博客(如何部署hbase)
http://wiki.apache.org/nutch/Nutch2Tutorial 官网
一:nutch2.x与nutch1.x的主要区别:数据访问层的抽象
nutch 2.x----gora-core-0.3----gora-hbase----hbase
gora-core-0.3 | apache-gora提供了对nosql访问的统一接口。(注解:在上述链接里可以看到对其他数据库的支持) |
gora-hbase | 针对hbase实现了gora的接口 |
:
有了这两步nutch2.x就可以运行在Hbase上了。
支持nosql的优势:
当获取了外链要进行url排重的时候,以前基于hdfs的时候是读取之前全部的url用mapreduce实现排重(好沉重的赶脚),支持了nosql只需要一步查找即可。
二:准备材料
hadoop-1.2.1 | http://archive.apache.org/dist/hadoop/core/hadoop-1.2.1/hadoop-1.2.1.tar.gz |
hbase-0.92.1 | http://archive.apache.org/dist/hbase/hbase-0.92.1/hbase-0.92.1.tar.gz |
nutch-2.2.1 | http://archive.apache.org/dist/nutch/2.2.1/apache-nutch-2.2.1-src.tar.gz |
使用wget下载。
三:安装hadoop(略)
我这里做了2个机器的hadoop集群,如下所示:
192.168.2.51 | Master.Hadoop |
192.168.2.52 | Slave1.Hadoop |
四:安装Hbase(第一次配置简单点,使用自带的zookeeper)
将hbase拷贝到Hadoop根目录下 参考命令:
cp hbase-0.92.1.tar.gz /home/hadoop-1.2.1/ (之所以这样做可以方便以后扩展hadoop集群,直接scp就行了)
解压并重命名 参考命令:
tar -zxvf hbase-0.92.1.tar.gz mv hbase-0.92.1 hbase cd hbase
修改 hbase-env.sh,参考配置:
# The java implementation to use. Java 1.6 required. # export JAVA_HOME=/usr/java/jdk1.6.0/ export JAVA_HOME=/usr/java/jdk 注解:设置java_home export HBASE_CLASSPATH=/home/hadoop-1.2.1/conf export HBASE_MANAGES_ZK=true ... # The directory where pid files are stored. /tmp by default. export HBASE_PID_DIR==/home/hadoop-1.2.1/hbase/pids (注解:这个最好不要采用默认,放在/tmp很不安全,有可能被误删)
修改hbase-site.xml,参考配置:
<configuration> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.rootdir</name> <value>hdfs://Master.Hadoop:9000/hbase</value> // 注解:这里与hadoop的hdfs建立了联系,如果你hadoop dfs -ls 发现没有hbase这个文件夹, </property> 运行:hadoop dfs -ls /hbase <property> <name>hbase.master</name> <value>192.168.2.51:60000</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>192.168.2.52</value> </property> </configuration>
vim regionservers 参考配置:
192.168.2.51 192.168.2.52
hadoop版本一致化:(版本不一致会出现异常)
cp /home/hadoop-1.2.1/hadoop-core-1.2.1.jar /home/hadoop-1.2.1/hbase/lib/
并删除hbase自带的hadoop版本。
将配置好的hbase拷贝到slave节点(192.168.2.52)
cd /home/hadoop-1.2.1 scp -r hbase root@192.168.2.52:/home/hadoop-1.2.1/
启动hbase
cd /home/hbase/ bin/start-hbase.sh
启动成功,运行jps命令:
16572 Resin 30282 HMaster 5275 NameNode 5563 JobTracker 5461 SecondaryNameNode 5886 Jps 30470 HRegionServer
其中HMaster即hbase的主进程。
五:安装nutch
解压(注:这个不需要解压到hadoop根目录,因为nutch是才操作hadoop的,在master上有就可以了)
cd /home/ tar -zxvf apache-nutch-2.2.1-src.tar.gz //将nutch解压到home下
vim /home/nutch-2.2.1/ivy/ivy.xml
将此行的注释去掉 <dependency org="org.apache.gora" name="gora-core" rev="0.3" conf="*->default"/>
将hbase-site.xml拷贝到nutch的配置文件(建立与hbase的联系???)
ant 注解:编译过程很慢,会去加载大量的jar包。
注入种子:
mkdir urls vim seed.txt http://news.163.com/ http://www.gov.cn/ http://www.sbsm.gov.cn/ http://news.stnn.cc/china/ http://www.zaobao.com/wencui/social http://www.xinhuanet.com/politics/1.htm http://news.china.com.cn/shehui/node_7185045.htm
上传的hdfs,完成种子url的注入
hadoop dfs -put urls urls
修改采集规则:
regex-urlfilter.txt # accept anything else +^http://news.163.com/ +^http://www.sbsm.gov.cn/ +^http://www.gov.cn/ +^http://news.stnn.cc/china/ +^http://www.zaobao.com/wencui/social +^http://www.xinhuanet.com/politics +^http://news.xinhuanet.com/politics/\d+-\d+/\d+/c_\d+.htm +^http://news.china.com.cn/\d+-\d+/\d+/content_\d+.htm +^http://news.china.com.cn/shehui/node_\d+(_\d+)?.htm
注解:conf 下面的配置文件都会被打包到ant后生成的job文件中,所以这里要提前修改(以后要是要注入新的采集规则需要解压job文件修改)
修改配置(集群环境运行)
cd runtime/deploy unzip -d apache-nutch-2.2.1 apache-nutch-2.2.1.job rm apache-nutch-2.2.1.job cd apache-nutch-2.2.1 rm lib/hbase-***.jar cp /home/hadoop-1.2.1/hbase/hbase-0.92.1.jar lib zip -r ../apache-nutch-2.1.job ./* cd .. rm -r apache-nutch-2.1
运行命令:
cd runtime/deploy/bin vim nutch 阅读shell发现: # figure out which class to run if [ "$COMMAND" = "crawl" ] ; then class="org".apache.nutch.crawl.Crawler
发现crawl命令运行Crawler类
vim org.apache.nutch.crawl.Crawler (参考这个命令找到那个Crawler类)
得到命令格式为:
System.out.println("Usage: Crawler (<seedDir> | -continue) [-solr <solrURL>] [-threads n] [-depth i] [-topN N] [-numTasks N]"); cd /runtime/deploy
于是运行如下命令:
bin/nutch crawl urls -topN 1000 -depth 50
如果运气足够好,你会在Hbase shell 后 list 后 发现一个 'webpage' 表
附本人配置时候设置的 /etc/profile:
#java export JAVA_HOME=/usr/java/jdk export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #hadoop export HADOOP_HOME=/home/hadoop-1.2.1 export PATH=$PATH:$HADOOP_HOME/bin #zookeeper export ZOOKEEPER_HOME=${HADOOP_HOME}/zookeeper export PATH=${PATH}:${ZOOKEEPER_HOME}/bin #hbase export HBASE_HOME=/home/hadoop-1.2.1/hbase export PATH=$PATH:$HBASE_HOME/bin export CLASSPATH=$CLASSPATH:$HBASE_HOME/lib #nutch 2.2 export NUTCH_HOME=/home/hadoop-1.2.1/nutch/runtime/local