從0到1完成nutch分散式爬蟲專案實戰
大資料5天實訓
命令提示符$表示普通使用者,#表示root使用者
- 搭建環境
選擇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通閘道器的情況下就能平通外網,跟路由設定有關,如果遇到這種問題,只能換網路環境了。
-
-
- 配置ssh服務
-
切換root使用者輸入root密碼,啟動sshd服務
su root
service sshd start
設定sshd服務開機啟動
#chkconfig sshd on
-
-
- 配置目錄
-
導航到home目錄
建立資料夾nutchhadoop
進入根目錄:
cd /
建立目錄:
mkdir nutchHadoop
檢視是否建立成功
ls
進入nutchhadoop資料夾內,建立資料夾jdk、ant、nutch、hadoop
一次性把四個目錄都建立出來
-
-
- 配置主機名
-
# hostname master
以上命令為臨時修改,永久修改需要修改配置檔案:
輸入命令 vi /etc/syscpnfig/network回車
可以看到HOSTNAME的選項,改成master(可以自己定義名字,但是必須保證臨時修改和永久修改的名字一致)
修改完成後退出輸入行模式:wq儲存退出。
如圖是linux的主機名
此時還未生效生效方式1.重啟。2.使用hostname master臨時生效,下次重啟的時候會自動檢查我們修改的配置檔案生效,此時輸入su root 可以看到修改後的效果
檢視hostname
#hostname
配置域名解析的對應方式,輸入如下命令:vi /etc/hosts,最後邊新增,主機的IP,和剛剛改好的主機名,兩者之間用tab分割,新增完成儲存退出。
-
-
- 關閉防火牆
-
切換到root使用者
#service iptables stop
#chkconfig iptables off
-
- 安裝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配置成功
-
- 安裝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配置成功
-
- 安裝nutch
- 解壓縮
- 安裝nutch
進入到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
-
- 安裝hadoop
進入到hadoop目錄下,解壓縮,檢視是否成功
cd /tmp/
tar –zxvf hadoop-2.6.1.tar.gz -C /nutchhadoop/hadoop/
執行結果
-
-
- 設定環境變數
-
編輯~/.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
找到如下位置
在該行下新加一行
儲存退出:
-
-
- 修改配置檔案
-
進入hadoop-2.6.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)
-
-
-
- 修改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>
儲存退出
-
-
-
- 修改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>
儲存退出
-
-
-
- 修改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>
-
-
- 設定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信任是否通過
-
-
- 啟動hdfs、yarn
-
hdfs namenode -format
注意,叢集只有第一次啟動的時候使用這個命令,下次啟動一定不要再次使用,否則會出現很對問題,以你們現在的水平找不到解決方法
啟動hdfs
start-dfs.sh
啟動yarn
start-yarn.sh
輸入jps命令檢視是否啟動成功
jps
進入nutch目錄下
cd / nutchhadoop/nutch/
建立urls.txt,新增網址,儲存退出
vi urls.txt
儲存退出
在hdfs上建立目錄
hadoop fs -mkdir /nutch
將urls.txt提交到hdfs中
hadoop fs -put urls.txt /nutch
檢視是否提交成功
hadoop fs -cat /nutch/urls.txt
- 抓取資料
- 執行抓取
進入到/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
-
- 生成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,裡面有大牛已經整理好的相關學習資料,希望對你們有所幫助。
相關文章
- node專案從0到1實戰
- Python爬蟲開發與專案實戰--分散式程式Python爬蟲分散式
- 從0到1:React專案中的Webpack配置實戰ReactWeb
- 爬蟲專案實戰(一)爬蟲
- 爬蟲實戰專案集合爬蟲
- 爬蟲實戰專案合集爬蟲
- 第一個分散式爬蟲專案分散式爬蟲
- Java 爬蟲專案實戰之爬蟲簡介Java爬蟲
- Nutch:從搜尋引擎到網路爬蟲---分享公開課爬蟲
- Python爬蟲開發與專案實戰(1)Python爬蟲
- 分散式爬蟲原理之分散式爬蟲原理分散式爬蟲
- Vue3 全家桶,從 0 到 1 實戰專案,新手有福了Vue
- [Python3網路爬蟲開發實戰] 分散式爬蟲原理Python爬蟲分散式
- 爬蟲(14) - Scrapy-Redis分散式爬蟲(1) | 詳解爬蟲Redis分散式
- 如何構建一個分散式爬蟲:實戰篇分散式爬蟲
- 2個月精通Python爬蟲——3大爬蟲框架+6場實戰+反爬蟲技巧+分散式爬蟲Python爬蟲框架分散式
- 分散式爬蟲分散式爬蟲
- 從0到1實現專案Docker編排部署Docker
- 大資料爬蟲專案實戰教程大資料爬蟲
- 大型商城網站爬蟲專案實戰網站爬蟲
- 手把手教你實現Scrapy-Redis分散式爬蟲:從配置到最終執行的實戰指南Redis分散式爬蟲
- python專案開發例項-Python專案案例開發從入門到實戰——爬蟲、遊戲Python爬蟲遊戲
- Python網路爬蟲實戰專案大全 32個Python爬蟲專案demoPython爬蟲
- 不踩坑的Python爬蟲:Python爬蟲開發與專案實戰,從爬蟲入門 PythonPython爬蟲
- python爬蟲實操專案_Python爬蟲開發與專案實戰 1.6 小結Python爬蟲
- python爬蟲-33個Python爬蟲專案實戰(推薦)Python爬蟲
- Python爬蟲開發與專案實戰——基礎爬蟲分析Python爬蟲
- Python爬蟲開發與專案實戰 3: 初識爬蟲Python爬蟲
- 分散式爬蟲原理分散式爬蟲
- Python網路爬蟲實戰小專案Python爬蟲
- Go語言專案實戰:併發爬蟲Go爬蟲
- Python網路爬蟲實戰專案大全!Python爬蟲
- Vue+Express全棧開發專案實戰技能:從0到1打造完整電商專案VueExpress全棧
- 從0到1完成一個Babel外掛Babel
- 神器!五分鐘完成大型爬蟲專案!爬蟲
- Python爬蟲開發與專案實戰pdfPython爬蟲
- Python靜態網頁爬蟲專案實戰Python網頁爬蟲
- 爬蟲實戰專案-公眾號:AI悅創爬蟲AI