搭建Hadoop分布式叢集
【系統配置說明】
1)系統環境:CentOS-7-x86-Minimal
2)叢集部署:一主三從(master/slave1/slave2/slave3)
3)Java環境:jdk-7u79-linux-x86
4)Hadoop :hadoop-2.6.2.tar.gz
【配置Linux系統環境】
(1)網絡環境配置
1) 首先配置四台虛拟機的網絡環境,設定為靜态IP,IP位址分别如下:
– master:192.168.216.101
– slave1 :192.168.216.102
– slave2 :192.168.216.103
– slave3 :192.168.216.104
2) 配置網絡位址的指令如下:
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
3) 需要改動的地方如下(以master為例,其餘節點配置過程類似):
BOOTPROTO=static
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.216.101
NETMASK=255.255.255.0
GATEWAY=192.168.216.2
DNS1=114.114.114.114
DNS2=8.8.8.8
4) 重新開機網絡服務
sudo systemctl restart network
ifconfig
(2)修改主機名稱
sudo vi /etc/hostname
将主機名稱修改為master(從節點保持一緻), reboot之後可見主機名稱改變
(3)關閉防火牆并禁止開機自啟動
sudo systemcl stop firewalld
sudo systemcl disablefirewalld
(4)配置hosts清單
下邊以主機為例,從節點相同
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.216.101 master
192.168.216.102 slave1
192.168.216.103 slave2
192.168.216.104 slave3
驗證是否修改成功
ping slave1
(5)安裝JDK
1)下載下傳 jdk-7u79-linux-x64.tar.gz
2)通過xtfp将jdk檔案傳送到master的/usr/src目錄下
3)安裝JDK,步驟如下:
su
cd /usr
mkdir java
mv ./src/jdk-7u79-linux-x64.tar.gz ./java
tar -zxvf jdk-7u79-linux-x64.tar.gz
cd jdk1.7.0_79
pwd #複制此處顯示路徑
vi /etc/profile
添加環境變量如下
export JAVA_HOME=/usr/java/jdk1.7.0_79
export PATH=$PATH:$JAVA_HOME/bin
儲存退出
source /etc/profile
(6)免密鑰登入配置(Master節點)
在此步驟之前切換到普通使用者身份下
su master
ssh-keygen -t rsa #在終端生成密鑰
cd /home/master/.ssh #生成的密鑰在此目錄下,id_rsa為私鑰,id_rsa.pub為公鑰
cat id_rsa.pub >> authorized_keys #複制公鑰到authorized_keys檔案
chmod 600 authorized_keys #修改密鑰檔案的權限
scp authorized_keys [email protected]:/home/master/.ssh/ #将公鑰分發給其他三個從節點
ssh [email protected] #驗證免密鑰登入
【Hadoop的配置部署】
【注】:本部分的安裝部署是在普通使用者的身份下進行的,請先切換;
Hadoop叢集搭建時,每個節點上的配置都相同,是以隻要在master節點上操作配置,配置完成之後複制到slave節點上
就好了。
(1)解壓Hadoop安裝檔案
cd /home/master/local/src
tar -zxvf hadoop-2.6.2.tar.gz
cd hadoop-2.6.2
(2)配置環境變量 hadoop-env.sh
vi ./etc/hadoop/hadoop-env.sh #打開環境配置檔案
找到以下代碼
export JAVA_HOME=${JAVA_HOME}
将其替換為以下代碼
export JAVA_HOME=/usr/jave/jdk1.7.0_79
儲存退出,Hadoop的環境變量hadoop-env.sh配置成功,此時Hadoop具備了運作時的環境。
(3)配置環境變量 yarn-env.sh
vi ./etc/hadoop/yarn-env.sh
找到以下代碼
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
去掉注釋,修改為以下代碼
export JAVA_HOME=/home/java/jdk1.7.0_79
儲存退出,Hadoop的YARN環境變量配置成功。此時,Hadoopd YARN子產品具備了運作時的環境。
(4)配置核心元件 core-site.xml
這個xml檔案是Hadoop叢集的核心配置,是關于叢集中分布式檔案系統的入口位址和分布式檔案系統中資料落地到伺服器本地磁盤位置的配置。
vi core-site.xml
在
<configuration></configuration>
中插入以下代碼
<!--HDFS檔案系統的入口位址資訊-->
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/master/var/hadoop/tmp</value>
</property>
至此,hadoop叢集的核心配置完成(slave節點的要設定對應的路徑)。
(5)配置檔案系統 hdfs-site.xml
vi hdfs-site.xml
在
<configuration></configuration>
中插入以下代碼
<property>
<name>dfs.name.dir</name>
<value>/home/master/var/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/master/var/hadoop/dfs/data</value>
</property>
<property>
<!--配置資料塊的副因子(即副本數)為2-->
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
至此,Hadoop叢集的HDFS分布式檔案系統資料塊副本數配置完成。
(6)配置YARN資源系統 yarn-site.xml
vi yarn-site.xml
在
<configuration></configuration>
中插入以下代碼
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
(7)配置計算架構 mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
在
<configuration></configuration>
中插入以下代碼
<property>
<name>mapred.job.tracker</name>
<value>master:49001</value>
</property>
<!--MapReduce計算架構的資源交給YARN來管理-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/master/var/hadoop/var</value>
</property>
1)在master節點配置slaves
vi ./slaves
用下面的内容替換salves檔案中的内容
slave1
slave2
slave3
2)複制到從節點
(8)配置 Hadoop 啟動的系統環境變量
主從節點均執行以下操作
vi ~/.bash_profile
添加以下内容
export HADOOP_HOME=/home/master/local/hadoop-2.6.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bash_profile
(9)建立資料目錄
主從節點均執行以下操作
cd ~
mkdir var
cd var
mkdir hadoop
cd hadoop
mkdir tmp dfs var
cd dfs
mkdir name data
(10)啟動Hadoop叢集
Hadoop叢集包含兩個基本子產品:分布式檔案系統HDFS和分布式并行計算架構MapReduce。啟動叢集時,首先要做的就是在master節點上格式化分布式檔案系統HDFS。
1)格式化檔案系統
hdfs namenode -format
2)啟動 Hadoop
start-all.sh
3)檢視程序是否啟動
jps
master 節點顯示Jps,ResourceManager,SecondaryNameNode,NameNode表示主節點程序啟動成功。
slave節點顯示Jps,DataNode,NodeManager表示從節點啟動成功。
4)Web UI檢視叢集啟動是否成功
浏覽器位址欄輸入 http://192.168.216.101:50070
浏覽器位址欄輸入 http://192.168.216.101:8088
5)運作PI執行個體檢查叢集安裝是否成功
cd ~/local/hadoop-2.6.2/share/hadoop/mapreduce/
hadoop jar hadoop-mapreduce-examples-2.6.2.jar pi 10 10
結果如下所示即為安裝成功
Job Finished in 79.37 seconds
Estimated value of Pi is 3.20000000000000000000
至此,Hadoop叢集安裝啟動成功。