1. 程式人生 > >HDFS完全分散式搭建步驟

HDFS完全分散式搭建步驟

1.準備階段

  • 分散式叢集規劃

準備4個Linux作業系統,並配置好IP地址,將NameNode在Hadoop1節點上啟動,SecondaryNameNode和DataNode在Hadoop2節點上啟動,其餘兩個DataNode分別在Hadoop3和Hadoop4節點上啟動。**

主機名 IP地址 NameNode SecondaryNameNode DataNode
Hadoop1 192.168.23.133 啟動
Hadoop2 192.168.23.130 啟動 啟動
Hadoop3 192.168.23.132 啟動
Hadoop4 192.168.23.131 啟動

2.操作階段

(1)為了不產生資料延遲首先使4臺Linux系統的時間同步
①各個節點安裝ntp :

yum install ntp

②安裝完成後每個節點都執行如下命令從而達到時間同步

/*ntp1.aliyun.com為阿里的時間伺服器*/
ntpdate ntp1.aliyun.com

(2)建立資料夾用來放置Hadoop和JDK的壓縮包,然後輸入以下命令解壓壓縮包

tar -zxvf Hadoop-2.6.5.gz
tar -zxvf jdk-1.8.0_151_linux-x64_bin.gz

配置Hadoop和JDK的環境變數
輸入命令

vim ~/.bashrc

在檔案最後新增

/*配置Hadoop環境變數*/
export HADOOP_HOME=/hpe/hadoop/Hadoop-2.6.5
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

/*配置JDK環境變數*/
export JAVA_HOME=/hpe/hadoop/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin  

輸入命令使環境變數生效

source ~/.bashrc

(3)配置免密登入
Hadoop1節點和其他節點之間進行免密訪問
Hadoop1->Hadoop1
Hadoop1->Hadoop2
Hadoop1->Hadoop3
Hadoop1->Hadoop4
①修改hosts檔案,做好ip之間的對映,輸入以下命令

vim /etc/hosts

在hosts檔案中新增以下程式碼,實現主機名的對映

192.168.23.133 Hadoop1
192.168.23.130 Hadoop2
192.168.23.132 Hadoop3
192.168.23.131 Hadoop4

③在所有節點執行以下命令

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

②在Hadoop1節點執行,將Hadoop1的公鑰加入到其他節點的白名單中

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

(4)修改hdfs-site.xml的配置檔案

切換hdfs-site.xml所在的碟符,輸入vim hdfs-site.xml,在其中新增如下程式碼
<property>
        <name>dfs.replication</name>
        <value>3</value> //Block副本數+1
</property>
<property>   
  
<name>dfs.namenode.secondary.http-address</name>
     <value>Hadoop2:50090</value> //使secondaryNamenode在Hadoop2系統上啟動,50090是設定的埠號
</property>

(5)修改core-site.xml配置檔案

輸入vim core-site.xml,在其中新增如下程式碼
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://Hadoop1:9000</value> //設定預設字首
</property>
<property>
        <name>hadoop.tmp.dir</name>
        <value>/var/abc/hadoop/cluster</value> //初始化生成資料夾的路徑
</property>

(6)修改slaves配置檔案

此部分設定的是DataNode在哪個節點啟動
輸入vim slaves,新增
Hadoop2
Hadoop3
Hadoop4
切記有空格,且不能在一行 

(7)將配置好的安裝包分發到其他節點上

scp -r hadoop-2.6.5 [email protected]:/hpe/hadoop/
scp -r hadoop-2.6.5 [email protected]:/hpe/hadoop/
scp -r hadoop-2.6.5 [email protected]:/hpe/hadoop/

(8)將所有的HDFS相關的程序關閉

stop-dfs.sh

(9)格式化NameNode(建立目錄以及檔案)在Hadoop1節點執行

hdfs namenode -format

(10)啟動HDFS

start-dfs.sh

如出現下圖,則HDFS完全分散式搭建成功

存活節點數為3,證明啟動成功
Lives Nodes為3,證明啟動成功。

3.搭建過程中遇見的問題

1).待Linux系統安裝好後沒有進行IP配置導致節點之間無法正常通訊。
2).沒有關閉防火牆,輸入jps後每個節點正常顯示啟動的角色,但是頁面無法訪問。
3).hosts檔案配置有誤,主要原因是命令前有空格。
4).在配置好安裝包分發到其他節點上以後,修改了Hadoop1節點的配置檔案,導致secondaryNamenode角色啟動失敗。