1. 程式人生 > >適合小白的 Hadoop 叢集配置搭建,非常詳細

適合小白的 Hadoop 叢集配置搭建,非常詳細

準備工作:

1。VMware Workstation 14 中安裝虛擬機器 ,版本為 CentOS7(我搭建的叢集為三臺,安裝一臺克隆兩臺,這裡不做解釋,可自行百度)
2。JDK1.8 ,下載地址為  https://pan.baidu.com/s/15YA23CYnT3L-9f6Ao-gzrw
3。hadoop2.7.5 下載地址為 https://pan.baidu.com/s/1Fyfb77R6Tl1ct3pm_yaLdA

新建使用者

每個虛擬機器建立一個hadoop使用者並加入到root組中

#新增使用者hadoop到root組中
useradd -m hadoop -G root -s /bin/bash
#修改使用者密碼--輸入密碼,再次輸入密碼  (建議密碼也設定為hadoop)
passwd hadoop

修改ip為靜態ip

vi /etc/sysconfig/network-scripts/ifcfg-ens33
注意: 最後末尾處新增的ip地址網段要和虛擬機器中的網段保持一致,(Ip自定義但是不能超過255)
其中這兩個中的第三位數字要和VMware Workstation中的網段一致,檢視網段看第二張圖
開啟的位置是 :編輯 ->虛擬網路編輯器

IPADDR=192.168.255.131
GATEWAY=192.168.255.2

這裡寫圖片描述

這裡寫圖片描述

修改完成後 ,重啟網管

[root@dnn1 ~]systemctl restart network

然後修改主機名方便以後訪問(不需要在輸入ip那麼麻煩了以後)

[root@dnn1 ~]# echo nnn > /etc/hostname 

修改對映

vim /etc/hosts

向這個hosts檔案追加三行 ,格式為 Ip地址 主機名 ,一會方便linux 系統之間進行通訊

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain
6 192.168.255.130 nn 192.168.255.131 dn1 192.168.255.132 dn2

完成之後重啟

[root@dnn1 ~]# reboot

安裝上述的方法將其他兩臺虛擬機器也修改了,保證ip不一樣就可以

root 是超級管理員使用者,所做操作無法更改,我們叢集的搭建是在hadoop 使用者上搭建的,標題即使以後有什麼問題也不會影響到整個系統

用hadoop使用者登入到每臺機器上

[root@dnn1 ~]# sudo hadoop

在使用者根目錄下面配置 SSH 無密碼登入

     [hadop@nnn ~]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa 
     [hadop@nnn ~]$ ssh-copy-id dnn1    
     [hadop@nnn ~]$ ssh-copy-id dnn2
##然後測試是否主機之間登入是否需要密碼
    [hadop@nnn ~]$ ssh dnn1
    #檢視主機名,列印的是dnn1 ,無密碼登入成功,然後退出
    [hadop@dnn1 ~]$ hostname
    dnn1
    [hadop@dnn1 ~]$ exit
    [hadop@nnn ~]$ ssh dnn2  
    #檢視主機名,列印的是dnn2 ,無密碼登入成功,然後退出
    [hadop@dnn2 ~]$ hostname
    dnn2
   [hadop@dnn1 ~]$ exit

配置Java和Hadoop 的環境變數
新建opt資料夾(用於存放安裝Linux軟體的)
將下載的 jdk 1.8 和hadoop2.7.5的安裝包解壓到opt 資料夾中,然後解壓配置環境變數

[[email protected] ~]$ mkdir opt
[[email protected] ~]$ vi ~/.bashrc
###向檔案中新增如下程式碼(jdk8資料夾和hadoop2 是jdk 和hadoop檔案解壓後更改的名字)
#JAVA_JDK1.8
export JAVA_HOME=/home/hadoop/opt/jdk8
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP
export HADOOP_HOME=/home/hadoop/opt/hadoop2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

使環境變數生效(每臺機子)

 [hadop@nnn ~]$ source ~/.bashrc

叢集搭建開始了

搭建hadoop全分散式叢集

進入hadoop解壓目錄 
在/home/hadoop/opt/hadoop2/etc/hadoop/資料夾下面修改以下 5個檔案
    1 core-site.xml
    2 hdfs-site.xml
    3 mapred-site.xml
    4 yarn-site.xml
    5 slaves
1.core-site.xml 
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://nnn:9000</value>
        <!-- nnn是master 的 主機名, 9000不固定,只要埠沒有被佔用就可以 -->
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/opt/hadoop2/tmp</value>
    </property>
</configuration>

2.hdfs-site.xml 
<configuration>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
                 <!-- 這個數字2 代表你有幾臺子節點,這個不要錯 -->
        </property>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>nnn:50090</value>
                <!-- nnn是master 的 主機名 -->
        </property>

        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/home/hadoop/opt/hadoop2/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/home/hadoop/opt/hadoop2/tmp/dfs/data</value>
        </property>
</configuration>

3.mapred-site.xml   
<property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
</property>
<property>
      <name>mapreduce.app-submission.cross-platform</name>
      <value>true</value>
</property>
</configuration>

4.yarn-site.xml 配置yarn的主機地址洗牌的預設框架
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>nnn</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>

</configuration>
5.slaves    #配置所有dn的主機名稱        
dn1
dn2

進入hadoop的安裝目錄,遠端分發到伺服器上
[[email protected] ~]$ cd /home/hadoop/opt/

#將整個hadoop2 複製到 其他兩臺機器上 $PWD 是當前的目錄,意思是將 hadoop2 整個資料夾複製到dnn1和dnn2 的這個相同路徑下
scp -r  hadoop2/ dnn1:$PWD
scp -r  hadoop2/ dnn2:$PWD

啟動叢集

一、格式化hdfs 檔案系統(只需要這第一次,以後啟動不需要了,只在nnn(master節點上啟動,其他的節點不需要啟動) )
[hadop@nnn ~]$ hadoop namenode -format

二、啟動dfs 服務和yarn 服務
[hadop@nnn ~]$ start-dfs.sh
[hadop@nnn ~]$ start-yarn.sh

三、驗證是否有開啟的服務,在nnn(master 機器上) 輸入jps 檢視有程序沒有
這裡寫圖片描述
然後分別在 dnn1 和dnn2 (slaves 節點) 輸入jps 檢視是否有程序
這裡寫圖片描述

四、驗證是否能夠在web 端瀏覽頁面,在瀏覽器中輸入 nnn:50070
注意: 如果你的頁面打不開,有兩種可能,
1.你在windows 上的ip 對映沒有配置,
2 Linux 的防火牆沒有關

1修改windows ip 對映

C:\Windows\System32\drivers\etc\hosts

將這個檔案拷貝到桌面上,修改後 覆蓋(管理員許可權,無法直接開啟修改,只能替換)
末尾新增
這裡寫圖片描述

2修改防火牆

`

禁止開機啟動

[[email protected] ~]# systemctl disable firewalld

修改裡面的引數 SELINUX=disabled

[[email protected] ~]# vim /etc/selinux/config
以後開機就永遠都是關閉防火牆了

`
再次測試訪問hadoop web 頁面
訪問nnn:50070
這裡寫圖片描述

檢視活著的子節點是否為2 (即子節點的數量)

這裡寫圖片描述
因為我的叢集有三臺,master 一臺,slave為兩臺,所以活著的節點資訊是2
到此叢集就啟動成功了~
哈哈!!! 恭喜你,叢集搭建成功,若有什麼問題,歡迎留言!我會給大家回覆的