Hadoop安裝方式 Hadoop的安裝方式有三種,分別是單機模式,偽分散式模式,偽分散式模式,分散式模式。 單機模式:Hadoop預設模式為非分散式模式(本地模式),無需進行其他配置即可運行。非分散式即單Java進程,方便進行調試。 偽分散式模式:Hadoop可以在單節點上以偽分散式的方式運行,H ...
Hadoop安裝方式
Hadoop的安裝方式有三種,分別是單機模式,偽分散式模式,偽分散式模式,分散式模式。
單機模式:Hadoop預設模式為非分散式模式(本地模式),無需進行其他配置即可運行。非分散式即單Java進程,方便進行調試。
偽分散式模式:Hadoop可以在單節點上以偽分散式的方式運行,Hadoop進程以分離的Java進程來運行,節點既作為NameNode也作為DataNode,同時,讀取的是HDFS中的文件。
分散式模式:使用多個節點構成集群環境來運行Hadoop。
Hadoop版本
Hadoop 有兩個主要版本,Hadoop 1.x.y 和 Hadoop 2.x.y 系列,Hadoop 2.x 版本在不斷更新,新版是相容舊版的。
裝好了 Ubuntu 系統之後,在安裝 Hadoop 前還需要做一些必備工作。
創建Hadoop用戶
如果安裝 Ubuntu 的時候不是用的 “hadoop” 用戶,那麼需要增加一個名為 hadoop 的用戶。
(1)首先按 ctrl+alt+t 打開終端視窗,輸入如下命令創建新用戶 :
sudo useradd -m hadoop -s /bin/bash
這條命令創建了可以登陸的 hadoop 用戶,並使用 /bin/bash 作為 shell。
- sudo是Ubuntu中一種許可權管理機制,管理員可以授權給一些普通用戶去執行一些需要root許可權執行的操作。當使用sudo命令時,就需要輸入您當前用戶的密碼。
- 在Linux的終端中輸入密碼,終端是不會顯示任何你當前輸入的密碼,也不會提示你已經輸入了多少字元密碼。而在Windows系統中,輸入密碼一般都會以“*”表示你輸入的密碼字元。
- Ubuntu中終端輸入的命令一般都是使用英文輸入。Linux中英文的切換方式是使用鍵盤“shift”鍵來切換,也可以點擊頂部菜單的輸入法按鈕進行切換。Ubuntu自帶的Sunpinyin中文輸入法已經足夠使用。
- 在Ubuntu終端視窗中,複製粘貼的快捷鍵需要加上“shift”,即粘貼是 “ctrl+shift+v”。
(2)接著使用如下命令設置密碼,可簡單設置為 hadoop,按提示輸入兩次密碼:
sudo passwd hadoop
(3)可為 hadoop 用戶增加管理員許可權,方便部署,避免一些棘手的許可權問題:
sudo adduser hadoop sudo
(4)最後註銷當前用戶(點擊屏幕右上角的齒輪,選擇註銷),返回登陸界面。在登陸界面中選擇剛創建的 hadoop 用戶進行登陸。
在我的電腦上,第一次註銷用戶後,整個界面只顯示出來桌面背景,圖形界面無法使用,最初以為是我在創建用戶的過程中出了什麼問題,重啟了幾次電腦,再次進入Ubuntu後,註銷用戶的功能可以正常使用了。
更新apt
apt(Advanced Packaging Tool)是Linux下的一款安裝包管理工具,是一個客戶/伺服器系統。
用 hadoop 用戶登錄後,先更新一下 apt,後續使用 apt 安裝軟體,如果沒更新可能有一些軟體安裝不了。按 ctrl+alt+t 打開終端視窗,執行如下命令:
sudo apt-get update
若出現如下 “Hash校驗和不符” 的提示,可通過更改軟體源來解決。若沒有該問題,則不需要更改。從軟體源下載某些軟體的過程中,可能由於網路方面的原因出現沒法下載的情況,那麼建議更改軟體源。
(1)首先點擊左側任務欄的【系統設置】(齒輪圖標),選擇【軟體和更新】。
(2)點擊 “下載自” 右側的方框,選擇【其他節點】。
(3)在列表中選中【mirrors.aliyun.com】,並點擊右下角的【選擇伺服器】,會要求輸入用戶密碼,輸入即可。
(4)接著點擊關閉,此時會提示列表信息過時,點擊【重新載入】。
(5)最後耐心等待更新緩存即可。更新完成會自動關閉【軟體和更新】這個視窗。如果還是提示錯誤,請選擇其他伺服器節點如 mirrors.163.com 再次進行嘗試。更新成功後,再次執行 sudo apt-get update
就正常了。
後續需要更改一些配置文件,需要安裝vim。安裝軟體時若需要確認,在提示處輸入 y 即可。
sudo apt-get install vim
vim的常用模式有分為命令模式,插入模式,可視模式,正常模式。
(1)正常模式主要用來瀏覽文本內容。一開始打開vim都是正常模式。在任何模式下按下Esc鍵就可以返回正常模式。
(2)插入編輯模式則用來向文本中添加內容的。在正常模式下,輸入i鍵即可進入插入編輯模式。
(3)退出vim:如果有利用vim修改任何的文本,一定要記得保存。Esc鍵退回到正常模式中,然後輸入:wq即可保存文本並退出vim
安裝SSH、配置SSH無密碼登陸
集群、單節點模式都需要用到 SSH 登陸(類似於遠程登陸,可以登錄某台 Linux 主機,並且在上面運行命令),Ubuntu 預設已安裝了 SSH client,此外還需要安裝 SSH server:
sudo apt-get install openssh-server
安裝後,可以使用如下命令登陸本機:
ssh localhost
此時會有如下提示(SSH首次登陸提示),輸入 yes 。然後按提示輸入密碼 hadoop,這樣就登陸到本機了。
但這樣登陸是需要每次輸入密碼的,我們需要配置成SSH無密碼登陸比較方便。
首先退出剛纔的 ssh,就回到了我們原先的終端視窗,然後利用 ssh-keygen 生成密鑰,並將密鑰加入到授權中:
exit # 退出剛纔的 ssh localhost
cd ~/.ssh/ # 若沒有該目錄,請先執行一次ssh localhost
ssh-keygen -t rsa # 會有提示,都按回車就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授權
- 在 Linux 系統中,~ 代表的是用戶的主文件夾,即 “/home/用戶名” 這個目錄,如你的用戶名為 hadoop,則 ~ 就代表 “/home/hadoop/”。 此外,命令中的 # 後面的文字是註釋,只需要輸入前面命令即可。
此時再用 ssh localhost
命令,無需輸入密碼就可以直接登陸了。
安裝Java環境
Java環境可選擇 Oracle 的 JDK,或是 OpenJDK,新版本在 OpenJDK 1.7 下是沒問題的。為圖方便,這邊直接通過命令安裝 OpenJDK 7。
sudo apt-get install default-jre default-jdk
上述安裝過程需要訪問網路下載相關文件,需要保持聯網狀態。安裝結束以後,需要配置JAVA_HOME環境變數,可以在Linux終端中輸入下麵命令打開當前登錄用戶的環境變數配置文件.bashrc:
vim ~/.bashrc
在文件最前面添加如下單獨一行(註意,等號“=”前後不能有空格),然後保存退出:
export JAVA_HOME=/usr/lib/jvm/default-java
接下來,要讓環境變數立即生效,執行如下代碼:
source ~/.bashrc # 使變數設置生效
執行上述命令後,可以檢驗一下是否設置正確:
echo $JAVA_HOME # 檢驗變數值 java -version $JAVA_HOME/bin/java -version # 與直接執行java -version一樣
至此,就成功安裝了Java環境。下麵就可以進入Hadoop的安裝。
在JDK安裝過程中,出現了下麵的問題:
(1)vim ~/.bashrc打開環境變數配置文件之後,將游標直接移動到了文件的起始位置,然後將“export JAVA_HOME=/usr/lib/jvm/default-java
”粘貼到了文件中,由於不清楚vim的使用,在網上查找到了“保存並退出”的方法,按住Ctrl,再按兩下Z,然後,然後我也忘了發生了啥。
(2)以為經過上面的操作就配置完環境變數了,所以在終端中,輸入了上面代碼框中的三條代碼檢驗環境變數是否配置完成,發現環境變數沒有配置成功。
(3)將終端關閉,重新打開,發現終端的頂部出現了錯誤提示:“export JAVA_HOME=/usr/lib/jvm/default-java # ~/.bashrc:executed by bash(1) for non-login shells”,多次打開、關閉終端,這個提示都無法消失,考慮重啟電腦。
(4)重啟電腦,輸入密碼登錄Jesse用戶,能夠正常使用。註銷用戶後,輸入密碼登錄hadoop用戶,界面黑屏,正中央彈出提示框:“export JAVA_HOME=/usr/lib/jvm/default-java # ~/.bashrc:executed by bash(1) for non-login shells”......,點擊提示框下方的確定按鈕沒有反應。
(5)把這個錯誤的情況反映給了俺哥,分析錯誤原因是我在配置環境變數的時候,將.bashrc文件寫錯了,.bashrc文件主要保存個人的一些個性化設置,如命令別名、路徑等,個人暫時理解成,每次登陸用戶都會啟動執行這個文件,這個文件出錯,會導致用戶無法登錄進圖形界面,俺哥給出的解決方案是,把這個文件修改回去,由於我對這個文件的修改僅限於在文件起始位置添加了那一行代碼,所以需要將那一行代碼刪除。
(6)考慮退出圖形界面,在終端里修改那個文件。按“CTRL+ALT+F2”退出圖形界面,輸入用戶密碼登錄,再輸入vim ~/.bashrc,打開文件,用DEL鍵刪除了前面添加的代碼,“ESC”,“:wq”之後提示“readonly”,表明這個文件不可修改。
(7)思考了一下vim ~/.bashrc這行代碼的意義,決定登錄Jesse用戶,然後在Jesse用戶的圖形界面中找到hadoop文件夾下的.bashrc,在編輯器中刪除第一行代碼,emmmm,沒有保存的許可權。
(8)emmmm,考慮到這幾次操作都是因為許可權的原因操作失敗,想到了sudo命令,打開終端,輸入sudo vim ~/.bashrc,輸入Jesse用戶的密碼,在編輯器中刪除第一行代碼,然後“:wq”,保存成功了。也就是說,hadoop的.bashrc文件被修改回去了。
(9)註銷Jesse用戶,重新登錄hadoop用戶,在hadoop用戶的圖形界面中,找到了hadoop文件夾下的.bashrc文件,直接在第一行添加“export JAVA_HOME=/usr/lib/jvm/default-java # ”,保存成功,環境變數設置正確。
emmmm,上面這波操作原因是沒有將“export JAVA_HOME=/usr/lib/jvm/default-java # ”單獨添加到.bashrc的第一行。
安裝Hadoop2
如果使用虛擬機方式安裝Ubuntu系統,請用虛擬機中的Ubuntu自帶firefox瀏覽器下載,才能把hadoop文件下載虛擬機ubuntu中。不要使用Windows系統下的瀏覽器下載,文件會被下載到Windows系統中,虛擬機中的Ubuntu無法訪問外部Windows系統的文件。
如果是使用雙系統方式安裝Ubuntu系統,進入Ubuntu系統,在Ubuntu系統打開firefox瀏覽器訪下載hadoop文件。
Hadoop 2 可以通過 http://mirror.bit.edu.cn/apache/hadoop/common/ 或者 http://mirrors.cnnic.cn/apache/hadoop/common/ 下載,一般選擇下載最新的穩定版本,即下載 “stable” 下的 hadoop-2.x.y.tar.gz 這個格式的文件,這是編譯好的,另一個包含 src 的則是 Hadoop 源代碼,需要進行編譯才可使用。
下載完成後,hadoop文件預設的下載位置是“下載”文件夾。選擇將 Hadoop 安裝至 /usr/local/ 中:
sudo tar -zxf ~/下載/hadoop-2.6.0.tar.gz -C /usr/local # 解壓到/usr/local中(根據所下載的hadoop版本進行修改) cd /usr/local/ sudo mv ./hadoop-2.6.0/ ./hadoop # 將文件夾名改為hadoop(根據所下載的hadoop版本進行修改) sudo chown -R hadoop ./hadoop # 修改文件許可權
- tar -zxf ~/下載/spark-2.1.0.tgz -C /usr/local/ #把spark-2.1.0.tgz這個壓縮文件解壓到/usr/local目錄下
- cd .. #返回上一級目錄
- cd ~ #進入到當前Linux系統登錄用戶的主目錄(或主文件夾)。在 Linux 系統中,~代表的是用戶的主文件夾,即“/home
- mv spark-2.1.0 spark #把spark-2.1.0目錄重新命名為spark
- chown -R hadoop:hadoop ./spark # hadoop是當前登錄Linux系統的用戶名,把當前目錄下的spark子目錄的所有許可權,賦予給用戶hadoop
Hadoop 解壓後即可使用。輸入如下命令來檢查 Hadoop 是否可用,成功則會顯示 Hadoop 版本信息:
cd /usr/local/hadoop
./bin/hadoop version
- 相對路徑和絕對路徑:註意命令中的相對路徑與絕對路徑,比如
./bin/...
,./etc/...
等包含 ./ 的路徑,均為相對路徑,以 /usr/local/hadoop 為當前目錄。例如在 /usr/local/hadoop 目錄中執行./bin/hadoop version
等同於執行/usr/local/hadoop/bin/hadoop version
。可以將相對路徑改成絕對路徑來執行,但如果你是在主文件夾 ~ 中執行./bin/hadoop version
,執行的會是/home/hadoop/bin/hadoop version
,就不是我們所想要的了。
Hadoop單機配置(非分散式)
Hadoop 預設模式為非分散式模式(本地模式),無需進行其他配置即可運行。非分散式即單 Java 進程,方便進行調試。
可以執行例子來感受下 Hadoop 的運行。Hadoop 附帶了豐富的例子(運行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar
可以看到所有例子),包括 wordcount、terasort、join、grep 等。
- wordcount:假設現在有n個文本,WordCount程式就是利用MR計算模型來統計這n個文本中每個單詞出現的總次數。
- grep:該程式實現的是對指定文檔中指定單詞的詞頻進行計算。
在此我們選擇運行 grep 例子,我們將 input 文件夾中的所有文件作為輸入,篩選當中符合正則表達式 dfs[a-z.]+ 的單詞並統計出現的次數,最後輸出結果到 output 文件夾中。