天天看點

Linux下配置Hadoop 高可用環境搭建

一、環境資源

JDK和Hadoop存在版本相容問題,選擇安裝包的時候一定要考慮到兩個軟體的版本相容,我這裡選擇的安裝版本如下:

  • JDK1.8:https://pan.baidu.com/s/1Rm5ErmvKFjVmwx1uAF90vQ  提取碼:kpre
  • Hadoop2.7:https://pan.baidu.com/s/1xynMsryyTDZBn_ApgbuTSA   提取碼:ir1l 
  • zookeeper-3.4:https://pan.baidu.com/s/1SpIMlWfKgnxd3pL1PIu5IQ   提取碼:0s3a 
二、伺服器準備

本次環境配置共需要4台伺服器,伺服器之間互相可以Ping通,各個節點功能如下圖:

Linux下配置Hadoop 高可用環境搭建
三、檢查四台伺服器時間

要保證伺服器之間的時間誤差保持在幾秒内,否則會造成某些角色程序不能正常啟動

date   //檢視伺服器時間
date -s "2020-07-07 06:00:00"  //設定伺服器時間           
 四、為各個伺服器分别設定别名
  • 打開配置檔案
vi /etc/sysconfig/network   //打開network檔案           
  • 增加配置,别名可以根據需要設定,此處僅為示例 
Linux下配置Hadoop 高可用環境搭建
  • 分别增加IP别名映射
vi /etc/hosts   //打開hosts檔案           
  • 增加映射配置 ,IP和别名之間的映射,要和network中的别名相對應
Linux下配置Hadoop 高可用環境搭建
五、各個伺服器分别禁用SELinux
vi /etc/sysconfig/selinux   //打開selinux檔案           
  • 将 SELINUX設定為disabled
Linux下配置Hadoop 高可用環境搭建
六、各個伺服器分别關閉防火牆 
systemctl stop firewalld.service   //停止firewall  
systemctl disable firewalld.service   //禁止firewall開機啟動           
七、分發秘鑰檔案

将NameNode(192.168.1.6、192.168.1.7)點公鑰分發給其他伺服器,實作NameNode(192.168.1.6、192.168.1.7)到其他角色伺服器的SSH免密登陸

  •  生産NameNode(192.168.1.6/192.168.1.7)節點的秘鑰檔案
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa         //生成秘鑰檔案           
  • 本地安裝
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys   //本地安裝秘鑰           
  • 各個節點分别登陸一下本地,以生成本機的.ssh檔案目錄
ssh localhost           
  • 将NameNode(192.168.1.6)的公鑰分别發送到192.168.1.7、192.168.1.8、192.168.1.9
cd ~/.ssh/   //切換到公鑰所在目錄
scp  id_dsa.pub  192.168.1.7:`pwd`/node606.pub  //将公鑰發送到.7節點目前目錄,并重命名公鑰檔案,以便區分是哪個伺服器的公鑰檔案           
  •  192.168.1.7、192.168.1.8、192.168.1.9分别安裝接收到的公鑰檔案
cat ~/.ssh/node606.pub  >> ~/.ssh/authorized_keys   //安裝公鑰檔案           
  • 192.168.1.7和192.168.1.6操作步驟一樣,此處不再重複
八、NameNode(192.168.1.6)安裝JDK
  • 将Java安裝檔案上傳到伺服器上。
  • 将安裝檔案解壓縮,并記錄jdk解壓檔案根目錄
tar -zxvf 檔案名 解壓目錄  //解壓到目前目錄時,可以省略解壓目錄           
  • 配置JDK環境變量,打開配置檔案,在檔案末尾加入JDK配置,配置内容如截圖所示
vi /etc/profile           
Linux下配置Hadoop 高可用環境搭建
  • 重新整理環境變量:輸入指令,之間重新整理
source /etc/profile           
  • 輸入 jps 指令,如果出現jdk程序資訊,說明JDK環境配置成功
Linux下配置Hadoop 高可用環境搭建
  • 通過scp指令将192.168.1.6)的JDK分别發送到192.168.1.7、192.168.1.8、192.168.1.9
九、192.168.1.6 安裝配置Hadoop
  • 将Hadoop安裝檔案上傳到伺服器上
  • 将Hadoop安裝檔案解壓,并記錄下Hadoop的根目錄
tar -zxvf 檔案名 解壓目錄  //解壓到目前目錄時,可以省略解壓目錄           
  • 配置Hadoop環境變量,在/etc/profile末尾加上對應的配置資訊
vi /etc/profile           
Linux下配置Hadoop 高可用環境搭建
  • 配置Hadoop的Java環境變量:需要為Hadoop根目錄下,ect/hadoop/下的hadoop-env.sh、mapred-env.sh、yarn-env.sh三個檔案分别設定Java環境變量,将JAVA_HOME設定為我們安裝的Java根目錄
vi hadoop-env.sh
vi mapred-env.sh
vi yarn-env.sh           
Linux下配置Hadoop 高可用環境搭建
  • 配置core-site.xml,檔案同樣在Hadoop根目錄下的ect/hadoop/目錄中,需要在檔案中,加入如下配置
vi core-site.xml           
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://mycluster</value>    //mycluster  在hdfs-site.xml中定義的叢集ID
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/hadoop/ha</value>   //臨時存放目錄
    </property>
    <property>
       <name>ha.zookeeper.quorum</name>   //定義ZooKeeper節點
       <value>192.168.1.7:2181,192.168.1.8:2181,192.168.1.9:2181</value>   
    </property>
           
  • 配置hdfs-site.xml,檔案同樣在Hadoop根目錄下的ect/hadoop/目錄中
vi hdfs-site.xml           
<property>
        <name>dfs.replication</name>    //備份數
        <value>2</value>
    </property>

    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>   //叢集ID
    </property>

    <property>
        <name>dfs.ha.namenodes.mycluster</name>   //nameNode ID
        <value>nn1,nn2</value>
    </property>

    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>  //nameNode 節點 rpc 資訊
        <value>192.168.1.6:8020</value>
    </property>

    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>  //nameNode 節點 rpc 資訊
        <value>192.168.1.7:8020</value>
    </property>

    <property> 
        <name>dfs.namenode.http-address.mycluster.nn1</name>  //nameNode 節點 http 資訊
        <value>192.168.1.6:50070</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn2</name>  //nameNode 節點 http 資訊
        <value>192.168.1.7:50070</value>
    </property>

    <property>
       <name>dfs.namenode.shared.edits.dir</name>   //journalNode  主機資訊
       <value>qjournal://192.168.1.6:8485;192.168.1.7:8485;192.168.1.8:8485/mycluster</value>
    </property>

    <property>
       <name>dfs.client.failover.proxy.provider.mycluster</name>  //代理類
       <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>

    <property>
       <name>dfs.journalnode.edits.dir</name>   //journalNode 存放目錄
       <value>/var/hadoop/ha/jn</value>
    </property>

    <property>
       <name>dfs.ha.fencing.methods</name>   //高可用驗證方式
       <value>sshfence</value>
    </property>

    <property>
       <name>dfs.ha.fencing.ssh.private-key-files</name>  //ssh私鑰
       <value>/root/.ssh/id_rsa</value>
    </property>

    <property>
       <name>dfs.ha.automatic-failover.enabled</name>   //設定為自動切換NameNode
       <value>true</value>
    </property>
           
  • 配置slaves檔案:将DataNode各節點IP寫入檔案中
vi slaves           
Linux下配置Hadoop 高可用環境搭建
十、将JDK和Hadoop、/etc/profile檔案分發到其他伺服器上
scp -r /usr/java/jdk1.8.0_172  192.168.1.7:/usr/java/  //要保證發送、接收目錄存在
scp -r /usr/Hadoop/hadoop-2.7.3  192.168.1.7:/usr/Hadoop/  //要保證發送、接收目錄存在
scp  /etc/profile  192.168.1.7:/etc/profile  //發送環境變量檔案
source /etc/profile  //重新整理環境變量資訊           
十一、安裝配置Zookeeper
  • 将Zookeeper安裝檔案上傳到 192.168.1.7 上。
  • 将安裝檔案解壓縮,并記錄Zookeeper解壓檔案根目錄
tar -zxvf 檔案名 解壓目錄  //解壓到目前目錄時,可以省略解壓目錄           
  • 進入zookeeper安裝目錄,進入conf檔案夾,将zoo_sample.cfg重命名zoo.cfg
Linux下配置Hadoop 高可用環境搭建
  • 寫入配置資訊,修改資料存儲位置,并寫入zookeeper節點資訊:節點資訊中,需要為每一台參與到zookeeper叢集中的節點指定編号,編号必須為數字;
Linux下配置Hadoop 高可用環境搭建
  • 通過scpm指令,将zookeeper分發到191.168.1.8和191.168.1.9中;
  • 在192.168.1.7、192.168.1.8、192.168.1.9中,分别建立zookeeper的配置檔案中,資料存放檔案夾
mkdir -p /var/zookeeper           
  • 在192.168.1.7、192.168.1.8、192.168.1.9 的資料目錄下,分别建立myid檔案,并寫入配置檔案中的編号,以标記該節點,需要注意的是,寫入的數字,是配置檔案中,節點的編号
echo 1  > /var/zookeeper/myid    // 1 是192.167.1.7 在zookeeper配置檔案中的編号           
Linux下配置Hadoop 高可用環境搭建
  • 配置JDK環境變量(192.168.1.7、192.168.1.8、192.168.1.9 都需要加上zookeeper環境變量配置),打開配置檔案,在檔案末尾加入JDK配置,配置内容如截圖所示
vi /etc/profile           
Linux下配置Hadoop 高可用環境搭建
  • 重新整理環境變量:輸入指令,直接重新整理
source /etc/profile           
十二、啟動叢集 
  • 啟動zookeeper叢集:在192.168.1.7、192.168.1.8、192.168.1.9中分别執行啟動指令,啟動zookeeper叢集
zkServer.sh start           
  • 啟動journalNode:在192.168.1.6、192.168.1.7、192.168.1.8中分别執行啟動指令
hadoop-daemon.sh start journalnode           
  • 格式化hdfs:192.168.1.6(配置檔案中的nameNode)節點上格式化,出現successfully表示格式化成功(每個Hadoop隻需在第一次進行格式化)。
hdfs namenode -format           
Linux下配置Hadoop 高可用環境搭建
  • 啟動格式化過的nameNode(192.168.1.6)節點
hadoop-daemon.sh start namenode           
  • 将初始化的nameNode中繼資料資訊,拷貝到另外一個nameNode節點,在192.168.1.7中,執行該指令
hdfs namenode -bootstrapStandby           
  • 在zookeeper上,注冊hdfs資訊,在192.168.1.6節點上,執行下方指令
hdfs zkfc -formatZK           
  • 啟動叢集:在192.168.1.6執行Hadoop啟動指令。
start-dfs.sh           
  • 通路Hadoop:通路位址是    你的NameNodeIP:50070,出現這個頁面,代表整個配置完成,如果出錯,Hadoop會在根目錄的log目錄下生産日志檔案,不同節點的日志,會存放在對應伺服器上,可以根據日志,調整配置。
Linux下配置Hadoop 高可用環境搭建
十三、後期使用啟動順序

高可用環境,在首次啟動時,因為需要初始化各方功能,是以過程較為複雜,後續使用過程中,啟動就更簡單,具體步驟如下:

  • 啟動 Zookeeper(僅需在其中一個NameNode節點啟動即可)
zkServer.sh start           
  • 啟動Hadoop(僅需在其中一個NameNode節點啟動即可)
start-dfs.sh           

繼續閱讀