设为首页 收藏本站
查看: 667|回复: 0

[经验分享] Hadoop-0.20.2+ Nutch-1.2+Tomcat-7——分布式搜索配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-13 09:21:56 | 显示全部楼层 |阅读模式
Hadoop-0.20.2+ Nutch-1.2+Tomcat-7——分布式搜索配置
随着nutch的发展,各模块逐渐独立性增强,我从2.1到1.6装过来,也没有实现整个完整的功能。今天装一下nutch1.2,这应该是最后一个有war文件的稳定版本。

1.      准备工作
下载apache-nutch-1.2-bin.zip、apache-tomcat-7.0.39.tar.gz、hadoop-0.20.2.tar.gz。
将下载的hadoop-0.20.2.tar.gz解压到/opt文件夹下。
将下载的apache-nutch-1.2-bin.zip解压到/opt文件夹下。
将下载的apache-tomcat-7.0.39.tar.gz解压到/opt文件夹下。
2.      配置hadoop-0.20.2
(1)   编辑conf/hadoop-env.sh,最后添加

export JAVA_HOME=/opt/java-7-sun
export HADOOP_HEAPSIZE=1000
export HADOOP_CLASSPATH=.:/opt/nutch-1.2/lib:/opt/hadoop-0.20.2
export NUTCH_HOME=/opt/nutch-1.2/lib
(2)   编辑/etc/profile,添加

#Hadoop
export HADOOP_HOME=/opt/hadoop-0.20.2
export PATH=$PATH:$HADOOP_HOME/bin
(3)   编辑conf/core-site.xml






fs.default.name
hdfs://m2:9000


hadoop.tmp.dir
/opt/hadoop-0.20.2/tempdata/var


hadoop.native.lib
true
Should native hadoop libraries, if present, be used.


(4)   编辑conf/hdfs-site.xml






dfs.name.dir
/opt/hadoop-0.20.2/tempdata/name1,/opt/hadoop-1.0.4/tempdata/name2 #hadoop的name目录路径
  


dfs.data.dir
/opt/hadoop-0.20.2/tempdata/data1,/opt/hadoop-1.0.4/tempdata/data2



  dfs.replication
  2


(5)   编辑conf/mapred-site.xml





  mapred.job.tracker
  m2:9001


  mapred.local.dir
/opt/hadoop-0.20.2/tempdata/var


  mapred.output.compression.type
  BLOCK
  If the job outputs are to compressed as SequenceFiles, how should
   they be compressed? Should be one of NONE, RECORD or BLOCK.
   


  mapred.output.compress
  true
  Should the job outputs be compressed?
   


  mapred.compress.map.output
  true
  
(6)   将conf/master和conf/slave文件写好。启动hadoop(hadoop命令在hadoop目录的bin目录下)

a)  hadoop namenode –format
b)  start-all.sh
(7)   在WEB下查看Hadoop的工作情况

a)  http://localhost:50070

b)  http://localhost:50030

3.      配置nutch-1.2
(1)   建立nutch1.2/urls/url.txt,里面加入

http://www.163.com/
http://www.tianya.cn/
http://www.renren.com/
http://www.iteye.com/

(2)   编辑conf/crawl-urlfilter.txt

# accept hosts in MY.DOMAIN.NAME
#+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/
+^http://([a-z0-9]*\.)*163.com/
+^http://([a-z0-9]*\.)*tianya.cn/
+^http://([a-z0-9]*\.)*renren.com/
+^http://([a-z0-9]*\.)*iteye.com/

(3)   配置conf/nutch-site.xml



http.agent.name
aniu-search
aniu.160


http.agent.description




http.agent.url




http.agent.email




searcher.dir
search-dir//此文件位置为hdfs://m2:9000/user/root



(4)     将hadoop/conf中的文件覆盖到nutch/conf下。
(5)     建立文件search-dir/search-servers.txt加入内容

m2 9999

s6 9999

s7 9999

4.      配置tomcat
(1)   将nutch-1.2下的nutch-1.2.war复制到/tomcat下的webapps中,在浏览器中http://localhost:8080/nutch-1.2/,则可以看到nutch的搜索界面。(这一步测试要做,会生成相应的目录)
(2)   解决中文乱码的问题,编辑tomcat/conf/server.xml,找到并添加


