hadoop(04)、Hadoop 集羣模式搭建實踐

     在《hadoop(01)、windows平臺下hadoop環境搭建》一文中,咱們在windows平臺上搭建了單機模式的hadoop,本文咱們將在linux(CentOS7)下搭建hadoop集羣模式,以便實踐更多場景下hadoop的使用,尤爲是在實際的生產模式中,一定是以集羣模式存在。java

1、準備工做

1.三臺CentOS7-64的機器(本文已經在VM中搭建好了)node

2.JDK-LINUX-64的程序包(jdk-8u151-linux-x64.tar.gz)linux

3.hadoop-2.8.2的程序包(hadoop-2.8.2.tar.gz)git

4.SSH鏈接工具(git bash)web

5.FTP傳輸工具(8uftp)apache

準備的三臺虛擬機:windows

192.168.1.10   Master主節點centos

192.168.1.20   Slaver從節點1bash

192.168.1.30   Slaver從節點2app

準備的相關程序包:

2、環境準備

分別打開三臺虛擬機:

1.向三臺主機使用FTP傳文件

打開FTP工具

注意:若是最小化安裝的系統,須要在centos安裝ftp服務:yum -y install vsftpd

特別注意:若是安裝ftp服務時不能解析域名,須要配置dns解析:vi /etc/resolv.conf

nameserver 8.8.8.8

nameserver 8.8.4.4

安裝完成FTP服務,這時候使用FTP服務仍是鏈接不上,咱們修改vsftpd的配置文件:vi /etc/vsftpd/vsftpd.conf

此時,使用命令: netstat -ntlp,此時FTP服務的21端口已經打開,

使用FTP服務上傳hadoop的服務包到/home/hadoop/目錄下:

上傳JDK的程序包/home/java/目錄下:

 

 

2.由於hadoop是java環境下的,因而咱們首先安裝jdk環境

進入/home/java 目錄使用 ls命令查看文件:

這時能看到剛纔使用FTP上傳的hadoop的程序包,而後咱們使用解壓命令:tar -zxvf <file>

通過一會解壓過程,文件解壓完成:

注:文件名太長可寫首字母后用tab自動補齊

而後在/etc/profile文件中,配置環境變量,讓JDK在全部用戶生效:vi /etc/profile

在文件的最後添加如下設置:

注:使用某些SSH工具能夠直接ctrl+c+v操做,不用手動輸入,文本使用的git bash就能夠

export JAVA_HOME=/home/java/jdk1.8.0_151
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib 
export PATH=$JAVA_HOME/bin:$PATH

保存退出後,讓修改的環境變量生效:source /etc/profile

此時環境變量已經生效,咱們驗證下jdk安裝的是否成功: java -version

特別提醒:

1.禁止防火牆:

systemctl stop firewalld.service  中止防火牆

systemctl disable firewalld.service 靜止開機啓動

2.禁止Selinux:

/usr/sbin/sestatus -v  查看Selinux狀態                 

修改/etc/selinux/config 文件將SELINUX=enforcing改成SELINUX=disabled

此處搭建FTP服務詳情可參考《CentOS最小安裝的系統安裝FTP服務

3、集羣搭建

通過前面的全部工做,此時準備工做已經完成。

1.解壓hadoop的程序包

進入/home/hadoop 目錄使用 ls命令查看文件:

這時能看到剛纔使用FTP上傳的hadoop的程序包,而後咱們使用解壓命令:tar -zxvf <file>

通過一會解壓過程,文件解壓完成:

2.配置環境變量

執行vi /etc/profile命令,並在文件末尾添加如下:

export HADOOP_HOME=/home/hadoop/hadoop-2.8.2

export HADOOP_CONF_HOME=$HADOOP_HOME/etc/hadoop

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

保存退出後,讓修改的環境變量生效:source /etc/profile

3.修改配置文件

<1>.修改啓動腳本

vi /home/hadoop/hadoop-2.8.2/etc/hadoop/hadoop-env.sh

vi /home/hadoop/hadoop-2.8.2/etc/hadoop/yarn-env.sh

在這來那個文件都添加export JAVA_HOME=/home/java/jdk1.8.0_151

<2>.修改配置信息

首先配置核心文件:vi  /home/hadoop/hadoop-2.8.2/etc/hadoop/core-site.xml

<configuration>
<property>
         <name>fs.defaultFS</name>
         <value>hdfs://hdpc01:9000</value>
</property>
<property>
         <name>io.file.buffer.size</name>
         <value>131072</value>
</property>
<property>
         <name>hadoop.tmp.dir</name>
         <value>file:/home/hadoop/hadoop-2.8.2/tmp</value>
         <description>Abase for other temporary directories.</description>
</property>
<property>
         <name>hadoop.proxyuser.root.hosts</name>
         <value>*</value>
</property>
<property>
         <name>hadoop.proxyuser.root.groups</name>
         <value>*</value>
</property>
</configuration>

而後配置HDFS文件:vi  /home/hadoop/hadoop-2.8.2/etc/hadoop/hdfs-site.xml

