hadoop分散式叢集搭建

LeeHua發表於2021-03-04

環境準備

軟體版本

  • 電腦系統:macOS 10.14.6

  • 虛擬機器軟體:Parallels Desktop15

  • Hadoop各節點節點作業系統:CentOS-7-x86_64-Minimal-1908.iso

  • CentOS 7 JDK版本:jdk1.8.0_162

  • Hadoop版本:hadoop-2.7.7

環境配置說明

  • 電腦配置:MacBook Pro 13(8G + 256G)

  • 三臺 CentOS 7 配置:記憶體1G、硬碟13G(與Mac完全隔離的虛擬機器)

  • 三臺 CentOS 7 的名字及IP:node1(10.211.55.18)、node2(10.211.55.19)、node3(10.211.55.20)

  • 三臺虛擬機器的使用者名稱:lyh

操作說明

  • 下面所有的操作,都是在root許可權下進行的:su root 進入root許可權

  • 下面所有的操作,都是用 Mac 的終端遠端連線(ssh)三臺 CentOS 7 進行的,這樣會比較方便快捷

  • 由於centos虛擬機器網路環境沒有本機好,所以這裡採用的是本地下載好所需檔案包,然後通過MacOS 終端上傳到虛擬機器,大家也可以採取直接從虛擬機器上下載所需的檔案包。

免密登入配置

vim 的安裝

CentOS-7-Minimal 剛安裝好,需要給三臺主機都安裝vim編輯器:

yum install vim -y

如果不確定vim是否安裝成功,可以輸入vim -h 檢視是否有vim命令

host配置

  1. 開啟虛擬機器,預設是在 /home/lyh 目錄下的,host配置檔案在根目錄下的 etc 資料夾下,給三臺虛擬機器均進行配置。

  2. 注意,下面的host配置,一定要根據自己的主機名和ip進行配置,三臺主機的配置均一樣。

  3. 根目錄下,輸入:vim ../../etc/hosts ,最後面新增如下內容:

    10.211.55.18 node1
    10.211.55.19 node2
    10.211.55.20 node3
    

關閉防火牆

三臺主機都需要進行該配置。

  1. 檢視防火牆狀態

    firewall-cmd --state
    
  2. 停止防火牆

    systemctl stop firewalld.service
    
  3. 禁止防火牆開機啟動

    systemctl disable firewalld.service
    
  4. 關閉selinux

    • 第一步:在 /home/lyh'目錄下,輸入:

      vim ../../etc/selinux/config
      
    • 註釋掉 SELINUX=enforcing ,新增如下內容:

      SELINUX=disabled
      

      也可以直接將enforcing修改為disabled。

  5. 配置所有各自伺服器本身公鑰和免密:

    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
    
  6. 將公鑰追加到”authorized_keys”檔案

    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
    
  7. 免密登入公鑰分發

    每臺主機,互相分發公鑰,實現各個主機之間的免密登入。

    說明:三臺主機對應的IP

    node1(10.211.55.18)
    node2(10.211.55.19)
    node3(10.211.55.20)
    
    • node1 分發給:node2、node3

      ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.19
      
      ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.20
      
    • node2 分發給:node1、node3

      ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.18
      
      ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.20
      
    • node3 分發給:node1、node2

      ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.18
      
      ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.19
      
  8. 免密登入配置,已經完成,可以進行測試

    ssh node1
    
    ssh node2
    
    ssh node3
    

    三臺主機之間可以實現免密登入了

下載並配置JDK

下載JDK並上傳到虛擬機器

大家可以去到:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html ,選擇自己需要下載的JDK版本,我這裡下載的是 jdk-8u162-linux-x64.tar.gz,下載好後,通過終端,分別上傳到三臺虛擬機器:

scp -r 本地下載好的JDK路徑 虛擬機器使用者名稱@虛擬機器ip:要上傳到虛擬機器的路徑

如:下載好的JDK包在桌面,要上傳到 lyh 使用者的 /app 路徑下,該使用者的IP為 10.211.55.18

scp -r ~/Desktop/jdk-8u162-linux-x64.tar.gz lyh@10.211.55.18:/app

這裡上傳到虛擬機器根目錄的 app 資料夾下,app 資料夾是需要自己建立的。

解壓JDK包並配置Linux環境變數

進入 app 資料夾(三臺虛擬機器都需要安裝JDK)

  1. 解壓JDK包

    tar -zxvf jdk-8u162-linux-x64.tar.gz
    
  2. 建立為JDK軟連結

    ln -s jdk1.8.0_162 jdk
    
  3. 配置環境變數

    在根目錄/ 下,輸入vim /etc/profile,新增如下內容:

    # JAVA
    export JAVA_HOME=/app/jdk
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:.
    export PATH=${JAVA_HOME}/bin:$PATH
    

    路徑要根據自己的實際情況來更改,如我這裡的是:/app/jdk

  4. 如果不能寫入,說明沒有前面沒有進入root許可權,請按下esc後,強制寫入儲存:

    輸入:

    :w !sudo tee %
    

    回車後,需要輸入使用者密碼,以及輸入字母 O 確認。

    然後退出::!q

  5. 使剛剛的配置生效

    source /etc/profile
    
  6. 驗證JDK安裝是否完成

    java -version
    

    出現以下字眼說明安裝成功了

    java version "1.8.0_162"
    Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
    

