位置:首頁 > 大數據教學 > Hadoop教學 > Hadoop程序入門實踐

Hadoop程序入門實踐

問題陳述:

找出銷往各個國家商品數量。

輸入: 我們的畋輸入數據集合是一個 CSV 文件, Sales2014.csv

前提條件:

  • 本教學是在Linux上開發 - Ubuntu操作係統
  • 已經安裝了Hadoop(本教學使用版本2.7.1)
  • 係統上已安裝了Java(本教學使用 JDK1.8.0)。

在實際操作過程中,使用的用戶是'hduser_“(此用戶使用 Hadoop)。

yiibai@ubuntu:~$ su hduser_

步驟:

1.創建一個新的目錄名稱是:MapReduceTutorial

hduser_@ubuntu:~$ sudo mkdir MapReduceTuorial

授予權限

hduser_@ubuntu:~$ sudo chmod -R 777 MapReduceTutorial

下載相關文件:下載 Java 程序文件,拷貝以下文件:SalesMapper.java, SalesCountryReducer.java 和 SalesCountryDriver.java 到 MapReduceTutorial 目錄中,

檢查所有這些文件的文件權限是否正確:

如果“讀取”權限缺少可重新再授予權限,執行以下命令:

yiibai@ubuntu:/home/hduser_/MapReduceTutorial$ sudo chmod +r *

2.導出類路徑

hduser_@ubuntu:~/MapReduceTutorial$ export CLASSPATH="$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7.1.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-common-2.7.1.jar:$HADOOP_HOME/share/hadoop/common/hadoop-common-2.7.1.jar:~/MapReduceTutorial/SalesCountry/*:$HADOOP_HOME/lib/*"
hduser_@ubuntu:~/MapReduceTutorial$

3. 編譯Java文件(這些文件存在於目錄:Final-MapReduceHandsOn). 它的類文件將被放在包目錄:

hduser_@ubuntu:~/MapReduceTutorial$ javac -d . SalesMapper.java SalesCountryReducer.java SalesCountryDriver.java

安全地忽略此警告:

此編譯將創建一個名稱與Java源文件(在我們的例子即,SalesCountry)指定包名稱的目錄,並把所有編譯的類文件在裡麵,因此這個目錄要在編譯文件前創建。

接下來:

創建一個新的文件:Manifest.txt

hduser_@ubuntu:~/MapReduceTutorial$ vi Manifest.txt

添加以下內容到文件中:

Main-Class: SalesCountry.SalesCountryDriver

SalesCountry.SalesCountryDriver 是主類的名稱。請注意,必須鍵入回車鍵,在該行的末尾。

下一步:創建一個 jar 文件

hduser_@ubuntu:~/MapReduceTutorial$ $JAVA_HOME/bin/jar cfm ProductSalePerCountry.jar Manifest.txt SalesCountry/*.class

檢查所創建的 jar 文件,結果如下:

6. 啟動 Hadoop

hduser_@ubuntu:~$ $HADOOP_HOME/sbin/start-dfs.sh
hduser_@ubuntu:~$ $HADOOP_HOME/sbin/start-yarn.sh



7. 拷貝文件 Sales2014.csv 到 ~/inputMapReduce

hduser_@ubuntu:~$ mkdir inputMapReduce
hduser_@ubuntu:~$ cp MapReduceTutorial/Sales2014.csv ./inputMapReduce/Sales2014.csv

現在使用以下命令來拷貝 ~/inputMapReduce 到 HDFS.

hduser_@ubuntu:~$ $HADOOP_HOME/bin/hdfs dfs -copyFromLocal ~/inputMapReduce /

我們可以放心地忽略此警告。驗證文件是否真正複製冇有?

hduser_@ubuntu:~$ $HADOOP_HOME/bin/hdfs dfs -ls /inputMapReduce

8. 運行MapReduce 作業

hduser_@ubuntu:~$ $HADOOP_HOME/bin/hadoop jar ProductSalePerCountry.jar /inputMapReduce /mapreduce_output_sales

這將在 HDFS 上創建一個輸出目錄,名為mapreduce_output_sales。此目錄的文件內容將包含每個國家的產品銷售。

9. 結果可以通過命令界麵中可以看到

hduser_@ubuntu:~$ $HADOOP_HOME/bin/hdfs dfs -cat /mapreduce_output_sales/part-00000

結果也可以通過 Web 界麵看到,打開 Web 瀏覽器,輸入網址:http://localhost:50070/dfshealth.jsp ,結果如下:

現在選擇 'Browse the filesystem' 並導航到 /mapreduce_output_sales 如下:

打開 part-r-00000 ,如下圖所示:

下載後,查看結果內容。