hadoop+nutch+solr搜索引擎配

来源:互联网 发布:粉笔做题数据怎么清零 编辑:程序博客网 时间:2024/04/27 13:17

1.版本
(1)hadoop—>hadoop-1.2.1
(2)nutch—>nutch-1.6(release-1.6)
(3)solr—>solr-4.2

2.测试所用系统
ubuntu ,Mac os
所有的软件都部署在服务器(ubuntu系统)上,测试时我是用mac os系统通过ssh直接远程连接到服务器进行操作的,这里有一个问题需要注意,mac os是自带ssh工具的,你可以在终端中通过以下命令来实现ssh远程登录:
ssh -t hduser@192.168.1.112 -p 22
hduser—>登录用户名 192.168.1.112—>远程机器IP 22—>端口号

3.安装java,在每一台机器上都安装java,由于本次服务器是用的ubuntu系统,因此可以通过终端直接安装
sudo apt-get install default-jdk
安装完成之后,设置java环境变量
sudo vi /etc/profile
在文件为末尾添加下面代码:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64    export JRE_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

其中java-7-openjdk-amd64为系统中java的安装路径,可通过find /usr/lib -name java查找;
source /etc/profile使其生效,在终端输入命令java -version如果显示如下类似效果则表示java安装成功。

hduser@slave1:~/spider$ java -versionjava version "1.7.0_79"OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu0.14.04.2)OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

4.分布式系统部署准备
(1)本次测试中,我用的是三台机器来部署分布式系统,它们的IP和机器名称如下:
master—>192.168.1.112
slave1—>192.168.1.117
slave2—>192.168.1.119
(2)建立用户组,在三台机器上分别进行相同的操作
sudo addgroup hadoop—>建立hadoop用户组
sudo adduser —ingroup hadoop hduser—>在hadoop组新建用户hduser
注意三台机器上用户组、用户名、登录密码要保持一致。
(3)在/etc/hostname修改机器名,分别登录三台机器,编辑/etc/hostname内容为master,slave1,slave2,重启系统生效。
(4)修改每台机器/etc/hosts,修改为以下内容

