Hadoop——跑wordcount demo
wordcount有自帶的jar,也可以自己寫了上傳
一、跑自帶的example
1.建立輸入檔案
touch /usr/hadoop/tmp/words
然後vim修改內容,我寫了兩行
hello world
hello zzm
2.在 HDFS 上建立目錄,並上傳到hdfs分散式中
(1)[[email protected] hadoop]$ bin/hadoop fs -mkdir /wordcount_input
本來以為很簡單一件事,沒想到虛擬機器網路這邊又出了問題
執行在HDFS裡生成子目錄命令,報 failed on socket exception network is unreachable錯誤,那肯定是網路問題
因為是之前配置好的192.168.138.128和192.168.138.130不生效了,用service network restart之後,有自動分配了192.168.138.193和192.168.138.192兩個IP,只好再去修改/etc/hosts裡的對映關係,成功了,但是還是報connection refuse錯誤
突然發現我還沒有啟動Hadoop程序,趕緊./start-all.sh 然後檢視jps,再執行上面的命令,成功!
(2)put 然後可以ls看一下
(3)跑jar程式
這條指令指定了jar的目錄,類入口,以及輸入輸出檔案目錄
用法:hadoop jar <jar> [mainClass] args…
然後輸出一下結果,注意output後面必須接/*
二、跑自己上傳的jar
1.問題是Hadoop的一些用法在eclipse中無法編譯成功,會報錯
應該是庫的問題,還沒有匯入Hadoop的包,參考這篇部落格建立了user library,再專案右鍵build path-configure,匯入這些library,然後原始碼中就有提示import了。比較坑的是一般他會提示可以import好幾個,但是隻有一個是對的,我根據推理加試錯終於試對啦。
但是在重新執行jar命令時又遇到了一個class not found問題
因為我是將一個工程打包成jar,所以指定main函式入口的java程式時,也需指定包的路徑,如下就可以成功了
2.補充:嘗試在eclipse中搭建Hadoop環境
參考這篇部落格進行配置,不過版本不一樣,我自己在githup上找的對應plugin
這個放入指定目錄下後,在Windows也需要解壓Hadoop資料夾,然後配置環境變數
這是與原文中配置不同的地方,貼出來。其中,Location name自定義一個名字就行,配置Map/Reduce Master和DFS Mastrer,Host和Port配置成與core-site.xml的設定一致即可(Host為hadoop節點的hostname,DFS Mastrer下的port為HDFS埠號,User name為安裝Hadoop節點使用者名稱稱,如下圖)
但是報了個錯誤,我懷疑可能是上面設定的HDFS埠號的問題,最後還是沒有解決。