Hadoop3.3全分佈式配置

目前Apache官網已經推出了最新版的Hadoop3.3,比原來增加了很多新特性。Hadoop的安裝主要是為Spark提供HDFS的支持和yarn的調度。那麼我們今天介紹全分佈式的Hadoop的安裝方法。安裝系統:Ubuntu 18.04主節點(Master)數量:1從節點(Slave)數量:2

一、前期準備

1.設置用戶

在三臺機器上新建Hadoop用戶並設置sudo權限:

<code>$ su輸入密碼
$useradd -m hadoop -s /bin/bash
$passwd hadoop  # 設置密碼
$adduser hadoop sudo   # 為用戶hadoop增加管理員權限/<code>

這樣做的目的主要是為了避免用root用戶,從安全考慮。

2.安裝Java和Scala並設置相應的環境變量

Hadoop3.0之後的版本只支持Java8以後的版本。下載完jdk解壓之後放置於'/usr/lib/jvm'下面(目錄可以更改),下載完之後在'/etc/profile'中

<code>export JAVA_HOME=/usr/local/java-1.8.0
export JRE_HOME=/usr/local/java-1.8.0/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
export SCALA_HOME=/usr/share/scala-2.11/<code>

配置相關的環境變設置完之後,source /etc/profile使環境變量生效。

3.配置hosts並設置集群機器之間的免密登錄。

由於Hadoop的各個節點之間存在著頻繁的文件拷貝,所以我們需要設置機器之間的免密登錄,如果不設置就相當於集群之間的機器無法相互通信,自然無法安裝成功!因此我們需要配置主節點到從節點的免密登錄和從節點到主節點的免密登錄。步驟如下:

修改hosts

<code>sudo vi /etc/hosts#設置每個機器的名稱和地址:我的設置如下
10.0.0.11    Master
10.0.0.12    Slave1hadoop
10.0.0.13    Slave2hadoop/<code>

設置機器之間免密登錄

ubuntu默認安裝了ssh,直接使用即可。如果沒有安裝的話,需要提前安裝一下。我們在各個節點~目錄下新建一個'.ssh'文件夾來存放我們的秘鑰。然後主節點下運行運行:

<code>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa ##運行之後直接回車就好
##將某個秘鑰添加為可信,接收到這個host的請求後不再需要輸入密碼
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys /<code>

然後我們將生成的id_rsa.pub使用scp命令拷貝到兩個從節點,這樣我們從主節點登錄到從節點就免密了,類似的可以設置從節點到主節點的免密。設置完免密登陸之後在各個機器上登錄一下試試,確保設置正確。

二、Hadoop3.3全分佈式環境搭建

做完上述的工作之後,基本的環境配置就已經做好了。這時候我們需要從官網中下載對應的安裝包(不帶src的安裝包),拉取之後我們將其解壓到目錄/usr/local目錄下,並且將該目錄重命名為hadoop。同時,我們還需要將hadoop目錄設置為hadoop用戶所有:

<code>sudo chown -R hadoop:hadoop hadoop/<code>

1. 設置相應的數據目錄

這些數據目錄是可以自己設置的,只需要在後續的配置中對對應的目錄指定就可以,下面使我的配置。在/usr/local/hadoop下新建文件夾/tmp來做我們的臨時目錄。

<code>sudo mkdir -p /data/hadoop/hdfs/nn    #namenode目錄
sudo mkdir -p /data/hadoop/hdfs/dn    #datanode目錄
sudo mkdir -p /data/hadoop/yarn/nm    #nodemanager目錄
sudo chown -R hadoop:hadoop /data/<code>

2. 修改etc/hadoop/workers文件

注意:舊版本以及網上的教程是修改etc/hadoop/slaves文件,但是新版已經移除了這一個文件,取而代之的是workers文件,我按照我的配置將該文件內容替換為:

<code>Master
Slave1
Slave2/<code>

上述設置代表我的集群有三個datanode結點。

3. 修改對應etc/hadoop下面的其他配置文件:

hadoop_env.sh

<code>export JAVA_HOME=${JAVA_HOME}  #設置JAVA_HOME的路徑,需要再次指明
export HADOOP_HOME=/usr/local/hadoop
#運行對應結點的用戶名稱,因為涉及到文件夾的權限問題,一定要認真設置。
export HDFS_DATANODE_USER=hadoop            
export HDFS_SECONDARYDATANODE_USER=hadoop
export HDFS_NAMENODE_USER=hadoop
export YARN_RESOURCEMANAGER_USER=hadoop
export YARN_NODEMANAGER_USER=hadoop/<code> 

注意的是,如果之前沒有設置JAVA_HOME的環境變量,此處直接這樣引用會出現錯誤,改用絕對路徑即可消除錯誤。

core-site.xml

<code>
                
                    fs.defaultFS
                    hdfs://Master:9000
                
                
                       hadoop.tmp.dir
                       file:/usr/local/hadoop/tmp
                       Abase for other temporary directories.
              
/<code>

上述分別設置了主節點的ip和端口以及臨時目錄的地址(上面創建的tmp目錄)。

hdfs-site.xml

<code>
    
        dfs.namenode.secondary.http-address
        Master:50090
    
    
        dfs.replication
        2
    
    
        dfs.namenode.name.dir
        file:///data/hadoop/hdfs/nn
    
    
        dfs.datanode.data.dir
        file:///data/hadoop/hdfs/dn
    
/<code>


設置了相應的目錄和端口,注意與上面創建的目錄相對應。dfs.replication代表備份數量,一般設為3,此處我們設為2即可。

mapred-site.xml

<code>
    
        mapreduce.framework.name
        yarn
    
    
        mapreduce.jobhistory.address
        Master:10020
    
    
        mapreduce.jobhistory.webapp.address
        Master:19888
    
/<code>

yarn-site.xml

<code>
                 
                
                    yarn.resourcemanager.hostname
                    Master
                
                 
                
                    yarn.nodemanager.aux-services
                    mapreduce_shuffle
                
                
                    yarn.nodemanager.local-dirs
                    file:///data/hadoop/yarn/nm
                
/<code>

4. 從節點設置

我們將hadoop目錄拷貝到從節點的對應目錄,並且修改為hadoop用戶所有。仿照主節點對應的數據目錄設置,設置對應的數據目錄(即/data一系列目錄),並設置為hadoop用戶所有。

5. 設置相應的輔助環境變量,方便使用

在/etc/profile下面添加一下環境變量,修改後source /etc/profile。

<code>export HADOOP_HOME=/usr/local/hadoop
export PATH="${HADOOP_HOME}/bin:${SCALA_HOME}/bin:$PATH"/<code>

後續spark也安裝在對應的目錄下,乾脆一塊設置了!

6. 啟動集群,並驗證配置是否正確

在sbin目錄下,使用./start-all.sh腳本啟動集群。啟動後運行hdfs dfsadmin -report查看對應的數據結點是否正確。瀏覽器輸入Mater:8088就可以看到我們Hadoop的主界面了。如果沒有啟動成功,請查看logs目錄下各個節點的日誌,查看錯誤,一般情況都是由於上述的文件設置不正確導致,請仔細查看。


分享到:


相關文章: