從0到1完成nutch分散式爬蟲專案實戰

假的魚發表於2019-01-08

大資料5天實訓

命令提示符$表示普通使用者,#表示root使用者

  1. 搭建環境

選擇Install

選擇Next

選擇語言English(English),選擇Next

選擇鍵盤U.S.English,選擇Next

選擇Next

選擇Yes,discard any data

修改Hostname為hyxy1.1.cloud,選擇Next

選擇時區Asia/Shanghai,選擇Next

設定root密碼為hyxy123,選擇Next,會提示密碼過於簡單,這時選擇Use Anyway

選擇Next

選擇Write changes to disk

 

 

選擇Close,選擇右上角X,選擇正常關閉,選擇OK

在這裡向大家推薦一個學習資料分享群:894951460

選擇設定

左側選擇儲存,右側儲存樹內的控制器下滑鼠右鍵CentOS-6.5-x86_64-LiveDVD,選擇刪除碟片,選擇刪除,選擇OK,選擇啟動

配置centos

選擇Forward

選擇Forward

Username改為hyxy,Full Name改為hyxy,Password改為hyxy123,Confirm Password改為hyxy123

選擇Forward

滑鼠右鍵桌面,選擇Open in Terminal,開啟終端,輸入命令

$ifconfig

檢視ip地址

 

網路環境及主機名設定

 

檢視win環境的IP,按住alt左邊一個鍵+r ,在跳出的框內出入cmd然後回車

回車後產生以下畫面

在黑白框內輸入ipconfig

找到一個本地連線或者無線網路連線,看IP地址是多少,上圖所示,我的是無線網路IP地址為192.168.1.242

所以我如果想讓VM下的linux上網必須修改linux的網路的eth0位該網段的IP(網段指的是IP前三個數字,如我的win環境是192.168.1.242,那麼我的網段是192.168.1。所以linux IP需要配置成192.168.1.x。並且GATEWAY改成192.168.1.1)。如下圖

輸入 vi /etc/sysconfig/network-scripts/ifcfg-eth0

配置完成後輸入:service network restart,完成網路重啟,如下圖為正確啟動網路。

如果有問題,修改方式如下:

1、檢視ls /etc/sysconfig/network-scripts/   下除了ifcfg-lo和ifcfg-eth0是否還有其他ifcfg-開頭的檔案,有使用rm -rf +檔名  刪除。

2、修改網路卡。

再次重啟網路,service network restart。直到全部OK為止。

測試能不能ping通網管就是在eth0裡配置的GATEWAY的地址。我的為192.168.1.1

此狀態為正常,如果ping不通,關閉win7或者win10的防火牆,並且關閉linux的防火牆,linux使用命令service iptables stop進行關閉。

再次ping閘道器  ping 192.168.1.1 如果還不通,修改以下位置

改成上圖的配置。並再次ping 192.168.1.1(注意該網管每個主機可能不同)直到ping通為止,此時再使用ping命令ping下baidu:命令如下:ping www.baidu.com.

 注意不是每個主機在ping通閘道器的情況下就能平通外網,跟路由設定有關,如果遇到這種問題,只能換網路環境了。

      1. 配置ssh服務

切換root使用者輸入root密碼,啟動sshd服務

su  root

service sshd start

設定sshd服務開機啟動

#chkconfig sshd on

      1. 配置目錄

導航到home目錄

建立資料夾nutchhadoop

進入根目錄:

cd /

建立目錄:

mkdir nutchHadoop

檢視是否建立成功

ls

進入nutchhadoop資料夾內,建立資料夾jdk、ant、nutch、hadoop

一次性把四個目錄都建立出來

      1. 配置主機名

# hostname master

以上命令為臨時修改,永久修改需要修改配置檔案:

輸入命令 vi /etc/syscpnfig/network回車

可以看到HOSTNAME的選項,改成master(可以自己定義名字,但是必須保證臨時修改和永久修改的名字一致)

修改完成後退出輸入行模式:wq儲存退出。

如圖是linux的主機名

此時還未生效生效方式1.重啟。2.使用hostname master臨時生效,下次重啟的時候會自動檢查我們修改的配置檔案生效,此時輸入su  root  可以看到修改後的效果

檢視hostname

#hostname

配置域名解析的對應方式,輸入如下命令:vi /etc/hosts,最後邊新增,主機的IP,和剛剛改好的主機名,兩者之間用tab分割,新增完成儲存退出。

 

      1. 關閉防火牆

切換到root使用者

 

#service iptables stop

#chkconfig iptables off

    1. 安裝jdk

進入/tmp目錄下,解壓縮

cd /tmp

檢視是否有我們上傳的4個檔案

把壓縮包解壓到建立的對應的目錄下

tar -zxvf jdk-8u121-linux-x64.tar.gz -C /nutchhadoop/jdk/

執行結果如下

編輯~/.bash_profile檔案,配置環境變數

vi ~/.bash_profile

按i變為插入模式,輸入以下命令

Esc退出編輯模式,輸入:wq儲存退出

 

輸入

source ~/.bash_profile

如果變數配置出了問題先使用以下命令

如果輸入java -version後不是以上內容 而是 java -version "1.7......."或者commond not found。說明環境變數有問題,可以使用:cd $JAVA_HOME檢查,如圖,表示目錄不對

重新修改~/.bash_profile的JAVA_HOME的目錄

Jdk配置成功

    1. 安裝ant

進入到ant目錄下,解壓縮,檢視是否成功

cd /tmp/

tar zxvf apache-ant-1.9.7-bin.tar.gz -C /nutchhadoop/ant/

ls

 

過程為:

編輯~/.bash_profile檔案,配置環境變數

vi ~/.bash_profile

按i變為插入模式,輸入以下命令

 

Esc退出編輯模式,輸入:wq儲存退出,

Ant配置成功

    1. 安裝nutch
      1. 解壓縮

進入到nutch目錄下,解壓縮,檢視是否成功

cd /tmp/

tar zxvf apache-nutch-1.7-src.tar.gz -C /nutchhadoop/nutch/  回車

執行結果

進入目錄

 

修改配置檔案nutch-site.xml

vi nutch-site.xml

新增

     <property>

        <name>http.agent.name</name>

        <value>gupao spider</value>

     </property>

 

儲存退出

編譯nutch

進入到

使用ant runtime進行編譯

此時進入ant編譯nutch的環節,會下載很多nutch的更新和下載一個runtime的目錄,其中runtime裡有很多的整合好的方法,我們使用的爬資料的方法就繼承在這個目錄內。次狀態時間要10-20分鐘,耐心等待,如果非常快速的完成,說明網路有問題,不能下載。仔細檢查網路。能否ping通baidu,使用ping www.baidu.com進行檢查

如圖:

為正在下載。可以看到下載的位元組,時間,成功等資訊

配置環境變數

編輯~/.bash_profile檔案,配置環境變數

vi ~/.bash_profile

按i變為插入模式,輸入以下命令

source ~/.bash_profile

    1. 安裝hadoop

進入到hadoop目錄下,解壓縮,檢視是否成功

cd /tmp/

tar –zxvf hadoop-2.6.1.tar.gz -C /nutchhadoop/hadoop/

執行結果

      1. 設定環境變數

編輯~/.bash_profile檔案,配置環境變數

vi ~/.bash_profile

按i變為插入模式,輸入以下命令

Esc退出編輯模式,輸入:wq儲存退出

輸入

source ~/.bash_profile

 

輸入hadoop version

出現如下問題:

修改方式如下:

修改上圖中的兩個.sh結尾的檔案。(hadoop-env.sh和yarn-env.sh)

vi hadoop-env.sh

在這裡向大家推薦一個學習資料分享群:894951460

找到紅框內容游標移動到該行,修改為對應的~/.bash_profile的java_home對應內容

修改完後儲存退出,下圖所示

修改yarn-env.sh

找到如下位置

在該行下新加一行

儲存退出:

 

      1. 修改配置檔案

進入hadoop-2.6.1資料夾內

        1. 修改core-site.xml檔案

cd /nutchhadoop/hadoop/hadoop-2.6.1

vim etc/hadoop/core-site.xml

 

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://master:9000</value>

    </property>

</configuration>

 

儲存退出(注意<value>hdfs://master:9000</value>的master是你自己設定的主機名,也就是上邊設定hostname

        1. 修改hdfs-site.xml檔案

cd /nutchhadoop/hadoop/hadoop-2.6.1

$vim etc/hadoop/hdfs-site.xml

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

    </property>

</configuration>

 

儲存退出

        1. 修改mapred-site.xml檔案

複製

cd /nutchhadoop/hadoop/hadoop-2.6.1/etc/hadoop/

cp mapred-site.xml.template  mapred-site.xml

 

編輯mapred-site.xml

vi mapred-site.xml

<configuration>

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

</configuration>

 

儲存退出

 

        1. 修改yarn-site.xml檔案

cd /nutchhadoop/hadoop/hadoop-2.6.1/etc/hadoop/

 vi yarn-site.xml

 

<configuration>

 

<!-- Site specific YARN configuration properties -->

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

 

</configuration>

 

      1. 設定ssh信任

使用命令:cd  ~

[root@mast1 ~]$ ssh-keygen -t rsa

直接4部回車

  配置祕鑰完成後,把公鑰傳送到所有的對方主機。

 

[root@mast1 ~]$ ssh-copy-id -i /root/.ssh/id_rsa.pub master

以上的master同樣是自己設定的linux的主機名,就是hostname設定那一步

關閉當前終端,驗證ssh信任是否通過

 

      1. 啟動hdfs、yarn

hdfs namenode -format

注意,叢集只有第一次啟動的時候使用這個命令,下次啟動一定不要再次使用,否則會出現很對問題,以你們現在的水平找不到解決方法

 

啟動hdfs

start-dfs.sh

 

啟動yarn

 

start-yarn.sh

 

 

輸入jps命令檢視是否啟動成功

jps

進入nutch目錄下

cd / nutchhadoop/nutch/

建立urls.txt,新增網址,儲存退出

vi urls.txt

http://nutch.apache.org/

 

儲存退出

在hdfs上建立目錄

hadoop fs -mkdir /nutch

將urls.txt提交到hdfs中

hadoop fs -put urls.txt /nutch

檢視是否提交成功

hadoop fs -cat /nutch/urls.txt

 

  1. 抓取資料
    1. 執行抓取

進入到/nutchhadoop/nutch/apache-nutch-1.7目錄

 

cd /nutchhadoop/nutch/apache-nutch-1.7

 

執行抓取

hadoop jar ./runtime/deploy/apache-nutch-1.7.job org.apache.nutch.crawl.Crawl /nutch/ -dir TestCrawl -depth 1 -topN 1

瀏覽器中輸入http://192.168.1.156:8088

檢視mapreduce任務執行

 

執行最後顯示如下資訊表示成功

17/04/05 11:35:32 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032

17/04/05 11:35:32 INFO crawl.LinkDb: LinkDb: finished at 2017-04-05 11:35:32, elapsed: 00:01:37

17/04/05 11:35:32 INFO crawl.Crawl: crawl finished: TestCrawl

在hdfs中檢視抓取結果

 hadoop fs -ls /user/hyxy/TestCrawl

 

    1. 生成txt檔案

執行

cd /nutchhadoop/nutch/apache-nutch-1.7

./runtime/deploy/bin/nutch readseg -dump /user/root/TestCrawl/segments/20190108161042 /nutch/crawl_dump_text -nofetch -nogenerate -nocontent -noparse -noparsedata

如果此步驟產生錯誤表示nutch需要配置java_home,配置如下

vi runtime/deploy/bin/nutch

移動如下位置:

新增如下內容:

儲存退出後再次編譯./runtime/deploy/bin/nutch readseg -dump /user/root/TestCrawl/segments/20170413001028/ /nutch/crawl_dump_text -nofetch -nogenerate -nocontent -noparse -noparsedata

 

檢視執行結果

 hadoop fs -ls /nutch

 

 

檢視資料內容

 hadoop fs -cat /nutch/crawl_dump_text/dump

如何學習大資料?學習沒有資料?

想學習大資料開發技術,Hadoop,spark,雲端計算,資料分析等技術,在這裡向大家推薦一個學習資料分享群:894951460,裡面有大牛已經整理好的相關學習資料,希望對你們有所幫助。

相關文章