0

0

Nutch1.8+Hadoop1.2+Solr4.3分布式集群配置

php中文网

php中文网

发布时间:2016-06-07 15:09:55

|

1166人浏览过

|

来源于php中文网

原创

Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。当然在百度百科上这种方法在Nutch1.2之后,已经不再适合这样描述Nutch了,因为在1.2版本之后,Nutch专注的只是爬取数据,而全文检索的部分彻底

Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。当然在百度百科上这种方法在Nutch1.2之后,已经不再适合这样描述Nutch了,因为在1.2版本之后,Nutch专注的只是爬取数据,而全文检索的部分彻底的交给Lucene和Solr,ES来做了,当然因为他们都是近亲关系,所以Nutch抓取完后的数据,非常easy的就能生成全文索引。 

下面散仙,进入正题,Nutch目前最新的版本是2.2.1,其中2.x的版本支持gora提供多种存储方式,1.x版本最新的是1.8只支持HDFS存储,散仙在这里用的还是Nutch1.8,那么,散仙为什么选择1.x系列呢? 这其实和自己的Hadoop环境有关系,2.x的Nutch用的Hadoop2.x的版本,当然如果你不嫌麻烦,你完全可以改改jar的配置,使Nutch2.x跑在Hadoop1.x的集群上。使用1.x的Nutch就可以很轻松的跑在1.x的hadoop里。下面是散仙,本次测试Nutch+Hadoop+Solr集群的配置情况: 

序号 名称 职责描述
1 Nutch1.8 主要负责爬取数据,支持分布式
2 Hadoop1.2.0 使用MapReduce进行并行爬取,使用HDFS存储数据,Nutch的任务提交在Hadoop集群上,支持分布式
3 Solr4.3.1 主要负责检索,对爬完后的数据进行搜索,查询,海量数据支持分布式
4 IK4.3 主要负责,对网页内容与标题进行分词,便于全文检索
5 Centos6.5 Linux系统,在上面运行nutch,hadoop等应用
6 Tomcat7.0 应用服务器,给Solr提供容器运行
7 JDK1.7 提供JAVA运行环境
8 Ant1.9 提供Nutch等源码编译
9 屌丝软件工程师一名 主角



下面开始,正式的启程 
1, 首先确保你的ant环境配置成功,一切的进行,最好在Linux下进行,windows上出问题的几率比较大,下载完的nutch源码,进入nutch的根目录下,执行ant,等待编译完成。编译完后,会有runtime目录,里面有Nutch启动的命令,local模式和deploy分布式集群模式
 


Nutch1.8+Hadoop1.2+Solr4.3分布式集群配置 

Nutch1.8+Hadoop1.2+Solr4.3分布式集群配置
2, 配置nutch-site.xml加入如下内容: 









  http.agent.name
  mynutch




  http.robots.agents
  mynutch,*
  The agent strings we'll look for in robots.txt files,
  comma-separated, in decreasing order of precedence. You should
  put the value of http.agent.name as the first agent name, and keep the
  default * at the end of the list. E.g.: BlurflDev,Blurfl,*
  



  plugin.folders
  
     ./src/plugin
      
     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, 在hadoop集群上创建urls文件夹和mydir文件夹 
,前者用于存储种子文件地址,后者存放爬取完后的数据。 
hadoop fs -mkdir urls --创建文件夹 
hadoop fs -put  HDFS路径 本地路径  --上传种子文件到HDFS上。 
hadoop fs -ls  /      ---查看路径下内容 

Nutch1.8+Hadoop1.2+Solr4.3分布式集群配置
4,配置好hadoop集群,以及它的环境变量HADOOP_HOME这个很重要,Nutch运行时候,会根据Hadoop的环境变量,提交作业。 

export  HADOOP_HOME=/root/hadoop1.2
export PATH=$HADOOP_HOME/bin:$PATH 
ANT_HOME=/root/apache-ant-1.9.2
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/root/jdk1.7
export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 

