本文詳細介紹搭建4個節點的完全分布式Hadoop集群的方法,Linux系統版本是CentOS 7,Hadoop版本是2.7.7,JDK版本是1.8。
一、准備環境
1. 在VMware workstations上創建4個Linux虛擬機,並配置其靜態IP。
有關【創建Linux虛擬機及配置網絡】,請參考這里。
2. 配置DNS(每個節點)
編輯配置文件,添加主節點和從節點的映射關系。
#vim /etc/hosts 192.168.44.3 hadoop01 192.168.44.4 hadoop02 192.168.44.5 hadoop03 192.168.44.6 hadoop04
3. 關閉防火牆(每個節點)
#關閉服務 [root@hadoop01 opt]# systemctl stop firewalld #關閉開機自啟動 [root@hadoop01 opt]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
4. 配置免密碼登錄
有關【配置免密碼登錄方法】,請參考這里。
5. 配置Java環境(每個節點)
有關【配置java環境方法】,請參考這里。
二、搭建Hadoop完全分布式集群
在各個節點上安裝與配置Hadoop的過程都基本相同,因此可以在每個節點上安裝好Hadoop后,在主節點master上進行統一配置,然后通過scp 命令將修改的配置文件拷貝到各個從節點上即可。
1. 下載Hadoop安裝包,解壓,配置Hadoop環境變量
有關【Hadoop安裝包下載方法】,請參考這里。
本文下載的Hadoop版本是2.7.7,指定一個目錄(比如:/opt),使用rz命令上傳Hadoop安裝包到Linux系統,解壓到指定目錄,配置Hadoop環境變量,並使其生效。實現命令如下:
#解壓到/opt目錄
[root@hadoop01 opt]# tar -zxvf hadoop-2.7.7.tar.gz
#鏈接/opt/hadoop-2.7.7到/opt/hadoop,方便后續配置
[root@hadoop01 opt] #ln -s hadoop-2.7.7 hadoop
#配置Hadoop環境變量
[root@hadoop02 opt]# vim /etc/profile #Hadoop export HADOOP_HOME=/opt/hadoop # 該目錄為解壓安裝目錄 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop #保存后,使profile生效 [root@hadoop02 opt]# source /etc/profile
2. 配置Hadoop環境腳本文件中的JAVA_HOME參數
#進入Hadoop安裝目錄下的etc/hadoop目錄 [root@hadoop01 ~]#cd /opt/hadoop/etc/hadoop #分別在hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中添加或修改如下參數:
[root@hadoop01 hadoop]# vim hadoop-env.sh
[root@hadoop01 hadoop]# vim mapred-env.sh
[root@hadoop01 hadoop]# vim yarn-env.sh
export JAVA_HOME="/opt/jdk" # 路徑為jdk安裝路徑
3. 修改Hadoop配置文件
Hadoop安裝目錄下的etc/hadoop目錄中,需修改core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves(3.0之后為workers)文件,根據實際情況修改配置信息。
(1)core-site.xml
1 <configuration> 2 <property> 3 <!-- 配置hdfs地址 --> 4 <name>fs.defaultFS</name> 5 <value>hdfs://hadoop01:9000</value> 6 </property> 7 <property> 8 <!-- 保存臨時文件目錄,需先在/opt/hadoop-2.7.7下創建tmp目錄 --> 9 <name>hadoop.tmp.dir</name> 10 <value>/opt/hadoop-2.7.7/tmp</value> 11 </property> 12 13 <property> 14 <name>hadoop.proxyuser.root.hosts</name> 15 <value>*</value> 16 </property> 17 <property> 18 <name>hadoop.proxyuser.root.groups</name> 19 <value>*</value> 20 </property> 21 </configuration>
更多配置信息,請參考core-site.xml。
(2)hdfs-site.xml
1 <configuration> 2 <property> 3 <!-- 主節點地址 --> 4 <name>dfs.namenode.http-address</name> 5 <value>hadoop01:50070</value> 6 </property> 7 <property> 8 <name>dfs.namenode.name.dir</name> 9 <value>file:/opt/hadoop/dfs/name</value> 10 </property> 11 <property> 12 <name>dfs.datanode.data.dir</name> 13 <value>file:/opt/hadoop/dfs/data</value> 14 </property> 15 <property> 16 <!-- 備份份數 --> 17 <name>dfs.replication</name> 18 <value>2</value> 19 </property> 20 <property> 21 <!-- 第二節點地址 --> 22 <name>dfs.namenode.secondary.http-address</name> 23 <value>hadoop02:9001</value> 24 </property> 25 <property> 26 <name>dfs.webhdfs.enabled</name> 27 <value>true</value> 28 </property> 29 <property> 30 <name>dfs.permissions</name> 31 <value>false</value> 32 <description>配置為false后,可以允許不要檢查權限就生成dfs上的文件,需防止誤刪操作</description> 33 </property> 34 </configuration>
更多配置信息,請參考hdfs-site.xml。
(3)mapred-site.xml
1 <configuration> 2 <property> 3 <name>mapreduce.framework.name</name> 4 <value>yarn</value> 5 </property> 6 <property> 7 <name>mapreduce.jobhistory.address</name> 8 <value>hadoop01:10020</value> 9 </property> 10 <property> 11 <name>mapreduce.jobhistory.webapp.address</name> 12 <value>hadoop01:19888</value> 13 </property> 14 </configuration>
更多配置信息,請參考mapred-site.xml。
(4)yarn-site.xml
1 <configuration> 2 <property> 3 <name>yarn.nodemanager.aux-services</name> 4 <value>mapreduce_shuffle</value> 5 </property> 6 <property> 7 <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> 8 <value>org.apache.hadoop.mapred.ShuffleHandler</value> 9 </property> 10 <property> 11 <name>yarn.resourcemanager.address</name> 12 <value>hadoop01:8032</value> 13 </property> 14 <property> 15 <name>yarn.resourcemanager.scheduler.address</name> 16 <value>hadoop01:8030</value> 17 </property> 18 <property> 19 <name>yarn.resourcemanager.resource-tracker.address</name> 20 <value>hadoop01:8031</value> 21 </property> 22 <property> 23 <name>yarn.resourcemanager.admin.address</name> 24 <value>hadoop01:8033</value> 25 </property> 26 <property> 27 <name>yarn.resourcemanager.webapp.address</name> 28 <value>hadoop01:8088</value> 29 </property> 30 31 <property> 32 <name>yarn.nodemanager.resource.memory-mb</name> 33 <!-- NodeManager中的配置,這里配置過小可能導致nodemanager啟動不起來 34 大小應該大於 spark中 executor-memory + driver的內存 --> 35 <value>6144</value> 36 </property> 37 <property> 38 <!-- RsourceManager中配置 39 大小應該大於 spark中 executor-memory + driver的內存 --> 40 <name>yarn.scheduler.maximum-allocation-mb</name> 41 <value>61440</value> 42 </property> 43 <property> 44 <!-- 使用核數 --> 45 <name>yarn.nodemanager.resource.cpu-vcores</name> 46 <value>2</value> 47 </property> 48 49 <property> 50 <name>yarn.log-aggregation-enable</name> 51 <value>true</value> 52 </property> 53 <property> 54 <name>yarn.log-aggregation.retain-seconds</name> 55 <value>604800</value> 56 </property> 57 <property> 58 <name>yarn.nodemanager.vmem-check-enabled</name> 59 <value>false</value> 60 <description>忽略虛擬內存的檢查,如果你是安裝在虛擬機上,這個配置很有用,配上去之后后續操作不易出問題。</description> 61 </property> 62 <property> 63 <!-- 調度策略,設置為公平調度器 --> 64 <name>yarn.resourcemanager.scheduler.class</name> 65 <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value> 66 </property> 67 </configuration>
更多配置信息,請參考yarn-site.xml。
(5)slaves文件
#增加從節點地址(若配置了hosts,可直接使用主機名,亦可用IP地址)
[root@hadoop01 hadoop]# vim slaves
hadoop02
hadoop03
hadoop04
4. 將配置好的文件夾拷貝到其他從節點
[root@hadoop01 hadoop-2.7.7]# scp -r /opt/hadoop-2.7.7 root@hadoop02:/opt/
[root@hadoop01 hadoop-2.7.7]# scp -r /opt/hadoop-2.7.7 root@hadoop03:/opt/
[root@hadoop01 hadoop-2.7.7]# scp -r /opt/hadoop-2.7.7 root@hadoop04:/opt/
5. 初始化 & 啟動
#格式化 [root@hadoop01 hadoop-2.7.7]# bin/hdfs namenode -format #啟動 [root@hadoop01 hadoop-2.7.7]# sbin/start-dfs.sh [root@hadoop01 hadoop-2.7.7]# sbin/start-yarn.sh
6. 驗證Hadoop啟動成功
#主節點 [root@hadoop01 hadoop-2.7.7]# jps 5895 Jps 5624 ResourceManager 5356 NameNode #從節點 [root@hadoop02 hadoop]# jps 5152 SecondaryNameNode 5085 DataNode 5245 NodeManager 5357 Jps [root@hadoop03 opt]# jps 5080 DataNode 5178 NodeManager 5278 Jps [root@hadoop04 opt]# jps 5090 NodeManager 5190 Jps 4991 DataNode
7. Hadoop Web端口訪問
注:先開放端口或直接關閉防火牆
# 查看防火牆狀態 firewall-cmd --state # 臨時關閉 systemctl stop firewalld # 禁止開機啟動 systemctl disable firewalld
在瀏覽器輸入:http://hadoop01:8088,打開Hadoop Web管理頁面。

在瀏覽器輸入:http://hadoop01:50070打開Hadoop Web頁面。

注意:如果輸入主節點名稱無法打開Web頁面,則需要配置Windows上的hosts,路徑如下:
C:\Windows\System32\drivers\etc\hosts
192.168.44.5 hadooop01 192.168.44.6 hadooop02 192.168.44.7 hadooop03 192.168.44.8 hadooop04
