爲了方便學習Hadoop,我採用了雲服務器來配置Hadoop集羣。集羣使用三個節點,一個阿里雲節點、一個騰訊雲節點、一個華爲雲節點,其中阿里雲和騰訊雲都是經過使用學生優惠渠道購買了一年的雲服務,華爲雲使用免費7天或15天的雲服務器。我決定使用騰訊雲節點做爲Master節點,阿里雲節點和華爲雲節點做爲Slave節點。集羣基本結構以下圖:java
雲服務器配置信息以下:node
集羣網絡環境:linux
分別在每臺機器上建立了用戶hadoop,而且所有禁用了防火牆。vim
2. 軟件瀏覽器
因爲Hadoop須要JVM環境,因此須要下載JDK。須要的軟件清單以下圖所示。bash
1. JAVA安裝服務器
咱們下載軟件jdk-8u61-linux-x64.tar.gz放在了 /home/install-package 下。先在 /home 下建立了java目錄,並將jdk壓縮文件解壓到該目錄下,命令以下。網絡
和window上的快捷方式同樣,咱們爲jdk安裝的長路徑創建一個短路徑,方便咱們後面設置環境變量。ssh
在 /etc/profile 中添加環境變量。oop
# vim /etc/profile
添加內容:
JAVA_HOME=/home/jdk
CLASSPATH=$JAVA_HOME/lib
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
隨後使用 source /etc/profile 命令使配置生效,最後經過執行 java –version 查看java是否安裝配置成功。看到輸出的結果是咱們安裝的內容,說明安裝配置成功。
Java(TM) SE Runtime Environment (build
1.8.0_161-
b12) Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
2. SSH配置
Hadoop控制腳本依靠SSH來進行集羣的管理,爲了方便操做,設置SSH爲免密訪問。
進入hadoop用戶的工做目錄,查看目錄下的文件,發現出現了一個 .ssh 文件夾。打開 .ssh 文件夾,咱們看到了生成的 公鑰 id_rsa.pub 和私鑰 id_rsa 兩個文件。
al total 28 drwx------ 3 hadoop hadoop 4096 Mar 16 23:49 . drwxr-xr-x. 5 root root 4096 Mar 16 23:48 .. -rw------- 1 hadoop hadoop 63 Mar 16 23:49 .bash_history -rw-r--r-- 1 hadoop hadoop 18 Aug 3 2016 .bash_logout -rw-r--r-- 1 hadoop hadoop 193 Aug 3 2016 .bash_profile -rw-r--r-- 1 hadoop hadoop 231 Aug 3 2016 .bashrc drwx------ 2 hadoop hadoop 4096 Mar 16 23:49 .ssh [hadoop@libaoshen_tencent ~]$ cd .ssh/
[hadoop
@libaoshen_tencent .ssh]$
ls id_rsa id_rsa.pub
a.合成後的authorized_keys文件
hadoop@libaoshen.novalocal
b.爲 .ssh 和 .ssh/authorized_keys 分別設置權限爲 700 和 600(很關鍵)
[hadoop
@libaoshen_tencent ~]$ chmod 600 .ssh/authorized_keys
c.libaoshen_tencent 節點上測試是否能免密登陸,經過輸出結果看到,能夠成功免密登陸
libaohshen_tencent Last login: Sat Mar 17 13:24:42 2018 from 127.0.0.1
d.隨後分別使用 scp 命令將該authorized_keys 複製到其餘兩個節點上,同時設置文件權限以及分別測試是否能免密登陸
[hadoop@libaoshen_tencent ~]$ scp ~
/.ssh/authorized_keys hadoop@114.*.*.*:~/.ssh/
e.最後,在libaoshen_tencent節點上,即Master節點上嘗試免密鏈接其他的節點,測試ssh是否配置正確。看輸出結果,咱們已經能夠免密鏈接Slave節點了,說明ssh配置成功
Last failed login: Sat Mar
17 13:31:38 CST 2018 from 193..*.*.*
on ssh:notty There were 2
failed login attempts since the last successful login. Last login: Sat Mar 17 13:07:31 2018
Welcome to Alibaba Cloud Elastic Compute Service
!
[hadoop
@libaoshen_ali ~]$
3. Hadoop安裝和配置
a. 咱們已經將下載好的hadoop-2.7.5.tat.gz放在了 /home/install-package 中。首先使用root身份登陸,再將 hadoop-2.7.5.tar.gz壓縮包解壓到 /home/hadoop 中,而後要麼設置link,要麼修改hadoop-2.7.5 目錄爲hadoop,縮短hadoop安裝目錄名。操做命令以下。
b. 配置hadoop環境變量
添加以下內容
hadoop PATH=
$PATH:$HADOOP_HOME/
bin export PATH HADOOP_HOME
再執行source /etc/profile 讓環境變量配置生效。同時在 /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh 修改java路徑。以下所示。
修改java路徑爲上面咱們所配置的路徑,再執行 source hadoop-env.sh 使其生效。
修改後,執行hadoop version, 咱們能夠看到hadoop的版本號和其餘信息。
c. 配置hadoop中的配置文件
i.core-site.xml: hadoop 的核心配置文件,添加設置爲namenode節點的地址,端口號通常爲9000
ii.hdfs-site.xml:設置備份數量,因爲咱們有兩個datanode,因此設置爲2
iii.mapred-site.xml:設置jobtracker對應的節點地址,端口號通常爲9001
iv.masters和slaves:masters修改成設置爲master的那個節點的ip,slaves修改成設置爲slave的節點的ip
v.在master上配置完成後,再使用scp命令將java、hadoop及其配置複製到其餘的兩個節點上
複製hadoop
複製配置,因爲咱們的配置是在root用戶下的,因此須要su root後輸入密碼才能scp
運行 hadoop namenode –format,會初始化namenode,記錄集羣元數據,即datanode的信息等。
在目錄 /usr/hadoop/hadoop/sbin 目錄中執行 ./start-all.sh 便可以啓動,執行 ./stop-all.sh 便可中止
啓動後能夠使用 jps 命令查看hadoop後臺進程是否已經啓動
Master節點
Slave節點
能夠在瀏覽器中輸入 namenode 的ip + 8088/50070 查看集羣狀態
安裝過程當中遇到的問題:
1. 配置不正確,致使分發給其餘節點的配置也有問題,最後發現更正的成本比較高。因此必定要仔細檢查,確認配置無誤後,在複製到每一個其餘的節點;
2. hostname配置不正確,必定要確保 ip 和 hostname 對應,不然就可能出現 hostname unknown等報錯;
3. 在啓動過程當中,hadoop會打印日誌,當出現問題時,能夠查看日誌信息,準肯定位錯誤位置。