寫在前面
本文采用的方法是先配置好單台機器,然後克隆,隻需要修改克隆機器的mac、ip、hostname就可以完成完全分布式叢集的搭建。
slave檔案控制datanode節點的位置。本文将resourcemanager節點放在Aslave102,secondnamenode放在Aslave103節點。原因是resourcemanager消耗大量記憶體,secondnamenode可以做到namenode的備份。
1.虛拟機準備
為虛拟機準備了,20GB記憶體。400G硬碟。Centos6.10作業系統
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TVHRGaKhlWwZkMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxkTO0QTNwkDM5EzNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2.修改mac位址、ip位址、主機名稱
(1)檢視ip
[[email protected] /]# ifconfig
(2)修改mac
[[email protected] /]#vim /etc/udev/rules.d/70-persistent-net.rules
(3)修改ip位址為靜态ip
[[email protected] /]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改前:
修改後:
(4)重新開機網絡
[[email protected] /]#service network restart
注意ifconfig檢視是否修改成功
(5)配置主機名稱
[[email protected] /]# vi /etc/sysconfig/network
修改HOSTNAME= Aslave101
(6)打開/etc/hosts
[[email protected] /]# vim /etc/hosts
添加如下内容
192.168.11.102 hadoop102 (指定ip對應的名稱,建議多添加一些,友善擴充節點)
并重新開機裝置,重新開機後,檢視主機名,已經修改成功
(7)關閉防火牆
[[email protected] /]chkconfig iptables off
檢視狀态
[[email protected] /]service iptables status
3.配置jdk和hadoop 環境變量(注意,jdk和hadoop的檔案所有者是Hadoop
(1)使用hadoop使用者,在根目錄的/opt目錄下建立module(安裝位置)、和software(壓縮包位置)目錄。目錄的所有者是hadoop。
(2)查詢是否安裝java軟體:
rpm –qa|grep java
(3)如果安裝的版本低于1.7,解除安裝該jdk:
rpm –e 軟體包
(4)上傳jdk和hadoop編譯後的安裝包到software檔案夾下。并解壓到module檔案夾。
(5)安裝jdk
擷取jdk的安裝路徑
[[email protected]_67]# pwd
/opt/module/jdk1.7.0_79
配置環境變量:
[[email protected]_79]# vi /etc/profile
在profie檔案末尾添加jdk路徑:
##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.7.0_79
export PATH=$PATH:$JAVA_HOME/bin
使檔案生效
[[email protected] jdk1.7.0_79]# source /etc/profile
測試jdk是否安裝成功
[[email protected] jdk1.7.0_79]# java -version
java version "1.7.0_79"
(6)安裝hadoop
修改hadoop-env.sh檔案中JAVA_HOME 路徑:
export JAVA_HOME=/opt/module/jdk1.7.0_79
擷取hadoop安裝路徑:
[[email protected] Aslave101 hadoop-2.7.2]# pwd /opt/module/hadoop-2.7.2
打開/etc/profile檔案:
添加:
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
讓檔案生效:
[[email protected] hadoop101 hadoop-2.7.2]# source /etc/profile
4.配置完全分布式叢集
(1)叢集部署規劃
項目 | Aslave101 | Aslave102 | Aslave103 |
---|---|---|---|
HDFS | NameNode | SecondaryNameNode | |
datanode | datanode | ||
ResourceManager&NodeManager | NodeManager |
(2)配置檔案
core-site.xml
<!-- 指定HDFS中NameNode的位址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://Aslave101:8020</value>
</property>
<!-- 指定hadoop運作時産生檔案的存儲目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.7.0_79
hdfs-site.xml定義副本數和secondaryNamenode的位置
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property> <name>dfs.namenode.secondary.http-address</name>
<value>Aslave103:50090</value>
</property>
</configuration>
slaves
Aslave102
Aslave103
Aslave104
yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.7.0_79
yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- reducer擷取資料的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的位址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Aslave102</value>
</property>
</configuration>
mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.7.0_79
mapred-site.xml
<configuration>
<!-- 指定mr運作在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(3)克隆虛拟機
修改mac 位址,ip,hostname。即可。(見第2節)
5.配置ssh免密登入
(1)進入到我的home目錄
cd ~/.ssh
(2)生成公鑰和私鑰:
ssh-keygen -t rsa
然後敲(三個回車),就會生成兩個檔案id_rsa(私鑰)、id_rsa.pub(公鑰)
(3)将公鑰拷貝到要免密登入的目标機器上
ssh-copy-id 192.168.1.102
注意:主機和自己也要拷貝。Aslave101和Aslave102都需要向其他叢集拷貝。
6.啟動Hadoop叢集
在Aslave101 節點
$HADOOP_HOME/sbin/start-dfs.sh
在Aslave102
$HADOOP_HOME/sbin/start-yarn.sh
jps檢視啟動狀況
hdfs狀态
http://Aslave101:50090
資源管理
http://Aslave102:8088