資料分析 Mahout 處理 (1)

基本介紹

教學目標

學習如何在一小時之內輕鬆部署 Hadoop On Google Compute Engine 環境,並且透過 Apache Mahout 進行電影推薦分析。

使用教學

環境部署

  1. 在 Google Cloud Platform 點擊部署 Hadoop On Google Compute Engine 雲端服務,選取一項專案,再按下繼續按鈕。
  2. 根據處理的需求設定 Worker Node 的數量。
  3. 選擇 Google Storage 中的值區 (Bucket),直接當成 Hadoop 檔案伺服器 (HDFS)。
  4. 選擇 Hadoop 版本,目前有提供 1.2.x 和 2.4.1 的版本。( Apache Mahout 推薦分析目前僅支援 1.2.x )
  5. 選擇 Master Node 和 Worker Node 的磁碟類型 (標準或 SSD) 和大小 (GB)。
  6. 勾選安裝 Apache Spark ,以及在進階選項針對需求分配機器類型和網路。
  7. 確認之後按下 Deploy Cluster 按鈕即可以開始花費 3 分鐘至 10 分鐘自動部署叢集。

套件安裝

  1. 開啟 Google 開發人員介面,點掔專案,接著選擇「運算」->「Compute Engine」->「VM 執行個體」。
  2. 選擇 Master Node 進行連接,其中有許多不同的方式,像是 SSH 、 gcloud 和在瀏覽器視窗開啟等方式。
  3. 輸入「hadoop fs -ls .」查詢 HDFS 中的資料夾和檔案,相當於 Google Storage 中的值區資料,接著安裝 Apache Mahout 套件。
1
2
3
4
5
6
7
8
9
10
$ sudo wget http://apache.osuosl.org/mahout/0.9/mahout-distribution-0.9.tar.gz
$ sudo tar zxvf mahout-distribution-0.9.tar.gz
$ cd mahout-distribution-0.9
$ pwd

請複製 Apache Mahout 的目錄路徑。

$ export MAHOUT_HOME=目錄路徑
$ export PATH=$MAHOUT_HOME/bin:$PATH
$ export MAHOUT_LOCAL=

資料分析

下載電影評分原始資料,透過 Linux 指令進行資料轉換的處理之後放置 HDFS (Google Storage) 中。

1
2
3
4
5
6
$ cd ..
$ wget http://files.grouplens.org/datasets/movielens/ml-1m.zip
$ sudo apt-get install unzip
$ unzip ml-1m.zip
$ cat ml-1m/ratings.dat | sed 's/::/,/g' | cut -f1-3 -d, > ratings.csv
$ hadoop fs -put ratings.csv /ratings.csv

接著透過 Apache Mahout 將轉換之後的電影評分原始資料進行推薦分析。

1
$ mahout recommenditembased --input /ratings.csv --output recommendations --numRecommendations 10 --outputPathForSimilarityMatrix similarity-matrix --similarityClassname SIMILARITY_COSINE

(註: 透過設置二台 n1-standard-2 類型實體機器整體花費時間為十三分鐘,比起 Amazon EMR 設置三台 m1.medium 類型實體機器整體花費時間為二十分鐘,Hadoop On Google Compute Engine 資料處理分析更有效率。)

最後檢查電影推薦分析之後的結果。

1
2
$ hadoop fs -ls recommendations
$ hadoop fs -cat recommendations/part-r-00000 | head

輸出結果:

1
2
3
4
5
6
7
8
9
10
11
12
14/12/20 17:53:27 INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.2.9-hadoop1
8 [2966:5.0,3793:5.0,3148:5.0,3614:5.0,1805:5.0,2046:5.0,914:5.0,3007:5.0,1958:5.0,1407:5.0]
16 [2003:5.0,3113:5.0,2734:5.0,2470:5.0,2709:5.0,2336:5.0,1091:5.0,3526:5.0,2333:5.0,673:5.0]
24 [3507:5.0,32:5.0,3148:5.0,1805:5.0,2735:5.0,1096:5.0,474:5.0,838:5.0,3260:5.0,1256:5.0]
32 [916:5.0,1238:5.0,2302:5.0,1777:5.0,2312:5.0,2065:5.0,902:5.0,2150:5.0,1295:5.0,141:5.0]
40 [2478:5.0,3526:5.0,3740:5.0,368:5.0,1129:5.0,3435:5.0,1212:5.0,1946:5.0,928:5.0,60:5.0]
48 [3793:5.0,32:5.0,3260:5.0,2046:5.0,3507:5.0,1407:5.0,474:5.0,2616:5.0,1805:5.0,1256:5.0]
56 [2133:5.0,373:5.0,3108:5.0,1358:5.0,805:5.0,3949:5.0,1914:5.0,1678:5.0,2541:5.0,368:5.0]
64 [1339:5.0,849:5.0,1373:5.0,1748:5.0,1037:5.0,3033:5.0,3552:5.0,1690:5.0,1387:5.0,1358:5.0]
72 [1734:5.0,1271:5.0,3552:5.0,368:5.0,1358:5.0,2273:5.0,515:5.0,2915:5.0,3072:5.0,3545:5.0]
80 [3755:5.0,47:5.0,3108:5.0,2133:5.0,805:5.0,1231:5.0,832:5.0,1678:5.0,1358:5.0,2366:5.0]
cat: Unable to write to output stream.

刪除環境

在 Google Cloud Platform 點擊部署 Hadoop On Google Compute Engine 雲端服務,選取專案,再按下 Delete cluster 按鈕。(註: 整個部署分析的流程可以控制在一個小時之內解決,同時輸入和輸出的資料會在 Google Storage 中永久保存。)

相關資源