(3)   将nutch/conf中的文件覆盖到/opt/apache-tomcat-7.0.39/webapps/nutch-1.2/WEB-INF/classes下。
5.      分布式爬取测试和分布式搜索测试
(1)   将urls文件夹上传到hdfs://m2:9000/user/root下。
(2)   执行爬取命令:bin/nutch crawl urls -dir crawl -depth 5 -threads 10 -topN 100,若结果hdfs://m2:9000/user/root下生成目录crawl(5个子目录),则爬取成功。
(3)   开启各节点的检索端口

[iyunv@m2 nutch-1.2]# bin/nutch server 9999 hdfs://m2:9000/user/root/crawl
[iyunv@s6 nutch-1.2]# bin/nutch server 9999 hdfs://m2:9000/user/root/crawl
[iyunv@s7 nutch-1.2]# bin/nutch server 9999 hdfs://m2:9000/user/root/crawl
(4)   将search-dir/search-servers.txt上传到在HDFS上,hdfs://m2:9000/user/root/search-dir/search-servers.txt
(5)   重启tomcat,

/opt/apache-tomcat-7.0.39/bin/catalina.sh stop

/opt/apache-tomcat-7.0.39/bin/catalina.sh start

(6)   在浏览器http://10.1.50.160:8080/nutch-1.2/search.jsp中测试,搜索成功。
6.      FAQ
(1)     运行爬取命令报错java.lang.IllegalArgumentException: Compression codec org.apache.hadoop.io.compress.SnappyCodec was not found.
解决办法:是把hadoop-0.20.2/conf/mapread-site.xml中的snappy部分去掉。
(2)   运行爬取命令bin/nutch crawl hdfs://m2:9000/user/root/nutch-1.2/urls -dir hdfs:/m2:9000/user/root/nutch-1.2/crawl -depth 5 -threads 10 -topN 100报错:
java.lang.RuntimeException: Error in configuring object
at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:93)
at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
咨询了大脸,这个错解决了。方法是
将conf/nutch-default.xml中的相关项还原

plugin.folders
plugins
Directories where nutch plugins are located. Each
element may be a relative or absolute path. If absolute, it is used
as is. If relative, it is searched for on the classpath.

(3)     报错
Error: org.apache.nutch.scoring.ScoringFilters.injectedScore(Lorg/apache/hadoop/io/Text;Lorg/apache/nutch/crawl/CrawlDatum;)V
解决方法:
到s6上看tasktracker的log,发现有这么一条,查了下fatal,竟然是“致命的”。。。但也没给出具体原因。

接着找,从浏览器m2:50030进去,找到刚执行的task(中间要重启hadoop),找到报错
2013-04-13 07:45:38,046 ERROR org.apache.hadoop.mapred.TaskTracker: Error running child : java.lang.NoSuchMethodError: org.apache.nutch.scoring.ScoringFilters.injectedScore(Lorg/apache/hadoop/io/Text;Lorg/apache/nutch/crawl/CrawlDatum;)V
at org.apache.nutch.crawl.Injector$InjectMapper.map(Injector.java:141)
at org.apache.nutch.crawl.Injector$InjectMapper.map(Injector.java:59)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
at org.apache.hadoop.mapred.Child.main(Child.java:170)
在网上查到,NoSuchMethodError常是因为有功能相同的包在工作,版本又不一致,才导致这个错误。我在看bin/nutch时发现,会读取nutch-1.2/build中的plugins,这就和nutch-1.2/plugins冲突了,即将build这个文件夹重命名,问题就解决了。
(4)     关于分布式搜索,不能搜索HDFS上的内容

终于发现这个WARN,原来是找不到文件,
解决办法:把这个文件夹传到HDFS上解决。
7.      主要参考资料:
1.    《nutch入门学习.pdf》
2.    http://hi.baidu.com/erliang20088
3.    http://lendfating.blog.163.com/blog/static/1820743672012111311532359/
4.    http://blog.iyunv.com/witsmakemen/article/details/8256369
  


来自为知笔记(Wiz)  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-86083-1-1.html 上篇帖子: Hadoop阅读笔记(四)——一幅图看透MapReduce机制 下篇帖子: hadoop 分布式缓存
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表