Hadoop徹底分佈式安裝配置完整過程

一. 硬件、軟件準備

1. 硬件設備

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

image

雲服務器配置信息以下:node

 

image

 

       集羣網絡環境:linux

image

      分別在每臺機器上建立了用戶hadoop,而且所有禁用了防火牆。vim

     2. 軟件瀏覽器

     因爲Hadoop須要JVM環境,因此須要下載JDK。須要的軟件清單以下圖所示。bash

image

2、環境搭建

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安裝的長路徑創建一個短路徑,方便咱們後面設置環境變量。ssh

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

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

[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會打印日誌,當出現問題時,能夠查看日誌信息,準肯定位錯誤位置。

相關文章
相關標籤/搜索