<configuration>
<property>
         <name>dfs.namenode.name.dir</name>
         <value>file:/home/hadoop/hadoop-2.8.2/data/hdfs/name</value>
</property>
<property>
         <name>dfs.datanode.data.dir</name>
         <value>file:/home/hadoop/hadoop-2.8.2/data/hdfs/data</value>
</property>
<property>
         <name>dfs.replication</name>
         <value>3</value>
</property>
<property>
         <name>dfs.namenode.secondary.http-address</name>
         <value>hdpc01:9001</value>
</property>
<property>
         <name>dfs.webhdfs.enabled</name>
         <value>true</value>
</property>
</configuration>

再配置YARN文件:vi  /home/hadoop/hadoop-2.8.2/etc/hadoop/yarn-site.xml

<configuration>
<property>
         <name>yarn.nodemanager.aux-services</name>
         <value>mapreduce_shuffle</value>
</property>
<property>
         <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
         <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
         <name>yarn.resourcemanager.scheduler.address</name>
         <value>hdpc01:8030</value>
</property>
<property>
         <name>yarn.resourcemanager.address</name>
         <value>hdpc01:8032</value>
</property>
<property>
         <name>yarn.resourcemanager.admin.address</name>
         <value>hdpc01:8033</value>
</property>
<property>
         <name>yarn.resourcemanager.resource-tracker.address</name>
         <value>hdpc01:8035</value>
</property>
<property>
         <name>yarn.resourcemanager.webapp.address</name>
         <value>hdpc01:8088</value>
</property>
</configuration>

使用cp mapred-site.xml.template mapred-site.xml

再配置Mapred文件:vi  /home/hadoop/hadoop-2.8.2/etc/hadoop/mapred-site.xml        

<configuration>  
<property>                                                                    
         <name>mapreduce.framework.name</name>  
         <value>yarn</value>  
</property>  
<property>  
         <name>mapreduce.jobhistory.address</name>  
         <value>hdpc01:10020</value>  
</property>  
<property>  
         <name>mapreduce.jobhistory.webapp.address</name>  
         <value>hdpc01:19888</value>  
</property>  
</configuration> 

最後修改slaves配置文件:

hdpc01

hdpc02

hdpc03

特別注意:以上配置中的IP地址最好都使用主機名替換,防止後期ip變動會影響hadoop集羣,要改配置中的IP地址,此處直接使用主機名既能夠避免。

4.從節點安裝

將剛剛主節點配置的hadoop複製到咱們準備好的兩個從節點的機器上,若是目錄一致則不須要修改環境變量,不同修改對應的環境變量(本文使用了快捷的方式,直接將主節點的虛擬機鏡像手動克隆了兩份做爲從節點,該方法快捷簡單,能夠參考《VMware Workstation player 克隆多個CentOS實》),這樣兩個從節點也都配置好了。

5.配置主結點SSH免密登陸子結點

在主節點機器上執行:ssh-keygen -t rsa

而後回車一直到完成:

將id_rsa.pub重定向到authorized_keys:cat id_rsa.pub>>authorized_keys

同理,兩個從節點也都執行此步驟。

注:從節點hdpc03也和上圖hdpc02同樣處理      

在主節點機器上將兩個從節點的id_rsa.pub追加到authorized_keys

ssh hdpc02 cat /root/.ssh/id_rsa.pub>>authorized_keys

ssh hdpc03 cat /root/.ssh/id_rsa.pub>>authorized_keys

出現不能解析域名的問題,咱們須要在三個節點的機器上配置下hosts:vi /etc/hosts

192.168.100.10   hdpc01

192.168.100.20   hdpc02

192.168.100.30   hdpc03

而後執行:

在主節點機器將authorized_keys分發到兩個從節點的/root/.ssh目錄下

scp authorized_keys hdpc02:/root/.ssh/

scp authorized_keys hdpc03:/root/.ssh/

此時主節點機器對兩個從節點機器的免密登錄配置完成,咱們測試下:

ssh hdpc02

ssh hdpc03

 

注意:上面安裝其餘從節點不只能夠克隆鏡像,還能夠在設置免密登錄後使用scp拷貝過去:

scp -r hadoop-2.8.2/ hdpc02:/home/hadoop/

scp -r hadoop-2.8.2/ hdpc03:/home/hadoop/

4、集羣驗證

1.在主節點上格式化

hadoop namenode -format 或者 hdfs namenode -format

此時已經成功格式化。

2.在主節點啓動集羣

執行start-all.sh 

    

使用hadoop dfsadmin -report查看個節點信息:

3.web頁面查看:192.168.100.10:50070

4.web查看集羣信息:192.168.100.10:8088

5.中止集羣

執行stop-all.sh

5、總結

      本文是完整的hadoop集羣搭建過程,經過這過hadoop集羣的工做方式有了更深的認識,同時也是總體能力的一個考驗,爲何這麼說,由於搭建過程當中遇到不少額外的知識,好比我在搭建過程當中遇到不少坑,FTP21號端口被防火牆攔截等問題。最後一步步解決各類問題,成功實踐hadoop集羣的搭建,在此記錄一下,順道幫助更多學習的同窗。

相關文章
相關標籤/搜索