完全分布式:
真正的分布式,由3個及以上的實體機或者虛拟機組成的機群。一個Hadoop叢集環境中,NameNode,SecondaryName和DataNode是需要配置設定在不同的節點上,也就需要三台伺服器
1.配置JAVA 環境
1.1檢查系統是否有JDK環境
[[email protected] jdk1.8]# rpm -qa | grep jdk
1.2解除安裝之前的JDK環境
[[email protected] jdk1.8]# rpm -e --nodeps
1.3建立檔案夾、解壓、配置環境變量
(1)cd /usr/local
mkdir java
(2)[[email protected] ~]$ sudo tar -zxvf jdk-8u241-linux-x64.tar.gz -C /usr/local/java
(3)[[email protected] local]# sudo mv jdk1.8.0_241/ jdk1.8
vim ~/.bashrc
配置内容:
export JAVA_HOME=/usr/local/java/jdk1.8.0_241# 配置Java的安裝目錄
export PATH=$PATH:$JAVA_HOME/bin # 在原PATH的基礎上加入JDK的bin目錄
使檔案生效: source ~/.bashrc
- 檢測jdk是否正确安裝:java -version
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLwMTMwUTMzATM3IzNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
1.4 copy整個目錄到其它機器(或者安裝好jdk後克隆)
scp -r java/ [email protected]:/usr/local
2.配置ssh
2.1修改每台機器主機名(hostname)
hostnamectl set-hostname master (立即生效)
hostnamectl set-hostname slave1 (立即生效)
hostnamectl set-hostname slave2 (立即生效)
2.2修改每台機器/etc/hosts檔案
vi /etc/hosts
修改其中1台,然後scp到其它機器
scp 檔案名 遠端主機使用者名@遠端主機名或ip:存放路徑
scp hosts [email protected]:/etc/
scp hosts [email protected]:/etc/
修改完之後,互ping其它機器,能互ping則說明修改OK
ping -c 3 slave1(※ 3表示發送 3 個資料包)
2.3配置ssh,實作無密碼登入
(無密碼登入,效果也就是在master上,通過ssh slave1或者ssh slave2就可以登入 對方機器,而不用輸入密碼。)
(1)進入:cd /usr
(2)執行:ssh-keygen ## (一直回車即可)
(3)檢視:cd ~/.ssh
ls -al
(4)在master上将公鑰放到authorized_keys裡
cat id_rsa.pub > authorized_keys
(5)将master上的authorized_keys放到其它機器上
scp authorized_keys [email protected]:/root/.ssh
scp authorized_keys [email protected]:/root/.ssh
(6)測試是否成功:ssh slave1(第一次要輸密碼)
3.Hadoop上傳、配置
3.1建立、解壓、環境變量
(1)建立目錄
mkdir /usr/hadoop
(2)解壓
sudo tar -zxvf hadoop-2.7.7.tar.gz -C /usr/hadoop
(3)追加環境變量
vim ~/.bashrc(其它機器也要相應配置一次hadoop環境變量)
配置内容:
#HADOOP
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使環境變量生效:source /.bashrc
(4)确認環境變量配置:hadoop version
3.2建立HDFS存儲目錄
cd /usr/hadoop
mkdir hdfs
cd hdfs
mkdir name data tmp
/usr/hadoop/hdfs/name --存儲namenode檔案
/usr/hadoop/hdfs/data --存儲資料
/usr/hadoop/hdfs/tmp --存儲臨時檔案
3.3配置檔案
3.3.1 hadoop-env.sh
vim /usr/hadoop/hadoop-2.7.7/etc/hadoop/hadoop-env.sh
3.3.2 yarn-env.sh
3.3.3 core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hdfs/tmp</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://master01:9000</value>
</property>
</configuration>
3.3.4 hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
3.3.5 mapred-site.xml
cd /usr/hadoop/hadoop2.7.7/etc/hadoop
cp mapred-site.xml.template mapred-site.xml
配置内容:
<configuration>
<property>
<name>mapreduce.framework.name </name>
<value>yarn</value>
</property>
</configuration>
3.3.6 yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
3.3.7 slaves(删除其中localhost)
3.3.8 copy整個/usr/hadoop/目錄到其它機器
進入:cd /usr/hadoop
scp -r hadoop/ [email protected]1:/usr/hadoop/
scp -r hadoop/ [email protected]:/usr/hadoop/
3.4啟動Hadoop (master上)
(1)格式化:hadoop namenode -format
格式化成功後,可以看到在/usr/hadoop/hdfs/name目錄下多了一個current目錄,而且該目錄下有一系列檔案,如下:
- 執行啟動(namenode隻能在master上啟動,因為配置在master上;datanode每 個節點上都可以啟動)
start-all.sh
master上執行jps,會看到NameNode, SecondaryNameNode, ResourceManager
其它節點上執行jps,會看到DataNode, NodeManager
(3)在wins上打開網頁,檢視HDFS管理頁面 http://10.152.136.5:50070檢視,提示無法通路
在master上,執行以下指令關閉防火牆,即可通路(為了能夠正常通路node節點,最好把
其它機器的防火牆也stop了)
HDFS管理首頁
通路Yarn管理頁: http://10.152.136.5:8088