您的位置:首页 > 运维架构

hadoop+nutch+solr搜索引擎配

2015-08-14 15:22 399 查看
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 -version
java 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      master
192.168.1.117       slave1
192.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[/code] 
将安装包重命名为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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息