192.168.1.11`2      master192.168.1.117       slave1192.168.1.119       slave2

(5)在机器上配置无密码登录(三台机器操作相同)
以hduser用户登录系统;
下载ssh,sudo apt-get install openssh-server;
测试登录到其它的机器, ssh master,如果成功那么表示ssh安装无误
生成登录共钥,并且复制到其他的机器上,
ssh-keygen -t -p “” -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
scp -r ~/.ssh hduser@slave1:~
scp -r ~/.ssh hduser@slave2:~

ssh登录测试无密码登录效果,ssh slave1第一次登录需要密码,过后就不需要输入密码即可登录。
(6)在master上下载hadoop-1.2.1,nutch-1.6,solr-4.2
hadoop-1.2.1,solr-4.2版本在其官网即可下载,nutch-1.6版本需要通过svn下载,假设它们都放在根目录下,具体步骤如下:
下载svn,sudo apt-get install subversion
下载ant,sudo apt-get install ant
通过svn下载nutch-1.6安装包,svn co https://svn.apache.org/repos/asf/nutch/tags/release-1.6
将安装包重命名为nutch, mv release-1.6 nutch

5.nutch配置和部署
nutch配置在master机器上即可
(1)修改nutch下conf/regex-urlfilter.xml.template

#accept anything.+
改为你需要爬取网页的url,如(http://www.shixibang.net)+^http://([a-z0-9]*\.)*shixibang.net/

(2)修改conf/nutch-site.xml.template,添加http代理

<property>        <name>http.agent.name</name>        <value>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36</value></property>

(3)构建nutch
cd nutch
ant
该构成时间比较长可能要花10多分钟。

6.hadoop分布式部署
(1)解压hadoop-1.2.1.tar,重新命名为hadoop
tar zxvf hadoop-1.2.1.tar
mv hadoop-1.2.1 hadoop
(2)在/home/hduser/.bashrc.sh中追加(三台机器上都需配置)
export PATH=/home/hduser/hadoop/bin:$PATH
也可以在三台机器的/etc/profile中添加上面代码,重新登录主机生效
ssh localhost
(3)修改hadoop的配置文件
cd hadoop
vi conf/hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

vi conf/core-site.xml

<property>        <name>fs.default.name</name>        <value>hdfs://master:9000</value></property><property>        <name>hadoop.tmp.dir</name>        <value>/home/hadoop/tmp</value></property>

vi conf/hdfs-site.xml

<property>      <name>dfs.name.dir</name>      <value>/home/hduser/sys/name</value></property><property>      <name>dfs.data.dir</name>      <value>/home/hduser/sys/data</value></property><property>      <name>dfs.replication</name>      <value>3</value></property>

vi conf/mapred-site.xml

<property>      <name>mapred.job.tracker</name>      <value>master:9001</value></property><property>       <name>mapred.tasktracker.map.tasks.maximum</name>      <value>4</value>    </property> <property>       <name>mapred.tasktracker.reduce.tasks.maximum</name>      <value>4</value></property><property>      <name>mapred.system.dir</name>      <value>/home/hduser/sys/system</value></property><property>      <name>mapred.local.dir</name>      <value>/home/hduser/sys/local</value></property>

vi conf/masters
master

vi conf/slaves
master
slave1
slave2

(4)将master上配置好的hadoop传到slave1,slave2上
scp -r ~/hadoop hduser@slave1:~/
scp -r ~/hadoop hduser@slave2:~/
(5)格式化节点并启动集群
cd ~/hadoop
bin/hadoop namenode -format
bin/start-all.sh

(6)查看集群启动情况
jps
如果正常启动,将会看到系统上启动的线程:
master上:NameNode,SecondBinaryNode,tasktracker
slave1和slave2上:datdanode,jobtracker
(7)停止集群
bin/stop-all.sh

7.solr与nutch结合,并添加中文分词
(1)下载mmseg4j-1.9.1.v20130120-SNAPSHOT.zip(现在需要翻墙)
将压缩包里面的dist文件夹里面的jar解压,将解压出来com和data文件夹拖到lukeall-4.0.0-ALPHA.jar里面
启动luke,在Search选项卡的Analysis里面选择com.chenlb.mmseg4j.analysis.ComplexAnalyzer
(2)安装配置SOLR4.2
解压solr-4.2到根目录~下
tar -xzvf solr-4.2.0.tgz
mv solr-4.2.0 solr4
cd solr4/example

复制nutch的conf目录中的schema-solr4.xml文件到solr/collection1/conf目录,改名为schema.xml,覆盖原来文件
修改solr/collection1/conf/schema.xml,在下增加:<field name="_version_" type="long" indexed="true" stored="true"/>
(3)给SOLR4.2配置分词器mmseg4j
wget https://mmseg4j.googlecode.com/files/mmseg4j-1.9.1.v20130120-SNAPSHOT.zip
unzip mmseg4j-1.9.1.v20130120-SNAPSHOT.zip -d mmseg4j-1.9.1
将mmseg4j-1.9.1/dist/*.jar复制到solr/collection1/lib目录
将schema.xml文件中的
 <tokenizer class="solr.WhitespaceTokenizerFactory"/>
和
 <tokenizer class=“solr.StandardTokenizerFactory"/>
替换为
 <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex"/>
(4)运行SOLR并提交索引
启动SOLR服务器
 java -jar start.jar &
访问Web界面
http://master:8983/solr/
8.运行系统
(1)启动hadoop集群
cd ~/hadoop
bin/start-all.sh

(2)启动solr服务
cd ~/solr4/example
java -jar start.jar &

(3)创建nutch抓取数据种子url,并上传到集群上
mkdir ~/urls
cd ~/urls
touch seed.txt
vi seed.txt

添加 http://www.shixibang.net(对应~/nutch/conf/regex-urlfilter.txt中设置)
将urls上传到集群上
hadoop fs ~/urls .
(4)启动nutch,分布式抓取命令,并建立索引
cd ~/nutch/runtime/deploy
bin/nutch crawl urls -solr http://master:8983/solr -dir crawl -depth 3 -topN 1000

0 0
原创粉丝点击