首先說(shuō)明,本文記錄的是搭建的3節(jié)點(diǎn)的完全分布式Hadoop集群的過(guò)程,環(huán)境是CentOS 7,1個(gè)nameNode,2個(gè)dataNode,如下:
1、首先,創(chuàng)建好3個(gè)CentOS 7的虛擬機(jī).
2、完成虛擬機(jī)的Java環(huán)境的搭建,可以參考 http://www.sfodin.cn/Linux/2018-11/155296.htm
3、關(guān)閉或者禁用防火墻, systemctl stop firewalld.service 關(guān)閉防火墻;systemctl disable firewalld.service 關(guān)閉防火墻
firewall-cmd –state 查看狀態(tài)
4、修改hosts文件,vim /etc/hosts ,注釋原有的內(nèi)容,加入如下內(nèi)容,ip地址為你自己的虛擬機(jī)的IP地址:
192.168.10.128 master.hadoop
192.168.10.129 slave1.hadoop
192.168.10.130 slave2.hadoop
more /etc/hosts查看是否正確,需要重啟后方能生效。重啟命令 reboot now
此處可以添加ssh key,創(chuàng)建無(wú)密碼的公鑰
a、在master機(jī)器上輸入 ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa 創(chuàng)建一個(gè)無(wú)密碼的公鑰,-t是類型的意思,dsa是生成的密鑰類型,-P是密碼,’’表示無(wú)密碼,-f后是秘鑰生成后保存的位置
b、在master機(jī)器上輸入 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 將公鑰id_dsa.pub添加進(jìn)keys,這樣就可以實(shí)現(xiàn)無(wú)密登陸ssh
c、在master機(jī)器上輸入 ssh master 測(cè)試免密碼登陸
d、在slave1.hadoop主機(jī)上執(zhí)行 mkdir ~/.ssh
e、在slave2.hadoop主機(jī)上執(zhí)行 mkdir ~/.ssh
f、在master機(jī)器上輸入 scp ~/.ssh/authorized_keys root@slave1.hadoop:~/.ssh/authorized_keys 將主節(jié)點(diǎn)的公鑰信息導(dǎo)入slave1.hadoop節(jié)點(diǎn),導(dǎo)入時(shí)要輸入一下slave1.hadoop機(jī)器的登陸密碼
g、在master機(jī)器上輸入 scp ~/.ssh/authorized_keys root@slave2.hadoop:~/.ssh/authorized_keys 將主節(jié)點(diǎn)的公鑰信息導(dǎo)入slave2.hadoop節(jié)點(diǎn),導(dǎo)入時(shí)要輸入一下slave2.hadoop機(jī)器的登陸密碼
h、在三臺(tái)機(jī)器上分別執(zhí)行 chmod 600 ~/.ssh/authorized_keys 賦予密鑰文件權(quán)限
i、在master節(jié)點(diǎn)上分別輸入 ssh slave1.hadoop和 ssh slave2.hadoop測(cè)試是否配置ssh成功
5、進(jìn)入home目錄,mkdir hadoop 創(chuàng)建一個(gè)hadoop的文件夾。上傳下載好的hadoop包到該目錄,hadoop2.9下載地址;
http://hadoop.apache.org/->左邊點(diǎn)Releases->點(diǎn)mirror site->點(diǎn)http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common->下載hadoop-2.9.0.tar.gz;
tar -zxvf hadoop-2.9.0.tar.gz 解壓tar包
6、配置hadoop,此節(jié)點(diǎn)可暫時(shí)先配置128master,然后通過(guò)scp的方式復(fù)制到兩個(gè)從節(jié)點(diǎn)
a、vim /home/hadoop/hadoop-2.9.0/etc/hadoop/core-site.xml,在<configuration>節(jié)點(diǎn)中增加如下內(nèi)容:
<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>
7、配置/home/hadoop/hadoop-2.9.0/etc/hadoop目錄下hadoop.env.sh、yarn-env.sh的JAVA_HOME
取消JAVA_HOME的注釋,設(shè)置為 export JAVA_HOME=/home/java/jdk1.8.0_11
8、配置/home/hadoop/hadoop-2.9.0/etc/hadoop目錄下的slaves,刪除默認(rèn)的localhost,添加2個(gè)slave節(jié)點(diǎn):
slave1.hadoop
slave2.hadoop
9、將master服務(wù)器上配置好的Hadoop復(fù)制到各個(gè)節(jié)點(diǎn)對(duì)應(yīng)位置上,通過(guò)scp傳送:
scp -r /home/hadoop 192.168.10.129:/home/
scp -r /home/hadoop 192.168.10.130:/home/
10、啟動(dòng)hadoop。在master節(jié)點(diǎn)啟動(dòng)hadoop服務(wù),各個(gè)從節(jié)點(diǎn)會(huì)自動(dòng)啟動(dòng),進(jìn)入/home/hadoop/hadoop-2.9.0/sbin/目錄,hadoop的啟動(dòng)和停止都在master上進(jìn)行;
a、初始化,輸入命令:hdfs namenode -format
b、啟動(dòng)命令:start-all.sh
c、輸入jps命令查看相關(guān)信息,master上截圖如下:
d、slave節(jié)點(diǎn)上輸入jps查看:
e、停止命令:stop-all.sh
11、訪問(wèn),輸入http://192.168.10.128:50070,看到如下界面:
輸入http://192.168.10.128:8088,看到如下界面:
好了。如果以上都成功,那么基本上完成了hadoop集群的搭建。