整合Nutch2.3.1/Hadoop2.5.2/Hbase1.1.5/Solr4.10.4構建搜尋引擎:安裝及執行
第一次寫部落格,之前從來沒有寫過部落格因為不知道要寫什麼,這次寫部落格是因為自己在學習東西的時候遇見很多問題,國內的技術資料基本都是比較老的,要不就是nutch2.x整合hadoop1.x的,沒有找到整合hadoop2.x的,對hbase的整合度也很少,自己在學習的時候,經常要翻牆看國外的資料,雖然自己的英文水平有限,但是隻能硬著頭皮看,更多看的是官方給的文件。我建議學習的時候多看看官方文件,官方文件給出了很權威的指導。在這裡謝謝那些幫助過我的人們。囉嗦了這麼多,開始介紹如何安裝吧!
要用這些東西都應該知道為什麼要用它們吧。
簡單介紹下nutch,什麼是nutch?
Nutch 是一個開源java實現的搜尋引擎。它提供了我們執行自己的搜尋引擎所需的全部工具。包括全文搜尋和Web爬蟲。Nutch為我們提供了這樣一個不同的選擇.。
Nutch誕生於2002年8月,是Apache旗下的一個用Java實現的開源搜尋引擎專案,自Nutch1.2版本之後,Nutch已經從搜尋引擎演化為網路爬蟲,接著Nutch進一步演化為兩大分支版本:1.X和2.X,這兩大分支最大的區別在於2.X對底層的資料儲存進行了抽象以支援各種底層儲存技術。
1.x版本是基於Hadoop架構的,底層儲存使用的是HDFS(Hadoop實現了一個分散式檔案系統(Hadoop Distributed File System),簡稱HDFS。),而2.x通過使用ApacheGora(ApacheGora是一個開源的ORM框架,主要為大資料提供記憶體資料模型與資料的持久化。目前Gora支援對於列資料、key-value資料,文件資料與RDBMS資料的儲存,還支援使用Apache 來對對大資料進行分析。),使得Nutch可以訪問HBase、Accumulo、Cassandra、MySQL、DataFileAvroStore、AvroStore等NoSQL。
我們現在開始介紹nutch的安裝。
我就不介紹安裝linux了,這些軟體都是要部署到linux上的。
1、先自己編譯nutch,下載nutch原始碼,nutch是用svn管理所以要下載svn,安裝svn後,http://svn.apache.org/repos/asf/nutch/tags/release-2.3.1/通過這個連結可以下載nutch,也可以直接下載gz包。
2、編譯原始碼要用到ant
所以先安裝ant,命令:yum install ant,ant構建後生成runtime和build,我使用的是Centos。ubuntu的命令是$ sudo apt-getinstall ant,
在nutch2.x以後,你執行ant後構建出來的runtime在local模式下不會生成data目錄了(中間機制我不太瞭解,還在學習中),而且2.x以後不再有bin目錄,而是有ivy目錄,所以要整合hbase來作為資料儲存。要用hbase作為儲存就要修改配置檔案。
現在開始修改配置檔案進入conf目錄,修改nutch-site.xml檔案,如果你是通過svn下載的話,nutch-site.xml是不存在的,是有個nutch-site.xml.template這個檔案,修改成nutch-site.xml,就可以新增配置項了。
<configuration>
<property>
<name>parser.character.encoding.default</name>
<value>UTF-8</value>
<description>The character encoding to fall back towhen no other information
is available</description>
</property>
<property>
<name>storage.data.store.class</name>
<value>org.apache.gora.hbase.store.HBaseStore</value>
<description>Default class for storingdata</description>
</property>
<property>
<name>http.agent.name</name>
<value>Your Nutch Spider</value>
</property>
<property>
<name>http.accept.language</name>
<value>ja-jp,en-us,en-gb,en;q=0.7,*;q=0.3</value>
<description>Value of the “Accept-Language” requestheader field.
This allows selecting non-English language as default oneto retrieve.
It is a useful setting for search engines build forcertain national group.
</description>
</property>
<property>
<name>plugin.includes</name>
<value>protocol-http|urlfilter-regex|parse-(html|tika)|index-(basic|anchor)|indexer-solr|scoring-opic|urlnormalizer-(pass|regex|basic)</value>
<description>Regular expression namingplugin directory names to
include. Any plugin not matching thisexpression is excluded.
In any case you need at least include thenutch-extensionpoints plugin. By
default Nutch includes crawling just HTML andplain text via HTTP,
and basic indexing and search plugins. In order touse HTTPS please enable
protocol-httpclient, but be aware of possibleintermittent problems with
the
underlying commons-httpclient library.
</description>
</property>
<property>
<name>io.serializations</name>
<value>org.apache.hadoop.io.serializer.WritableSerialization</value>
<description>A list of serialization classesthat can be used for
obtaining serializers anddeserializers.</description>
</property>
</configuration>
然後修改gora.properties檔案
新增這句話:gora.datastore.default=org.apache.gora.hbase.store.HBaseStore
然後進入ivy這個檔案修改ivy.xml檔案。
<dependencyorg="org.apache.solr" name="solr-solrj" rev="4.10.4" conf="*->default"/>
在nutch裡本來這句話rev版本是4.6.0,要修改成你solr的版本。
<dependencyorg="org.apache.gora" name="gora-hbase"rev="0.6.1" conf="*->default" /> 這句話本來是註釋的,去掉註釋。
<dependencyorg="org.apache.hbase" name="hbase-common"rev="0.98.8-hadoop2" conf="*->default" /> 下面加上這句話。看官方解釋是說是gora-hbase 0.6.1的一個bug,這句話不能修改成你用的hbase版本,我測試過,會出錯。
nutch就需要修改這三個檔案。然後ant編譯,這個編譯過程比較耗時,因為要下載你說需的各種jar包。
nutch配置完成後接下來配置hbase,我使用的是hbase1.1.5版本。hbase的下載安裝我就不解釋了。
hbase需要修改兩個檔案。一個是hbas-site.xml、一個是hbase-env.sh
先修改habse-site.xml
<configuration></configuration> 中新增:
<property>
<name>hbase.rootdir</name>
<value>file:///xiaolu/hbase-1.1.5/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/xiaolu/hbase-1.1.5/zookeeper</value>
</property>
然後儲存。
接下來修改hbase-env.sh
因為0.89.5以後版本hbase就不會自動掃描JAVA_HOME,所以要自己配置JAVA_HOME路徑。
export JAVA_HOME=/usr/,這裡是你自己的得java路徑。
這是單機模式不依賴hadoop的情況下配置。
如果要依賴hadoop的需要在habse-site.xml上新增
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://10.26.31.47:9000/hbase</value>//這個是配置的hadoop的core-site.xml指定HDFS的namenode的通訊地址
</property>
hbase配置完成。
接下來就是配置hadoop
hadoop2.x以後要修改5個配置檔案,(我說的是偽分散式,分散式暫時先不做講解)
1、修改主機名和IP的對映關係(linux是Centos)
vim /etc/hosts 10.26.31.47 xiaolu
2、關閉防火牆
檢視防護牆狀態 serviceiptables status
關閉 service iptables stop
檢視防火牆開機啟動狀態 chkconfig iptables--list
關閉開機啟動 chkconfig iptables off
如果之前配置過就不需要了,在最開始就可以配置寫著。
3、配置hadoop
所需要修改的檔案是:hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml這五個。
3.1 修改hadoop-env.sh
exportJAVA_HOME=/usr/java/jdk1.7.0_65
3.2修改core-site.xml
<!--配置namenode-->.
<property>
<name>fs.defaultFS</name>
<value>hdfs://xiaolu:9000</value>
</property>
<!-- 指定hadoop執行時產生檔案的儲存目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/xiaolu/hadoop-2.4.1/tmp</value>
</property>
3.3修改hdfs-site.xml
<!-- 指定HDFS副本的數量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
3.4修改mapred-site.xml (mv mapred-site.xml.template mapred-site.xml)
<!-- 指定mr執行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3.5修改yarn-site.xml
<!-- 指定esourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>itcast01</value>
</property>
<!--reducer獲取資料的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
4、講hadoop新增到環境變數
vim/etc/proflie
exportJAVA_HOME=/usr/java/jdk1.7.0_65
exportHADOOP_HOME=/itcast/hadoop-2.4.1
exportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source/etc/profile
5、格式化namenode(是對namenode進行初始化)
hdfsnamenode -format (hadoop namenode -format)
6、啟動hadoop
先啟動HDFS
sbin/start-dfs.sh
再啟動YARN
sbin/start-yarn.sh
在1.x的時候是通過sbin/start-all.sh啟動的,在2.x後這個命令過時了。
7、檢查是否啟動
使用jps命令驗證
27408NameNode
28218 Jps
27643SecondaryNameNode
28066NodeManager
27803ResourceManager
27512DataNode
這樣就是全部啟動成功。
http://10.26.31.47:50070 (HDFS管理介面)
http:// 10.26.31.47:8088 (MR管理介面)
接下來就是配置solr。
solr最簡單直接把nutch的conf目錄下面的schema.xml複製到solr的/solr/solr-4.10.4/example/solr/collection1/conf下面就行了。我說的是這是solr5.x之前的版本。
這樣就算配置完成了,如果有什麼寫的不當的地方請給我指正謝謝。可以通過QQ:895175533,來給我發信息。或者郵件。本人也是初學,希望能給正在學習的人帶來一些簡單地幫助,也希望大神不要笑話。