大資料之三 完全分散式搭建
完全分散式
多臺伺服器,每臺伺服器啟動表示不同角色的不同程序,組成HDFS叢集 現在以四臺虛擬機器為例,主機名分別為node01,node02,node03,node04. node01–>NameNode node02–>SecondaryNameNode DateNode node03–>DateNode node04–>DataNode
完全分散式搭建步驟
- 首先確保各節點都配置好靜態IP
- 配置各節點的hosts,修改/etc/hosts檔案
[[email protected] ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.23.130 node01 192.168.23.131 node02 192.168.23.133 node03 192.168.23.134 node04
-
關閉各節點的防火牆 使用
service iptables status
命令檢視當前防火牆狀態 使用service iptables stop
暫時關閉防火牆(防火牆會在下次開機時啟動) 使用chkconfig iptables off
永久關閉防火牆(該命令在下次重啟時生效) -
時間同步 首先在各個節點上使用
yum install ntp
安裝ntp命令 執行ntpdate ntp1.aliyun.com
來同步時間(這裡使用阿里雲伺服器的時間) -
配置SSH免密登入 在所有節點上執行
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
在node01節點上執行以下命令(將node01的公鑰加入到其他節點的白名單中)
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]
- 所有節點配置JDK 所有節點在 /etc/profile 中配置JDK環境變數
export JAVA_HOME=/opt/zgl/jdk1.8.0_151 <!-- 你的JDK的實際位置 --> export PATH=$PATH:$JAVA_HOME/bin
- 在node01節點(即NameNode節點)配置hadoop 修改hdfs-site.xml配置檔案
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 總儲存分數(備份數+1)-->
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node02:50090</value> <!-- SecondaryNameNode的位置 -->
</property>
修改core-site.xml配置檔案
<property>
<name>fs.defaultFS</name> <!-- HDFS檔案預設地址字首(簡化實際訪問時路徑書寫) -->
<value>hdfs://node01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name> <!-- HDFS檔案儲存位置 -->
<value>/var/abc/hadoop/cluster</value>
</property>
修改slaves配置檔案 配置DataNode節點,注意每行寫一個
node02
node03
node04
修改hadoop-env.sh配置檔案
# The java implementation to use.
export JAVA_HOME=/opt/zgl/jdk1.8.0_151
# 在hadoop-env.sh 配置一條hadoop配置檔案所在目錄
export HADOOP_CONF_DIR=/opt/zgl/hadoop-2.6.5/etc/hadoop
重新整理配置 source hadoop-env.sh
- 將配置好的hadoop安裝包分發到其他節點上 使用 scp 命令將hadoop安裝包分發到其他節點,注意其他節點提前建好目錄且與node01目錄(名稱,層級)保持一致 eg: node01 /opt/zgl/hadoop-2.6.5 其他節點 /opt/zgl
scp -r hadoop-2.6.5 [email protected]:/opt/zgl/
scp -r hadoop-2.6.5 [email protected]:/opt/zgl
scp -r hadoop-2.6.5 [email protected]:/opt/zgl/
-
關閉所有的HDFS相關程序 可以使用命令
killall java
因為 hadoop 是基於JVM的 -
在node01節點執行格式化NameNode
hdfs namenode -format
- 在node01節點上啟動HDFS
start-dfs.sh
- 在各節點上執行jps命令檢視節點是否啟動
[[email protected] ~]# jps
2408 NameNode
3545 Jps
[[email protected] ~]# jps
2225 DataNode
2290 SecondaryNameNode
4283 Jps
[[email protected] ~]# jps
3252 Jps
2110 DataNode
[[email protected] ~]# jps
4662 Jps
2111 DataNode
這裡我們也可以通過hadoop提供的 web UI 來進行檢視
開啟瀏覽器,輸入http://192.168.23.130:50070
(因為主機 hosts 檔案中並未配置node01,所以這裡不能使用 http://node01:50070
來訪問),然後我們就來到如下頁面
在 Summary 中可以看到 Live Nodes(存活節點數),點選 Live Nodes可以進入節點詳情頁