安裝Hadoop-2.7.7

三臺虛擬機器都需要安裝Hadoop-2.7.7

下載hadoop2.7.7並上傳到虛擬機器

下載地址:https://archive.apache.org/dist/hadoop/core/hadoop-2.7.7/

選擇hadoop-2.7.7.tar.gz進行下載,這裡預設將檔案下載到 ~/Desktop,上傳到虛擬機器的 /app 目錄下

分別上傳到三臺虛擬機器:

src -r ~/Desktop/hadoop-2.7.7.tar.gz lyh@10.211.55.18:/app
src -r ~/Desktop/hadoop-2.7.7.tar.gz lyh@10.211.55.19:/app
src -r ~/Desktop/hadoop-2.7.7.tar.gz lyh@10.211.55.20:/app

解壓安裝包並配置Linux環境變數

  1. 解壓Hadoop安裝包

    tar -zxvf hadoop-2.7.7.tar.gz
    
  2. 為hadoop-2.7.7建立軟連結

    ln -s hadoop-2.7.7 hadoop
    
  3. 配置Linux環境變數

    1. 進入根目錄 /

      vim /etc/profile
      
    2. 新增如下內容

      # HADOOP
      export HADOOP_HOME=/app/hadoop
      export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin    
      
    3. 儲存並退出,是寫入的內容生效

      source /etc/profile
      
  4. 檢查是否安裝成功

    • 輸入:whereis hdfs

      輸出:

      hdfs: /app/hadoop-2.7.7/bin/hdfs.cmd /app/hadoop-2.7.7/bin/hdfs
      
    • 輸入:whereis start-all.sh

      輸出:

      start-all: /app/hadoop-2.7.7/sbin/start-all.cmd /app/hadoop-2.7.7/sbin/start-all.sh
      
  5. 這時候說明安裝成功了

Hadoop 配置

時間同步配置

三臺虛擬機器都需要安裝。

yum install -y ntp

設定NTP服務開機啟動

chkconfig ntpd on

檢視ntp程式是否啟動

ps  aux | grep ntp

node1進行檔案配置

修改目錄 ${HADOOP_HOME}/etc/hadoop 目錄中的檔案

cd ${HADOOP_HOME}/etc/hadoop
  1. 設定 hadoop-env.sh

    • 編輯hadoop-env.sh檔案,找到export JAVA_HONE,修改如下:

      export JAVA_HOMT=/app/jdk
      
  2. 修改 core-site.xml 配置檔案

    <configuration>
            <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://node1:8020</value>
            </property>
            <property>
                    <name>hadoop.tmp.dir</name>
                    <value>/app/hadoop/tmp</value>
            </property>
    </configuration>
    
  3. 修改 hdfs-site.xml 配置檔案

    <configuration>
            <property>
                    <name>dfs.replication</name>
                    <value>2</value>
            </property>
    </configuration>
    
  4. 將 mapred-site.xml.template 複製為檔名是 mapred-site.xml 的檔案

    cp mapred-site.xml.template mapred-site.xml
    
  5. 修改 mapred-site.xml 配置檔案

    <configuration>
            <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
            </property>
    </configuration>
    
  6. 修改 yarn-site.xml 配置檔案

    <configuration>
            <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>node1</value>
            </property>
            <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
            </property>
    <!-- Site specific YARN configuration properties -->
    </configuration>
    
  7. 修改 slaves 檔案,刪除原有內容,修改為如下內容:

    node2
    node3
    

分發配置到 node2、node3 虛擬機器

  1. hadoop/etc目錄下的 hadoop 資料夾分發給另外兩臺虛擬機器

    cd ${HADOOP_HOME}/etc
    
    scp -r hadoop lyh@node2:/app/hadoop/etc/
    
    scp -r hadoop lyh@node3:/app/hadoop/etc/
    

初始化及啟動

  1. 在此之前需要先下載openjdk-devel

    yum install java-1.8.0-openjdk-devel.x86_64
    
  2. 在 node1 格式化 hdfs

    hdfs namenode -format
    
  3. 啟動Hadoop服務

    • 啟動HDFS:start-dfs.sh

    • 啟動YARN:start-yarn.sh

    • 啟動all:start-all.sh

  4. 輸入 jps 可以檢視程式

  5. 關閉Hadoop服務

    stop-all.sh
    

參考文獻

  1. Hadoop分散式安裝
  2. Mac系統下,Hadoop叢集的搭建
  3. hadoop分散式叢集搭建
  4. CentOS7檢視和關閉防火牆
  5. Hadoop叢集SSH服務和免密碼登入的配置
  6. vim /etc/profile 寫入時 出現 E121:無法開啟並寫入檔案解決方案
  7. jps命令無法找到

相關文章