1. 程式人生 > >Hadoop——跑wordcount demo

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埠號的問題,最後還是沒有解決。