Hadoop
網路上 Hadoop 的相關教學很多,但通常都是 1.x.x 的版本,即便是 2.x.x 的版本,教學也缺少簡單、明確的指引,沒有看到一個全面性的圖文教學,所以決定自己實際操作一遍,並記錄下來,讓日後有需要的人參考。
什麼是 Hadoop?
- Hadoop 是以 java 寫成,可以提供大量資料的分散式運算環境。
- Hadoop 是由 Google 雲端架構得到啟發,而開始的開放原始碼計劃。Hadoop現於Apache Software Fundation旗下。
- 因此, Hadoop 跟 Google 內部使用的雲端運算架構相似。
| Hadoop | ||
|---|---|---|
| 運算系統 | MapReduce | MapReduce |
| 檔案系統 | GFS | HDFS |
| 儲存系統 | BigTable | HBase |
什麼是 MapReduce?
- 根據 MapReduce 模式開發程式,便可以自動在 Hadoop 上達到平行化,處理巨量的數據資料。
什麼是 HDFS ( Hadoop Distributed File System ) ?
- 將分散的儲存資源整合成一個具容錯能力、高效率且超大容量的儲存環境
- HDFS 儲存的資料分散在不同 node 上,所以應用程式必須透過網路進入多個 node 讀取資料
- 是Master/Slave架構,由兩種角色組成:NameNode、DataNodes。NameNode提供HDFS運作、管理的功能,僅在Master端運作;DataNode為儲存資料用,在Slave端運作。
一個 node 可以同時擔任 Master 與 Slave 的角色。也就是說,只要用一個 node 就可以跑 Hadoop 了嗎?是的,而這種單機執行的 Hadoop 的環境,通常稱其為 Single-node Clusters;相對來說,多機執行的 Hadoop 的環境,通常稱其為 Multi-node Clusters。
不管是 Single-node Clusters 還是 Multi-node Clusters,所有的node都要先進行以下操作:
- 移除 (or 關閉) 防火牆
- 安装Java環境、SSH Server
- 設定hadoop使用者 - hduser
- 設定hduser 無密碼登錄
- 安装Hadoop環境
移除 (or 關閉) 防火牆
> $ sudo apt-get remove iptables
> $ sudo apt-get remove selinux
安装Java環境、SSH Server
> $ sudo apt-get update # 更新 apt
> $ sudo apt-get install vim # 安裝編輯器 vim,我個人習慣用 vim
> $ sudo apt-get install openjdk-7-jdk # 安裝 java
> $ java –version # 測試 java 是否成功安裝
> $ sudo apt-get install openssh-server # 安裝 ssh server
> $ ssh localhost # 測試 ssh server 是否成功安裝
> $ exit # 退出 ssh localhost
設定hadoop使用者 - hduser
> $ sudo addgroup hadoop # 新增群組 hadoop
> $ sudo usermod -a -G hadoop hduser # 把現有的使用者 hduser 加入群組 hadoop
> $ sudo usermod -a -G sudo hduser # 把現有的使用者 hduser 加入群組 sudo,方便後續操作
設定hduser 無密碼登錄
登出目前用戶,登入 hduser 用戶,接著做以下的操作
$ ssh localhost # 讓 hduser 的家目錄底下,產生「.ssh」資料夾
> $ exit # 退出 ssh localhost
> $ cd ~/.ssh
> $ ssh-keygen -t rsa -P "" # 產生密鑰對
> $ cat id_rsa.pub >> authorized_keys # 加入授權