環境準備
我使用的是centos-6.6版本的4臺虛擬機,主機名分別為node01、node02、node03和node04。我將使用hadoop用戶來搭建集群(在生產環境中,root用戶通常不允許任意使用)。關于虛擬機的安裝,可以參考以下兩篇文章:在Windows中安裝一臺Linux虛擬機,以及通過已有的虛擬機克隆四臺虛擬機。為集群中的每個虛擬機創建一個hadoop用戶,并賦予sudoer權限,參考:Linux用戶管理常用命令和Linux給普通用戶賦予sudoer權限。每臺虛擬機都需要安裝JDK,參考在Linux中安裝JDK。集群中的所有虛擬機需要實現兩兩之間以及自身的免秘鑰登錄,參考配置各臺虛擬機之間免秘鑰登錄。集群中的所有虛擬機的時間需要同步,參考Linux集群系統時間同步。hadoop安裝包的下載地址為:https://www.php.cn/link/eecd2755d73701aa057cd2a32bd7b1e2。
- 集群規劃
- 安裝步驟
(1) 將hadoop安裝包上傳到服務器并解壓
tar zxvf hadoop-2.6.5.tar.gz -C /home/hadoop/apps/
(2) 修改 hadoop-env.sh、mapred-env.sh 和 yarn-env.sh 這三個配置文件,添加JAVA_HOME。hadoop的配置文件位于HADOOP_HOME/etc/hadoop/目錄下。
export JAVA_HOME=/usr/local/jdk1.8.0_73
(3) 修改 core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://node01:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoopdata</value> </property> </configuration>
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/hadoopdata/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/home/hadoop/hadoopdata/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.secondary.http.address</name> <value>node02:50090</value> </property> </configuration>
(5) 修改 mapred-site.xml。集群中只有mapred-site.xml.template,可以從這個文件進行復制。
cp mapred-site.xml.template mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
(6) 修改 yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>node03</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
(7) 修改 slaves 配置文件,指定DataNode所在的節點
node02 node03 node04
(8) 將hadoop安裝包分發給其他節點
[hadoop@node01 hadoop]# scp -r /home/hadoop/apps/hadoop-2.6.5 node02:/home/hadoop/apps/ [hadoop@node01 hadoop]# scp -r /home/hadoop/apps/hadoop-2.6.5 node03:/home/hadoop/apps/ [hadoop@node01 hadoop]# scp -r /home/hadoop/apps/hadoop-2.6.5 node04:/home/hadoop/apps/
(9) 為每個節點配置HADOOP_HOME環境變量
vim ~/.bash_profile export HADOOP_HOME=/home/hadoop/apps/hadoop-2.6.5 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
(10) 在namenode主節點(node01)上格式化文件系統
[hadoop@node01 ~]# hdfs namenode -format
看到以下信息說明格式化成功:
(11) 在namenode主節點(node01)上啟動hdfs系統
[hadoop@node01 ~]# start-dfs.sh
(12) 在resourcemanager所在節點(node03)上啟動yarn
[hadoop@node03 ~]# start-yarn.sh
- 驗證集群是否搭建成功
(1) 查看進程是否全部啟動
[hadoop@node01 ~]# jps 4000 NameNode 4281 Jps <p>[hadoop@node02 ~]# jps 3442 SecondaryNameNode 3289 DataNode 3375 NodeManager 3647 Jps</p><p>[hadoop@node03 ~]# jps 2945 DataNode 3019 ResourceManager 3118 NodeManager 3919 Jps</p><p>[hadoop@node04 ~]# jps 2899 DataNode 2984 NodeManager 3149 Jps
(2) 訪問WEB頁面
(3) 執行hdfs命令或運行一個mapreduce程序測試
# 上傳一個文件 [hadoop@node01 ~]# hdfs dfs -put ./install.log /</p><h1>執行一個mapreduce例子程序</h1><p>[hadoop@node01 mapreduce]# pwd /home/hadoop/apps/hadoop-2.6.5/share/hadoop/mapreduce [root@node02 mapreduce]# hadoop jar hadoop-mapreduce-examples-2.6.5.jar pi 5 5
文件上傳成功:
任務成功運行:
到這里,hadoop完全分布式集群就已經搭建成功了!
- 如果hadoop集群需要重裝,按以下步驟進行
(1) 刪除每個機器中的hadoop日志。日志默認在HADOOP_HOME/logs下,如果不刪除,日志文件會越積累越多,占用磁盤。
(2) 刪除原來的namenode和datanode產生的數據和文件。刪除你配置的hadoop.tmp.dir這個目錄,如果你配置了dfs.datanode.data.dir和dfs.datanode.name.dir這兩個配置,那么把這兩個配置對應的目錄也刪除。
(3) 再重新修改hadoop配置文件后,按照安裝時的步驟進行即可。