配置完成之后,可以使用which hadoop命令,检测是否配置正确: 
[root@master bin]# which hadoop
/root/hadoop1.2/bin/hadoop
[root@master bin]# 

5, 配置solr服务,需要将Nutch的conf下的schema.xml文件,拷贝到solr的里面,覆盖掉solr原来的schema.xml文件,并加入IK分词,内容如下: 


    
    


    
         
        
        
        

			
			
    
    
      
        
        
        
        
      
      
        
         
		 
         
        
      
    
			
			
			
			
			
	
      
        
        
        
        
      
      
        
        
        
        
      
    
			
         
        
            
                
                
                
            
        
    
    
	
	 
	
        

        
        
		
        
        

        
        
        
        
        
        
        

        
        

        
        
        
        
        

        
        

        
        

        
        
        
        
        
        

        
        
            
            
        
    
    id
    content
    


6, 配置好后,进行nutch的/root/apache-nutch-1.8/runtime/deploy/bin目录下 

执行如下命令: 
./crawl urls mydir http://192.168.211.36:9001/solr/   2 
启动集群抓取任务。 
抓取中的MapReduce截图如下: 

Nutch1.8+Hadoop1.2+Solr4.3分布式集群配置
抓取完,我们就可以去solr中查看抓取的内容了,截图如下: 

Nutch1.8+Hadoop1.2+Solr4.3分布式集群配置
至此,一个简单的抓取,搜索系统就搞定了,非常轻松,使用都是Lucene系列开源的工程。 

总结:配置过程中遇到几个比较典型的错误,记录如下: 
java.lang.Exception: java.lang.RuntimeException: Error in configuring object
	at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:354)
Caused by: 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)
	at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:426)
	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:366)
	at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:223)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:88)
	... 11 more
Caused by: 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)
	at org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java:34)
	... 16 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:88)
	... 19 more
Caused by: java.lang.RuntimeException: x point org.apache.nutch.net.URLNormalizer not found.
	at org.apache.nutch.net.URLNormalizers.(URLNormalizers.java:123)
	at org.apache.nutch.crawl.Injector$InjectMapper.configure(Injector.java:74)
	... 24 more
2013-09-05 20:40:49,329 INFO  mapred.JobClient (JobClient.java:monitorAndPrintJob(1393)) -  map 0% reduce 0%
2013-09-05 20:40:49,332 INFO  mapred.JobClient (JobClient.java:monitorAndPrintJob(1448)) - Job complete: job_local1315110785_0001
2013-09-05 20:40:49,332 INFO  mapred.JobClient (Counters.java:log(585)) - Counters: 0
2013-09-05 20:40:49,333 INFO  mapred.JobClient (JobClient.java:runJob(1356)) - Job Failed: NA
Exception in thread "main" java.io.IOException: Job failed!
	at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1357)
	at org.apache.nutch.crawl.Injector.inject(Injector.java:281)
	at org.apache.nutch.crawl.Crawl.run(Crawl.java:132)
	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
	at org.apache.nutch.crawl.Crawl.main(Crawl.java:55)
	==========================================================================
	解决方法:在nutch-site.xml里面加入如下配置。
	
  plugin.folders
  ./src/plugin
  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.

	
	


在执行抓取的shell命令时,发现 
使用 bin/crawl urls mydir http://192.168.211.36:9001/solr/   2 命令有时候会出现,一些HDFS上的目录不能正确访问的问题,所以推荐使用下面的这个命令: 

./crawl urls mydir http://192.168.211.36:9001/solr/   2 


http://itindex.net/detail/49582-nutch1.8-hadoop1.2-solr4.3

倍塔塞司
倍塔塞司

AI职业规划、AI职业测评、定制测评、AI工具等多样化职业类AI服务。

下载

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

2

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

76

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

73

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

67

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

19

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 5万人学习

Git 教程
Git 教程

共21课时 | 3.2万人学习

Excel 教程
Excel 教程

共162课时 | 14.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号