hadoop1.1.2+hbase0.92.2+nutch2.2.1+solr4.6.1配置全記錄
花了兩天時間,總算把這些東西弄好了,環境是vmware9虛擬機上的Ubuntu12.04_x86版。做了個簡單的測試,跑通了。不過還是有很多不明白的地方,後期再陸續記錄。
目前樓主配的是單機模式,分布式模式中遇到的問題以後再做記錄。
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