3. 安装配置hadoop

Report
分布式搜索引擎
Hadoop+Nutch+Solr
工作简述
• 将3台PC使用无线网络连接,组成hadoop集
群
• 在集群上配置nutch组成一个分布式爬虫器
• 在集群上配置solr,对爬下来的网页进行索
引生成,放在solr服务器上
平台体系架构
平台体系架构
Hadoop
Solr
Nutch
HDFS
• Use the concept of block
• Namenode & Datanode
• Reading data
HDFS
• Writing data
Nutch
• 简介:
Nutch 是一个开源Java 实现的搜索引擎。它提供了我
们运行自己的搜索引擎所需的全部工具。它由爬虫
crawler和查询searcher两部分组成。
Crawler主要用于从网络上抓取网页并为这些网页建立
索引。Searcher主要利用这些索引检索用户的查找关键词
来产生查找结果。
除去索引部分,两者之间的耦合度很低。这样的主要
目的是为了使两部分可以分布式配置在硬件平台上,例
如将Crawler和Searcher分别放在两个主机上,这样可以提
升性能。
Solr
• Solr是一个独立的企业级搜索应用服务器,
它对外提供类似于Web-service的API接口。
用户可以通过http请求,向搜索引擎服务器
提交一定格式的XML文件,生成索引;也可
以通过Http get操作提出查找请求,并得到X
ML格式的返回结果;
搭建过程
•Hadoop
•Nutch
•Solr
输入
功能
效果
Hadoop平台搭建过程
1. 安装jdk
 原因:hadoop本身的运行需要java虚拟机,所以要先在
ubuntu系统中安装好jdk以进行支持。
• 安装过程:比较简单,在下载完了jdk之后,解压到自定
义的目录,并在终端中输入以下命令:
vim ~/.bashrc
在打开的文档中插入:
export
export
export
export
JAVA_HOME=/usr/lib/jvm/java-7-sun
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
PATH=${JAVA_HOME}/bin:$PATH
保存后执行source ~/.bashrc 以完成配置
在命令行中敲入java –version 可以查看配置的java版本
Hadoop平台搭建过程
2. 配置ssh
 原理:ssh是建立在应用层和传输层基础上的安全协议,
hadoop需要ssh来在组成集群的计算机之间建立联系,从
而能够协同操作,共享数据。
 配置过程:
1. sudo apt-get install ssh(ubuntu自带的软件获取)
2. sudo mkdir .ssh(创建存放密钥的文件夹)
3. ssh-keygen (master机生成密钥)
4. cp id_rsa.pub authorized_keys
(将公钥内容复制到authorized_keys文件 )
5. chmod 644 authorized_keys
(设定authorized_keys文件属性为-rw-r--r--,即文件属主拥有读写权限,
与文件属主同组的用户拥有读权限,其他人拥有读权限)
6. scp authorized_keys slave1:/home/Aki/.ssh
(将master机上生成的密钥拷贝到从机slave1上)
scp authorized_keys slave2:/root/.ssh
(将master机上生成的密钥拷贝到从机slave2上)
7. ssh slave1
(测试ssh是否配置成功,如果配置成功,这时输入密码就能登录到从机
slave1上,对slave1机上的文档进行操作)
注:在进行ssh配置前,要将配置的三台机器的IP地址都加入到/etc/hosts
表中,这样机器间才能正确通信。
Hadoop平台搭建过程
3. 安装配置hadoop
 原理:一个分布式系统基础架构,也是能够对大量数据进行
分布式处理的软件框架。
它包含以下三个部分:
1. Hadoop Common
用来支持一些子项目的基本功能:如IO操作,进程间通信等等。
2. Hadoop Distributed File System (HDFS™)
一个分布式的文件系统,由各个节点的存储块一起组成,存放进行任
任务所需的文件,各个节点都可以访问。
3. Hadoop MapReduce
一个软件框架,帮助集群对大量的数据进行分布式的处理。
Hadoop平台搭建过程
3. 安装配置hadoop

1.
2.
•
•
•
•
•
配置过程:
下载hadoop的软件包,解压放到根目录下。
sudo gedit /etc/profile 在文件末尾添加
HADOOP_HOME=/root/hadoop
export HADOOP_HOME
export HADOOP=$HADOOP_HOME/bin
export PATH=$HADOOP:$PATH
(以上操作是将hadoop的路径添加到系统变量中)
Hadoop平台搭建过程
3. 安装配置hadoop
 配置过程:
