Hadoop安裝教程_單機/偽分散式配置_騰訊雲/Ubuntu Server 16.04.1 LTS 64位/Hadoop2.9.1
環境
騰訊雲伺服器
系統:Ubuntu Server 16.04.1 LTS 64位
Hadoop版本:hadoop-2.9.1
提示:雲伺服器下的Ubuntu圖形化介面親測很卡,慎用!所以本教程全程shell配置。
裝好了 Ubuntu 系統之後,在安裝 Hadoop 前還需要做一些必備工作。
建立hadoop使用者
如果安裝 Ubuntu 的時候不是 “hadoop” 使用者,那麼需要增加一個名為 hadoop 的使用者,程式碼如下:
sudo useradd -m hadoop -s /bin/bash
設定密碼:
sudo passwd hadoop
為hadoop使用者增加管理員許可權:
sudo adduser hadoop sudo
安裝SSH、配置SSH無密碼登陸
叢集、單節點模式都需要用到 SSH 登陸(類似於遠端登陸,你可以登入某臺 Linux 主機,並且在上面執行命令),Ubuntu 預設已安裝了 SSH client,此外還需要安裝 SSH server:
sudo apt-get install openssh-server
安裝後,可以使用如下命令登陸本機:
ssh localhost
此時會有SSH首次登陸提示,輸入 yes 。然後按提示輸入密碼,就可以登陸到本機。但這樣登陸是需要每次輸入密碼的,我們需要配置成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環境
sudo apt-get install default-jre default-jdk
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 2
wget http://mirror.bit.edu.cn/apache/hadoop/common/stable/hadoop-2.9.1.tar.gz
我們選擇將 Hadoop 安裝至 /usr/local/ 中:
sudo tar -zxf ~/hadoop-2.9.1.tar.gz -C /usr/local # 解壓到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.9.1/ ./hadoop # 將資料夾名改為hadoop
sudo chown -R hadoop ./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 可以在單節點上以偽分散式的方式執行,Hadoop 程序以分離的 Java 程序來執行,節點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的檔案。Hadoop 的配置檔案位於 /usr/local/hadoop/etc/hadoop/ 中,偽分散式需要修改2個配置檔案 core-site.xml 和 hdfs-site.xml 。Hadoop的配置檔案是 xml 格式,每個配置以宣告 property 的 name 和 value 的方式來實現,可用vim編輯器修改。
修改配置檔案 core-site.xml ,將其中
<configuration>
</configuration>
改為:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
同樣,修改配置檔案 hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
Hadoop配置檔案說明
Hadoop 的執行方式是由配置檔案決定的(執行 Hadoop 時會讀取配置檔案),因此如果需要從偽分散式模式切換回非分散式模式,需要刪除 core-site.xml 中的配置項。此外,偽分散式雖然只需要配置 fs.defaultFS 和 dfs.replication 就可以執行,不過若沒有配置 hadoop.tmp.dir 引數,則預設使用的臨時目錄為 /tmp/hadoo-hadoop,而這個目錄在重啟時有可能被系統清理掉,導致必須重新執行 format 才行。所以我們進行了設定,同時也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否則在接下來的步驟中可能會出錯。
配置完成後,執行 NameNode 的格式化:
./bin/hdfs namenode -format
啟動Hadoop:
./sbin/start-dfs.sh
若出現SSH提示,輸入yes即可:
輸入jps命令檢視是否啟動成功: