1. 程式人生 > >Ubuntu16.04 上執行 Hadoop2.7.3 自帶example wordCount摸索記錄

Ubuntu16.04 上執行 Hadoop2.7.3 自帶example wordCount摸索記錄

首先最最重要的寫在最前面,也是我覺得個人踩得最深的坑,剛接觸hadoop的人,缺少的認識: hdfs的理解:它是一個檔案系統,跟linux的檔案系統是類似的結構,擁有類似的語法,大概就是你在linux上ls檢視檔案列表,那麼hdfs的無非就是hadoop fs -ls。hadoop的輸入輸出,都是從hdfs讀取和寫入的,那麼比如執行hadoop的word count例子的時候,網上各種大坑教程中完全都沒有提到要先自己準備幾個input檔案,文字文件隨便打幾個字就好,並且把檔案上傳到hdfs系統中:這麼做的原因在理解了hdfs後很顯然了--hadoop的輸入輸出都在hdfs中,而且例子裡的命令指定的目錄,指定的也是hdfs中的資料夾路徑。所以網上各種治標不治本的exception explanation再回過頭來看,完全就是在給新人挖坑!(不過可能別人寫的時候都以為你知道,但是隻有我知道我不知道而且你也不知道,話說還在執行hadoop自帶例子的人能對hadoop有多麼深刻的理解呢,佩服大神們的邏輯) 辣麼,讓我們從頭來一遍:(我個人有把${hadoop_install}/bin加入path,所以我直接可以輸入hadoop命令,建議大家都可以這麼做。)
  1. 首先你得安裝並執行起來hadoop,我不管你是叢集還是單機,執行命令:ps -ef|grep hadoop查詢是否有hadoop程序,如果你看到的是如下這一坨,那麼你的hadoop就是在運行了。注意,我是本機執行的例子,所以如果你確定你是連別人的服務,那麼請無視就好。
  1. 準備兩個檔案,比如text1.txt和text2.txt 裡面各寫上一句話,隨便什麼都好,反正就是拿來統計的。然後使用類似如下的命令來上傳到hdfs檔案系統中:hdfs dfs mkdir /input; hadoop fs -put *.txt /input ---你得先在hdfs中建立你的資料夾才能把檔案往裡放不是,還是那句話,它是個檔案系統
  2. 執行示例程式命令
hadoop jar hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce- examples-2.7.3.jar wordcount /input /output 這裡output資料夾不需要在hdfs中提前建好,而且不能提前建,否則會報output folder already exists:比如你運行了一次又想再執行一次的時候就會報這個錯,很明顯,就是它需要一個空的目錄來存放執行結果。如果執行了想再執行一次,就用hadoop fs -rmr /output刪掉這個資料夾再執行就好。命令裡的我寫的相對路徑,各位改成自己對應的路徑就好。 貼個圖證明我執行成功了:
  1. 檢視結果:hadoop fs -cat /output/part-r-00000