1. 程式人生 > >Hadoop安裝教程_單機/偽分散式配置_騰訊雲/Ubuntu Server 16.04.1 LTS 64位/Hadoop2.9.1

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命令檢視是否啟動成功: