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完全分散式搭建成功
Lives Nodes為3,證明啟動成功。
3.搭建過程中遇見的問題
1).待Linux系統安裝好後沒有進行IP配置導致節點之間無法正常通訊。
2).沒有關閉防火牆,輸入jps後每個節點正常顯示啟動的角色,但是頁面無法訪問。
3).hosts檔案配置有誤,主要原因是命令前有空格。
4).在配置好安裝包分發到其他節點上以後,修改了Hadoop1節點的配置檔案,導致secondaryNamenode角色啟動失敗。