1 / 39

分布式搜索引擎

分布式搜索引擎. Hadoop+Nutch+Solr. 工作简述. 将 3 台 PC 使用无线网络连接,组成 hadoop 集群 在集群上配置 nutch 组成一个分布式爬虫器 在集群上配置 solr ,对爬下来的网页进行索引生成,放在 solr 服务器上. 平台体系架构. 平台体系架构. HDFS. Use the concept of block Namenode & Datanode Reading data. HDFS. Writing data. Nutch. 简介:

Download Presentation

分布式搜索引擎

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 分布式搜索引擎 Hadoop+Nutch+Solr

  2. 工作简述 • 将3台PC使用无线网络连接,组成hadoop集群 • 在集群上配置nutch组成一个分布式爬虫器 • 在集群上配置solr,对爬下来的网页进行索引生成,放在solr服务器上

  3. 平台体系架构 平台体系架构

  4. HDFS • Use the concept of block • Namenode & Datanode • Reading data

  5. HDFS • Writing data

  6. Nutch • 简介: Nutch是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。它由爬虫crawler和查询searcher两部分组成。 Crawler主要用于从网络上抓取网页并为这些网页建立索引。Searcher主要利用这些索引检索用户的查找关键词来产生查找结果。 除去索引部分,两者之间的耦合度很低。这样的主要目的是为了使两部分可以分布式配置在硬件平台上,例如将Crawler和Searcher分别放在两个主机上,这样可以提升性能。

  7. Solr • Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http get操作提出查找请求,并得到XML格式的返回结果;

  8. 搭建过程 • Hadoop • Nutch • Solr

  9. Hadoop平台搭建过程 • 安装jdk • 原因:hadoop本身的运行需要java虚拟机,所以要先在ubuntu系统中安装好jdk以进行支持。 • 安装过程:比较简单,在下载完了jdk之后,解压到自定义的目录,并在终端中输入以下命令: vim ~/.bashrc 在打开的文档中插入: export JAVA_HOME=/usr/lib/jvm/java-7-sun   export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib   export PATH=${JAVA_HOME}/bin:$PATH 保存后执行source ~/.bashrc以完成配置 在命令行中敲入java –version 可以查看配置的java版本

  10. Hadoop平台搭建过程 2. 配置ssh • 原理:ssh是建立在应用层和传输层基础上的安全协议,hadoop需要ssh来在组成集群的计算机之间建立联系,从而能够协同操作,共享数据。 • 配置过程: • sudo apt-get install ssh(ubuntu自带的软件获取) • sudomkdir .ssh(创建存放密钥的文件夹) • ssh-keygen(master机生成密钥) • cp id_rsa.pub authorized_keys (将公钥内容复制到authorized_keys文件 )

  11. 5. chmod644 authorized_keys (设定authorized_keys文件属性为-rw-r--r--,即文件属主拥有读写权限, 与文件属主同组的用户拥有读权限,其他人拥有读权限) 6. scpauthorized_keysslave1:/home/Aki/.ssh (将master机上生成的密钥拷贝到从机slave1上) scpauthorized_keysslave2:/root/.ssh (将master机上生成的密钥拷贝到从机slave2上) 7. sshslave1 (测试ssh是否配置成功,如果配置成功,这时输入密码就能登录到从机slave1上,对slave1机上的文档进行操作) 注:在进行ssh配置前,要将配置的三台机器的IP地址都加入到/etc/hosts表中,这样机器间才能正确通信。

  12. Hadoop平台搭建过程 3. 安装配置hadoop • 原理:一个分布式系统基础架构,也是能够对大量数据进行分布式处理的软件框架。 它包含以下三个部分: 1.HadoopCommon 用来支持一些子项目的基本功能:如IO操作,进程间通信等等。 2. Hadoop Distributed File System (HDFS™) 一个分布式的文件系统,由各个节点的存储块一起组成,存放进行任 任务所需的文件,各个节点都可以访问。 3. HadoopMapReduce 一个软件框架,帮助集群对大量的数据进行分布式的处理。

  13. Hadoop平台搭建过程 3. 安装配置hadoop • 配置过程: • 下载hadoop的软件包,解压放到根目录下。 • sudogedit /etc/profile 在文件末尾添加 • HADOOP_HOME=/root/hadoop • export HADOOP_HOME • export HADOOP=$HADOOP_HOME/bin • export PATH=$HADOOP:$PATH • (以上操作是将hadoop的路径添加到系统变量中)

  14. Hadoop平台搭建过程 3. 安装配置hadoop • 配置过程: • 修改hadoop的配置文件,在/root/hadoop/conf下 需要修改的文件如下: hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml masters slaves 其中 hadoop-env.sh中保存的是hadoop运行需要的环境变量 core-site.xml中保存的是master机的一些有关信息 hdfs-site.xml中保存的是分布式文件系统的有关信息 mapred-site.xml保存的是与map reduce有关的相关设置 masters则保存的主机名 slaves保存的是从机名

  15. Hadoop平台搭建过程 4. 完成hadoop的平台搭建 在主节点上完成了对hadoop配置之后,将配置好的整个hadoop软件包发送到其它计算机中,然后在主节点的hadoop/bin下执行这些命令: • ./namenode  -format 格式化namenode以进行初始化 • ./start-all.sh 启动hadoop • ./ dfsadmin -report 生成对当前集群的 如果之前的配置正确,就能看到namenode,datanode,jobtracker在报告中已经被正确的建立起来,则集群已经被正确的建立。我们能够访问以下的链接: http://namenode’s IP:50070 访问hdfs文件系统 http://namenode’s IP:50030 访问jobtacker,观察各个任务的执行

  16. 访问hdfs文件系统

  17. 访问hdfs文件系统

  18. 访问jobtracker

  19. 访问jobtracker(已经有两个任务完成了)

  20. 访问jobtracker(查看一个已经完成的任务)

  21. Nutch搭建过程 • 配置过程 1、下载并解压nutch到根目录下 2、配置/root/nutch/conf目录下的nutch-site.xml文件 在经过编译运行之后,nutch-site.xml的修改内容会复制到nutch-default.xml中。也可以直接修改nutch-default.xml中的内容,但官方不推荐这样做。 nutch-default.xml是核心配置文件,其中配置了一些用户的个性化设置,它的作用是引导nutch的job按照开发者的规定执行。

  22. Nutch搭建过程 3、配置/root/nutch/conf目录下的regex-urlfilter.txt文件改为如下内容: -^(https|telnet|file|ftp|mailto): # skip some suffixes -\.(swf|SWF|doc|DOC|mp3|MP3|WMV|wmv|txt|TXT|rtf|RTF|avi|AVI|m3u|M3U|flv|FLV|WAV|wav|mp4|MP4|avi|AVI|rss|RSS|xml|XML|pdf|PDF|js|JS|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 URLs containing certain characters as probable queries, etc. -[?*!@=] # allow urls in foofactory.fi domain +^http://([a-z0-9\-A-Z]*\.)*lucidimagination.com/ # deny anything else -. 其中设置了一些爬网页时的过滤信息,将一部分不符合要求的网页直接过滤,以保证爬下来的网页的有效性。

  23. Nutch搭建过程 4、在/root/nutch目录下创建一个urls的目录,并在下面建一个urls种子文件,并在文件中输入你爬网页的起始网址,如:www.163.com 5、sudo apt-get install ant(ubuntu自带的软件获取) ANT本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。类似于linux的makefile文件。可以避免大项目的反复编译、打包、测试等。 //ant指令命令 6、ant 使用ant来编译nutch以使得我们之前的配置生效。

  24. Nutch搭建过程 //爬网页的指令 7、将urls种子文件导入Nutch的crawldb,在/root/nutch目录下执行bin/nutch inject crawl/crawldburls 这部分交给hadoop通过MapReduce完成,要执行比较长的时间

  25. Nutch搭建过程 这部分要执行比较长的时间,其中包括几个步骤: • 1. 创建一个新的WebDb (admin db -create). • 2. 将抓取起始URLs写入WebDB中 (inject). • 3. 根据WebDB生成fetchlist并写入相应的segment(generate). • 4. 根据fetchlist中的URL抓取网页 (fetch). • 5. 根据抓取网页更新WebDb (updatedb). • 6. 循环进行3-5步直至预先设定的抓取深度。 • 7. 根据WebDB得到的网页评分和links更新segments (updatesegs). • 8. 对所抓取的网页进行索引(index). • 9. 在索引中丢弃有重复内容的网页和重复的URLs (dedup). • 10. 将segments中的索引进行合并生成用于检索的最终index(merge).

  26. Nutch搭建过程 等待hadoop工作执行完。 至此,nutch的安装、配置以及爬网页(建立索引)的工作完成。

  27. Solr搭建过程 • 1. 原理 Solr是一个高性能,采用Java开发的,基于Lucene的全文搜索服务器。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引文件。也可以通过在solr的网页上键入关键字,提出申请请求,并得到XML格式的返回结果。 nutch在hadoop的平台上完成了对网页的爬取和初步的索引建立之后,将所得的索引交给solr进行最后一步的处理,从而得到最终的索引文件。这时,我们可以在solr的网页界面中输入搜索的关键字,solr会在索引中匹配我们输入的关键字,从而得到相关的网页链接。

  28. Solr搭建过程 • 2. 安装 solr3.6的安装比较简单,只需在网页上得到solr3.6的软件包,解压到根目录下。然后 • 修改solr/conf/solrconfig.xml文件 <str name=“df”>text</str>都替换为 <str name="df">content</str> 这是因为新版本的搜索程序修改,但是配置文件未更新造成的错误 • 将nutch/conf下的文件全部拷贝到solr/conf下,使nutch与solr能够没有错误的配合 • 将配置好的solr发送到所有的机器上,因为nutch+solr在最后一步建立索引的过程中仍然是分布式的,所有机器都需要开启solr服务来进行索引的建立。 • 在/solr/example下执行java -jar start.jar,从而开启solr服务

  29. 运行过程

  30. 运行过程 • 启动hadoop • 启动solr服务,开启后不要关闭终端 • 在nutch的deploy文件夹下执行以下指令 • ~/nutch/src/bin/nutch crawl hdfs_path/urls.txt -solr http://ip:8983/solr/ -dirhdfs_path/crawled -depth 3 -topN1000 这条指令的意思是以hdfs中存储的文件urls.txt作为种子来进行网页爬取,爬取的最大深度为3层,每一次抓取的网页时排名前1000的网页,并且把生成的索引信息传给http://ip:8983/solr/,也就是传给solr来进行处理。 • ~/nutch/src/bin/nutchsolrindex http://ip:8983/solr/  hdfs_path/crawled/crawldb/ hdfs_path/crawled/linkdb/  -dirhdfs_path/crawled/segments/ 生成的index在~/solr/example/solr/data/index/下面 • 这样就完成的任务的输入,我们只需等待任务进行完成即可

  31. 爬取网页过程中的任务

  32. Solr的搜索界面 种子一共有三个,分别是: www.163.com www.hoop.com www.tongji.edu.cn

  33. 搜索关键字是:麦迪

  34. 搜索关键字是:同济

  35. 注意事项 • Nutch源码包必须经过ant之后才能使用 • Nutch和Solr也必须配置到各节点

  36. 心得感想 • 总结: • 在任务的执行过程中,可以明显的发现消耗的时间大部分花在任务的分配和部署上,实际进行map和reduce所占的时间并不多,所以,在hadoop的集群中,各个计算机之间的通信的带宽是提升集群能的一个关键。 • 进一步,由文件系统中可以看到,hadoop的分布式文件系统是把文件分块存储的。就算是很小的几kb的文件也会被划分到单独的一个64M大小的存储块中。也是这个缘故,hadoop并不适合对小文件进行处理(如网页的链接),这也符合hadoop能够利用低性能计算机,处理大数据的特点。

More Related