Hadoop完全分布式安裝配置完整過程


一. 硬件、軟件准備

1. 硬件設備

為了方便學習Hadoop,我采用了雲服務器來配置Hadoop集群。集群使用三個節點,一個阿里雲節點、一個騰訊雲節點、一個華為雲節點,其中阿里雲和騰訊雲都是通過使用學生優惠渠道購買了一年的雲服務,華為雲使用免費7天或15天的雲服務器。我決定使用騰訊雲節點作為Master節點,阿里雲節點和華為雲節點作為Slave節點。集群基本結構如下圖:

image

雲服務器配置信息如下:

 

image

 

       集群網絡環境:

image

      分別在每台機器上創建了用戶hadoop,並且全部禁用了防火牆。

     2. 軟件

     由於Hadoop需要JVM環境,所以需要下載JDK。需要的軟件清單如下圖所示。

image

二、環境搭建

1. JAVA安裝

  • 解壓

    我們下載軟件jdk-8u61-linux-x64.tar.gz放在了 /home/install-package 下。先在 /home 下創建了java目錄,並將jdk壓縮文件解壓到該目錄下,命令如下。

[root@libaoshen_tencent java] # tar -zxvf /home/install-package/jdk-8u161-linux-x64.tar.gz -C java
  • 建立軟連接

    和window上的快捷方式一樣,我們為jdk安裝的長路徑建立一個短路徑,方便我們后面設置環境變量。

[root@libaoshen_tencent java]# ln -s /home/java/jdk1.8.0_161/ /home/jdk
  • 配置環境變量

在 /etc/profile 中添加環境變量。

[root@libaoshen_tencent home]
# 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是否安裝配置成功。看到輸出的結果是我們安裝的內容,說明安裝配置成功。

[root@libaoshen_tencent home]# source /etc/profile [root@libaoshen_tencent home]# java -version java version "1.8.0_161"

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的工作目錄下
[root@libaoshen_tencent ~]# su hadoop [hadoop@libaoshen_tencent root]$ cd ~
  • 執行ssh創建密鑰命令
[hadoop@libaoshen_tencent ~]$ ssh-keygen -t rsa

  進入hadoop用戶的工作目錄,查看目錄下的文件,發現出現了一個 .ssh 文件夾。打開 .ssh 文件夾,我們看到了生成的 公鑰 id_rsa.pub 和私鑰 id_rsa 兩個文件。

[hadoop@libaoshen_tencent ~]$ ls -
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
  • 將生成的公鑰覆蓋到authorized_keys
[hadoop@libaoshen_tencent .ssh]$ cp id_rsa.pub authorized_keys
  • 通過再這三台機器上分別執行上面的步驟,將三台機器上hadoop用戶 ~/.ssh/authorized_keys 中的內容合成一個authorized_keys文件,並使用 scp 命令將該文件復刻到其余兩台機器上對應的目錄中。並且同時要設置 .ssh 目錄的訪問權限為700,設置 .ssh/authorized_keys 的權限為600。具體操作如下。

    a.合成后的authorized_keys文件

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2XHqv9F0+ueiDlBqV7M2yKRdtDRmV7OgW7WFOmcN9abkBAumDM4+vZ6fFkHlmPcUcskm7HFiQ4BEZep8NdaZ8kRr2V4dSy0T8IidXgPL6Mc8UH+e5h+VOaelfmBprb8oo0vmdJ73rAn4bswx9FW/4Rm/mTG0ZXuE288LEXktKxQEz31sH8HBDKt+uEjYq9SDiPEnE8Dg85WMHLDdTwrNH7okMrskeetXBhcacp28PXuneEB5fCOu02CdPsQ7LmJZpEt4rSGHa3f/m75jGGKlvK5+g+jGO7SXuipWaogQIVxb6xusKl0qm5YwR9uVB5I3Yy7FpFJjJMvEf78bbHYHR hadoop@ libaoshen_tencent ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUqHX/2CTD9hJa+qyoEIq3juAXTXr1dBxQpsfySOA1VbKZkyzxJVGlFae9YmHrOOrnWTRFiDGrfJL/KxO7Kt1mpJFYivhAkORGgNWAf6KpjCb0ScRUqp/7aUYMjUv7a8nX0wALHURtoViLmI6A21CWuF9tuIbu5FOpquCV4Vz7z32PFNkHiG2l/mfWGzV+1R8bgkCP7JvBZnB4/4bJ+6mzmTyhiQ5VBnbBzF0IH3kCWeCY7B+XHjrW2iaCEv1mCFrBun0J7ojZYr9tv7FXgr1+B0nr3cDP2parcVPY0BdLDz+sRNVUeczQZfcVypQxfNtdCQ+6pcazBLfgL7cwZ8ab hadoop@ libaoshen_ali ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0fq+6HJ72U4S/+FCijVrp6xhKlTOfajQRHISa3+sH3+wQgHzk3OXGYPJC0snkUN5fot+AQcY2n1sc2l+VItRgjxaISXseUjntAG5N0EQb8wjidPaDTYTbcFefc0aHStHJCKH800yoz7Y7DN+Z84G2Lzp7XK+m8zIBuiMpKjrGE77qGd/UmQcQ4Zk1PxWtWogs0xyrjMr3Y3t57r8xMgqPs2lIb2rlYJ3H26q5YAE6XwaNnjogRh1oM0jakEBlKl4jrFMozUQulwabjT+0gfGezXHie4dmrLPesXjGE7cs+hjUEmzYKPZAIK8i0b+YAEw3i/kr0kDWmNOP/JdgQJcEQ==
hadoop@libaoshen.novalocal

    b.為 .ssh 和 .ssh/authorized_keys 分別設置權限為 700 和 600(很關鍵)

