閱讀678 返回首頁    go 阿裏雲 go 技術社區[雲棲]


hadoop1.1.2+hbase0.92.2+nutch2.2.1+solr4.6.1配置全記錄

    花了兩天時間,總算把這些東西弄好了,環境是vmware9虛擬機上的Ubuntu12.04_x86版。做了個簡單的測試,跑通了。不過還是有很多不明白的地方,後期再陸續記錄。

    目前樓主配的是單機模式,分布式模式中遇到的問題以後再做記錄。

    另外強烈的吐槽一下,有些版本的在官網上麵都找不到,搜了好久找到了某論壇資源,下載還要積分,鬱悶。我想說的是其實所有的版本都可以在這個地址上下載: https://archive.apache.org/dist/ ,那些要積分的真無語,本來這東西就是開源的嘛~


1.hadoop1.1.2安裝配置

參考網址:

https://book.51cto.com/art/201110/298538.htm 第二章(這裏有個錯誤,2.1.3小節中的bin/Hadoop NameNode -format中NameNode要小寫:namenode

https://hadoop.apache.org/docs/r1.0.4/cn/quickstart.html ,這個是官網入門教程,建議全部看一遍。

1.1安裝配置環境

去官網下載java1.6,修改/etc/profile,配置環境變量:

# for java environment
export JAVA_HOME=/usr/lib/jvm/jdk1.6   #這裏是樓主的java目錄,你要改成你下載的java目錄
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=${JAVA_HOME}/bin:$PATH  
配置ssh免密碼登陸,不然你每次啟動hadoop都要輸入用戶密碼,很煩的。先安裝ssh

sudo apt-get install ssh 

首先查看用戶文件夾下是否存在.ssh文件夾(注意ssh前麵有“.”,這是一個隱藏文件夾),樓主的用戶文件名為ling,所以輸入命令:

ls -a /home/ling
如果沒有的話就自己建個.ssh文件夾。然後輸入:

ssh-keygen -t dsa -P '' -f /home/ling/.ssh/id_dsa

ssh-keygen代表生成密鑰;-t(注意區分大小寫)表示指定生成的密鑰類型;dsa是dsa密鑰認證的意思,即密鑰類型;-P用於提供密語;-f指定生成的密鑰文件。這個命令會在.ssh文件夾下創建兩個文件id_dsa及id_dsa.pub,這是SSH的一對私鑰和公鑰,類似於鑰匙及鎖,把id_dsa.pub(公鑰)追加到授權的key裏麵去。接下來這把公鑰加到用於認證的公鑰文件中:

cat /home/ling/.ssh/id_dsa.pub >> /home/ling/.ssh/authorized_keys 
這裏的authorized_keys是用於認證的公鑰文件。至此無密碼登錄本機已設置完畢。驗證是否安裝成功:

ssh -version 

樓主顯示如下,木有問題:

OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
Bad escape character 'rsion'.
然後輸入:

ssh localhost 

然後鍵入yes,hadoop安裝前的環境就配好啦!

1.2安裝hadoop

修改conf/hadoop-env.sh,指定你的jdk路徑:

 export JAVA_HOME=/usr/lib/jvm/jdk1.6

修改conf/core-site.xml:

<configuration>
<!--這裏配置的是HDFS的地址和端口號-->
    <property> 
        <name>fs.default.name</name> 
        <value>hdfs://localhost:9000</value> 
    </property>
</configuration>
修改conf/hdfs-site.xml:

<configuration>
<!--HDFS的配置,備份方式默認為3,在單機版的Hadoop中,需要將其改為1-->
    <property> 
        <name>dfs.replication</name> 
        <value>1</value> 
    </property> 
</configuration>
修改conf/mapred-site.xml:

<configuration>
<!--MapReduce的配置文件,配置的是JobTracker的地址和端口-->
    <property> 
        <name>mapred.job.tracker</name> 
        <value>localhost:9001</value> 
    </property> 
</configuration>

接下來進入hadoop文件夾下執行下麵命令,格式化文件係統:

bin/hadoop namenode -format

至此配置完成,接下來啟動hadoop:

bin/start-all.sh

打開瀏覽器,輸入下列網址,如果都能查看,說明安裝成功。

    https://localhost:50030 (MapReduce的Web頁麵)  
    https://localhost:50070 (HDFS的Web頁麵) 

1.3.問題記錄

    由於樓主是在虛擬機中做的,每次重啟之後要重新format格式化文件係統,不然是運行hadoop後是啟動不了localhost:50070的,估計是虛擬機重啟時要重新格式化文件係統為Ubuntu默認的,目前樓主想到的是每次不關閉ubuntu,而是選擇suspend,下次開VM直接喚醒就行了,如有其他解決方案,還麻煩分享一下~


2.hbase0.92.2集成

有關hbase詳細,參考官方文檔:https://abloz.com/hbase/book.html,以下是hbase與hadoop版本配套使用表,可供參考:

S代表支持,X代表不支持,NT代表沒有充分測試,但是可以用。樓主用的是hadoop1.1.2+hbase0.92.2。

2.1.修改配置文件

修改hbase目錄下的conf/hbase-env.sh,主要是改java路徑:

# Set environment variables here.

# The java implementation to use.  Java 1.6 required.
export JAVA_HOME=/usr/lib/jvm/jdk1.6
如果你要將hbase和zookeeper集成的話還要將HBASE_MANAGES_ZK設為false,樓主隻用hbase所以設置成true:
export HBASE_MANAGES_ZK=true

配置conf/hbase-site.xml:

<configuration>
<property>
    <name>hbase.rootdir</name>
	<value>hdfs://localhost:9000/hbase</value>
    </property>

<!--

    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>hbase.master</name>
        <value>localhost:60000</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
-->
</configuration>
單機模式下隻需要配置hbase.rootdir即可,注釋掉的大家可以先無視。。。
至此配置完畢執行bin/start-all.sh和bin/stop-all.sh可開啟和關閉hbase服務。

2.2問題記錄

1.樓主在關閉hbase的時候好慢有木有!網上查了下,說是直接stop-all.sh很慢,要先執行bin/hbase-daemon.sh stop master,然後執行bin/stop-hbase.sh。

2.運行bin/hbase shell創建表的時候出現了org.apache.hadoop.hbase.PleaseHoldException: Master is initializing....的錯誤,要修改你的/etc/hosts文件

127.0.0.1 localhost
127.0.0.1 ubuntu.ubuntu-domain ubuntu
該問題的詳細描述見官網:https://hbase.apache.org/book/quickstart.htm

3.nutch2.2.1配置

參考:https://blog.csdn.net/skywalker_only/article/category/1842591

3.1.ant編譯

nutch2.2.1需要自己編譯,在nutch主目錄下執行ant命令(如果沒有ant自己apt-get安裝一個),第一次可能要編譯很長時間,耐心等待,下次就會很快了。

如果你最後看到了build success那麼恭喜你了,如果build faild,那就看輸出的錯誤信息,也可以看一下我的問題記錄。

編譯成功之後nutch下麵會多出build和runtime文件夾。如果你的nutch配置的是本機模式,那麼你要關心一下runtime下的local文件夾了,因為本機模式的配置文件都在local的conf下麵。

3.2.與hbase集成

配置ivy/ivy.xml,由於要使用hbase來存儲,所以找到下麵這一行,並去掉原有的注釋使之生效:

<dependency org="org.apache.gora" name="gora-hbase" rev="0.3" conf="*->default" />

配置conf/gora.properties,設置gora後台用hbase做存儲:

gora.datastore.default=org.apache.gora.hbase.store.HBaseStore

配置conf/nutch-site.xml:

<property>
     <name>storage.data.store.class</name>
     <value>org.apache.gora.hbase.store.HBaseStore</value>
</property>
<property>
     <name>http.agent.name</name>
     <value>NutchCrawler</value>
 </property>
 <property>
     <name>http.robots.agents</name>
     <value>NutchCrawler,*</value>
 </property>


然後再執行ant重新編譯一遍,配置完成!


3.3.問題記錄

1.編譯時出現請求超時,連接失敗什麼的信息,可以修改ivy/ivysettings.xml下的url路徑,找到下麵這一行:
<property name="repo.maven.org" value="https://repo1.maven.org/maven2/" override="false"/>

將其中的value值替換為https://mirrors.ibiblio.org/maven2/。(編譯完成後記得改回來)

2.由於我們用的是hbase0.92.2,而gora依賴的是0.90版的,所以要把hbase0.92目錄下的兩個jar包複製到nutch的lib下麵(本機模式是rumtime/local/lib,分布式模式是deploy文件夾下那個apache-nutch2.2.1.job壓縮包裏麵的lib),還要把原來的hbase-0.90.x的jar包給刪掉,不然會報錯。



4.solr配置



1.官網上下載最新版本(樓主的是4.6.1)
2.由於nutch和solr默認的依賴是solr 3.x, 需要在schema.xml中將其替換為solr 4.x:
Nutch2.x自帶的shema-solr.xml中少了一個_version_ field字段,將以下內容加到<!-- core fileds -->的boost filed之後
將nutch/runtime/local/conf目錄下的schema-solr4.xml裏麵的內容複製到當前目錄的schema.xml裏麵
將nutch/runtime/local/conf目錄下的schema-solr4.xml裏麵的內容複製到$SOLR_HOME/example/solr/collection1/conf/schema.xml
瀏覽器輸入以下地址,驗證配置是否正確:
https://localhost:8983/solr/#/


5集成測試



1.依次啟動hadoop,hbase,nutch,solr。
2.在nutch目錄下的runtime/local/bin/下麵執行nutch的crawl命令進行網頁抓取:有兩中方法:
批處理命令: bin/nutch crawl urls -solr https://localhost:8983/solr/ -depth 3 -topN 10
單步執行命令:
bin/nutch inject urls
bin/nutch generate -topN 10
bin/nutch fetch -all
bin/nutch parse -all
bin/nutch updatedb
bin/nutch  solrindex https://localhost:8983/solr/  -reindex


各個命令參數的說明見官網:bin/nutch命令說明

最後更新:2017-04-03 12:55:13

  上一篇:go android資源網址大全
  下一篇:go 排序算法總結-python實現