3. 修改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保存的是从机名
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,观察各个任务的执行
访问hdfs文件系统
访问hdfs文件系统
访问jobtracker
访问jobtracker(已经有两个任务完成了)
访问jobtracker(查看一个已经完成的任务)
Nutch搭建过程
• 配置过程
1、下载并解压nutch到根目录下
2、 配置/root/nutch/conf目录下的nutch-site.xml文件
在经过编译运行之后,nutch-site.xml的修改内容会复制到
nutch-default.xml中。也可以直接修改nutch-default.xml中的
内容,但官方不推荐这样做。
nutch-default.xml 是核心配置文件,其中配置了一些用户的
个性化设置,它的作用是引导nutch的job按照开发者的规定
执行。
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|jp
eg|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
-.
其中设置了一些爬网页时的过滤信息,将一部分不符合要求
的网页直接过滤,以保证爬下来的网页的有效性。
Nutch搭建过程
4、在/root/nutch目录下创建一个urls的目录,并在下面建一
个urls种子文件,并在文件中输入你爬网页的起始网址,如:
www.163.com
5、sudo apt-get install ant(ubuntu自带的软件获取)
ANT本身就是这样一个流程脚本引擎,用于自动化调用程序
完成项目的编译,打包,测试等。类似于linux的makefile文
件。可以避免大项目的反复编译、打包、测试等。
//ant指令命令
6、ant
使用ant来编译nutch以使得我们之前的配置生效。
Nutch搭建过程
//爬网页的指令
7、将urls种子文件导入Nutch的crawldb,在/root/nutch目录
下执行bin/nutch inject crawl/crawldb urls
这部分交给hadoop通过MapReduce完成,要执行比较长的时
间
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).
Nutch搭建过程
等待hadoop工作执行完。
至此,nutch的安装、配置以及爬网页(建立索引)的工作完
成。
Solr搭建过程
• 1. 原理
Solr是一个高性能,采用Java开发的,基于Lucene的全文
搜索服务器。用户可以通过http请求,向搜索引擎服务器提
交一定格式的XML文件,生成索引文件。也可以通过在solr的
网页上键入关键字,提出申请请求,并得到XML格式的返回
结果。
nutch在hadoop的平台上完成了对网页的爬取和初步的索
引建立之后,将所得的索引交给solr进行最后一步的处理,
从而得到最终的索引文件。这时,我们可以在solr的网页界
面中输入搜索的关键字,solr会在索引中匹配我们输入的关
键字,从而得到相关的网页链接。
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服务
运行过程
Hadoop
Solr
Nutch
运行过程
• 启动hadoop
• 启动solr服务,开启后不要关闭终端
• 在nutch的deploy文件夹下执行以下指令
~/nutch/src/bin/nutch crawl hdfs_path/urls.txt -solr
http://ip:8983/solr/ -dir hdfs_path/crawled -depth 3 -topN
1000
这条指令的意思是以hdfs中存储的文件urls.txt作为种子来进行网页
爬取,爬取的最大深度为3层,每一次抓取的网页时排名前1000的网页,
并且把生成的索引信息传给http://ip:8983/solr/,也就是传给solr来进
行处理。
 ~/nutch/src/bin/nutch solrindex
http://ip:8983/solr/ hdfs_path/crawled/crawldb/
hdfs_path/crawled/linkdb/ -dir hdfs_path/crawled/segments/
生成的index在~/solr/example/solr/data/index/下面
 这样就完成的任务的输入,我们只需等待任务进行完成即可

爬取网页过程中的任务
Solr的搜索界面
种子一共有三个,分别是:
www.163.com
www.hoop.com
www.tongji.edu.cn
搜索关键字是:麦迪
搜索关键字是:同济
注意事项
• Nutch 源码包必须经过ant之后才能使用
• Nutch和Solr也必须配置到各节点
心得感想
总结:
• 在任务的执行过程中,可以明显的发现消耗的时间大部分
花在任务的分配和部署上,实际进行map和reduce所占的
时间并不多,所以,在hadoop的集群中,各个计算机之间
的通信的带宽是提升集群能的一个关键。
• 进一步,由文件系统中可以看到,hadoop的分布式文件系
统是把文件分块存储的。就算是很小的几kb的文件也会被
划分到单独的一个64M大小的存储块中。也是这个缘故,
hadoop并不适合对小文件进行处理(如网页的链接),这
也符合hadoop能够利用低性能计算机,处理大数据的特点。

similar documents