[hadoop@libaoshen_tencent ~]$ chmod 700 .ssh/

[hadoop
@libaoshen_tencent ~]$ chmod 600 .ssh/authorized_keys

   c.libaoshen_tencent 節點上測試是否能免密登錄,通過輸出結果看到,可以成功免密登錄

[hadoop@libaoshen_tencent ~]$ ssh hadoop@
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@39.*.*.*:~/.ssh/

[hadoop@libaoshen_tencent ~]$ scp ~
/.ssh/authorized_keys hadoop@114.*.*.*:~/.ssh/

e.最后,在libaoshen_tencent節點上,即Master節點上嘗試免密連接其余的節點,測試ssh是否配置正確。看輸出結果,我們已經可以免密連接Slave節點了,說明ssh配置成功

[hadoop@libaoshen_tencent .ssh]$ ssh hadoop@39.*.*.*

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安裝和配置

  • Master節點安裝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安裝目錄名。操作命令如下。

[root@libaoshen_tencent hadoop]# tar -zxvf hadoop-2.7.5.tar.gz -C ../hadoop/ [root@libaoshen_tencent hadoop]# mv hadoop-2.7.5 hadoop [root@libaoshen_tencent hadoop]# chown -R hadoop:hadoop hadoop

b. 配置hadoop環境變量

[root@libaoshen_tencent hadoop]# vi /etc/profile

添加如下內容

HADOOP_HOME=/home/hadoop/
hadoop PATH=
$PATH:$HADOOP_HOME/
bin export PATH HADOOP_HOME

再執行source /etc/profile 讓環境變量配置生效。同時在 /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh 修改java路徑。如下所示。

[root@libaoshen_tencent hadoop]# vim /usr/hadoop/hadoop/etc/hadoop/hadoop-env.sh

修改java路徑為上面我們所配置的路徑,再執行 source hadoop-env.sh 使其生效。

image

修改后,執行hadoop version, 我們可以看到hadoop的版本號和其他信息。

image

c. 配置hadoop中的配置文件

image

 

    i.core-site.xml: hadoop 的核心配置文件,添加設置為namenode節點的地址,端口號一般為9000

 

     ii.hdfs-site.xml:設置備份數量,由於我們有兩個datanode,所以設置為2

image

     iii.mapred-site.xml:設置jobtracker對應的節點地址,端口號一般為9001

 

     iv.masters和slaves:masters修改為設置為master的那個節點的ip,slaves修改為設置為slave的節點的ip

 

       v.在master上配置完成后,再使用scp命令將java、hadoop及其配置復制到其他的兩個節點上

        復制hadoop

[hadoop@libaoshen_tencent hadoop]$ scp -r /usr/hadoop/hadoop hadoop@39.*.*.*:/usr/ hadoop [hadoop@libaoshen_tencent hadoop]$ scp -r /usr/hadoop/hadoop hadoop@114.*.*.*:/usr/hadoop

           復制配置,由於我們的配置是在root用戶下的,所以需要su root后輸入密碼才能scp

[root@libaoshen_tencent hadoop]# scp -r /etc/profile root@39.*.*.*:/etc [root@libaoshen_tencent hadoop]# scp -r /etc/profile root@114.*.*.*:/etc

三. 啟動

  • 格式化

    運行 hadoop namenode –format,會初始化namenode,記錄集群元數據,即datanode的信息等。

  • 啟動

    在目錄 /usr/hadoop/hadoop/sbin 目錄中執行 ./start-all.sh 即可以啟動,執行 ./stop-all.sh 即可停止

    啟動后可以使用 jps 命令查看hadoop后台進程是否已經啟動

Master節點

image

Slave節點

image

 

可以在瀏覽器中輸入 namenode 的ip + 8088/50070 查看集群狀態

imageimage

安裝過程中遇到的問題

1. 配置不正確,導致分發給其他節點的配置也有問題,最后發現更正的成本比較高。所以一定要仔細檢查,確認配置無誤后,在復制到每個其他的節點;

2. hostname配置不正確,一定要確保 ip 和 hostname 對應,否則就可能出現 hostname unknown等報錯;

3. 在啟動過程中,hadoop會打印日志,當出現問題時,可以查看日志信息,准確定位錯誤位置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM