1. 程式人生 > >整合Nutch2.3.1/Hadoop2.5.2/Hbase1.1.5/Solr4.10.4構建搜尋引擎:安裝及執行

整合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,來給我發信息。或者郵件。本人也是初學,希望能給正在學習的人帶來一些簡單地幫助,也希望大神不要笑話。