首先說明,本文記錄的是博主搭建的3節點的徹底分佈式hadoop集羣的過程,環境是centos 7,1個nameNode,2個dataNode,以下:html
一、首先,建立好3個Centos7的虛擬機,具體的操做能夠參考網上其餘教程,這個給個連接《windows環境安裝VMware,而且安裝CentOS7 虛擬機》java
二、完成虛擬機的java環境的搭建,能夠參考個人博客《centos7 安裝jdk 1.8》node
三、關閉或者禁用防火牆, systemctl stop firewalld.service 關閉防火牆;systemctl disable firewalld.service 關閉防火牆web
firewall-cmd --state 查看狀態apache
四、修改hosts文件,vim /etc/hosts ,註釋原有的內容,加入以下內容,ip地址爲你本身的虛擬機的IP地址:vim
192.168.10.128 master.hadoop 192.168.10.129 slave1.hadoop 192.168.10.130 slave2.hadoop
more /etc/hosts查看是否正確,須要重啓後方能生效。重啓命令 reboot nowwindows
此處能夠添加ssh key,建立無密碼的公鑰centos
a、在master機器上輸入 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 建立一個無密碼的公鑰,-t是類型的意思,dsa是生成的密鑰類型,-P是密碼,’’表示無密碼,-f後是祕鑰生成後保存的位置 b、在master機器上輸入 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 將公鑰id_dsa.pub添加進keys,這樣就能夠實現無密登錄ssh c、在master機器上輸入 ssh master 測試免密碼登錄 d、在slave1.hadoop主機上執行 mkdir ~/.ssh e、在slave2.hadoop主機上執行 mkdir ~/.ssh f、在master機器上輸入 scp ~/.ssh/authorized_keys root@slave1.hadoop:~/.ssh/authorized_keys 將主節點的公鑰信息導入slave1.hadoop節點,導入時要輸入一下slave1.hadoop機器的登錄密碼 g、在master機器上輸入 scp ~/.ssh/authorized_keys root@slave2.hadoop:~/.ssh/authorized_keys 將主節點的公鑰信息導入slave2.hadoop節點,導入時要輸入一下slave2.hadoop機器的登錄密碼 h、在三臺機器上分別執行 chmod 600 ~/.ssh/authorized_keys 賦予密鑰文件權限 i、在master節點上分別輸入 ssh slave1.hadoop和 ssh slave2.hadoop測試是否配置ssh成功
五、進入home目錄,mkdir hadoop 建立一個hadoop的文件夾。上傳下載好的hadoop包到該目錄,hadoop2.9下載地址;服務器
http://hadoop.apache.org/->左邊點Releases->點mirror site->點http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common->下載hadoop-2.9.0.tar.gz;app
tar -zxvf hadoop-2.9.0.tar.gz 解壓tar包
六、配置hadoop,此節點可暫時先配置128master,而後經過scp的方式複製到兩個從節點
a、vim /home/hadoop/hadoop-2.9.0/etc/hadoop/core-site.xml,在<configuration>節點中增長以下內容:
<property> <name>fs.default.name</name> <value>hdfs://master.hadoop:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/tmp</value> </property> <property> <name>io.file.buffer.size</name> <value>131702</value> </property>
b、vim /home/hadoop/hadoop-2.9.0/etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:///home/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///home/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>master.hadoop:50090</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>
c、cp /home/hadoop/hadoop-2.9.0/etc/hadoop/mapred-site.xml.template /home/hadoop/hadoop-2.9.0/etc/hadoop/mapred-site.xml
vim /home/hadoop/hadoop-2.9.0/etc/hadoop/mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> <final>true</final> </property> <property> <name>mapreduce.jobtracker.http.address</name> <value>master.hadoop:50030</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master.hadoop:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master.hadoop:19888</value> </property> <property> <name>mapred.job.tracker</name> <value>http://master.hadoop:9001</value> </property> </configuration>
d、vim /home/hadoop/hadoop-2.9.0/etc/hadoop/yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master.hadoop:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master.hadoop:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master.hadoop:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master.hadoop:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master.hadoop:8088</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>master.hadoop</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>2048</value> </property> </configuration>
七、配置/home/hadoop/hadoop-2.9.0/etc/hadoop目錄下hadoop.env.sh、yarn-env.sh的JAVA_HOME
取消JAVA_HOME的註釋,設置爲 export JAVA_HOME=/home/java/jdk1.8.0_11
八、配置/home/hadoop/hadoop-2.9.0/etc/hadoop目錄下的slaves,刪除默認的localhost,添加2個slave節點:
slave1.hadoop slave2.hadoop
九、將master服務器上配置好的Hadoop複製到各個節點對應位置上,經過scp傳送:
scp -r /home/hadoop 192.168.10.129:/home/ scp -r /home/hadoop 192.168.10.130:/home/
十、啓動hadoop。在master節點啓動hadoop服務,各個從節點會自動啓動,進入/home/hadoop/hadoop-2.9.0/sbin/目錄,hadoop的啓動和中止都在master上進行;
a、初始化,輸入命令:/home/hadoop/bin/hdfs namenode -format
b、啓動命令:/home/hadoop/bin/start-all.sh
c、輸入jps命令查看相關信息,master上截圖以下:
d、slave節點上輸入jps查看:
e、中止命令:stop-all.sh
十一、訪問,輸入http://192.168.10.128:50070,看到以下界面:
輸入http://192.168.10.128:8088,看到以下界面:
好了。若是以上都成功,那麼基本上完成了hadoop集羣的搭建;