hadoop集群安裝規划


http://mp.weixin.qq.com/s?__biz=MzI5MDYxNjIzOQ==&mid=2247483999&idx=1&sn=016e4c4d0ba7bd96e9f2d2d5f8cbe0de&chksm=ec1c649fdb6bed89e74984c28859557f577cdfedcdcee3f67ad50a5097daaff0e67718c50121&mpshare=1&scene=23&srcid=06136e9eXqqwI9Vfl2bIWLiv#rd

在搭建Hadoop分布式集群之前,我們需要先准備好3台主機,分別安裝好Linux系統,並完成Linux系統的網絡配置和系統配置。

 

相關資料:史上最全的Linux資料包,視頻、電子書、PPT應有盡有。領取辦法:關注“大數據研習社”后,微信后台回復“Linux”,即可獲得私密下載鏈接。

 

 

 

1.集群安裝規划

1.1主機規划

這里我們選擇3台主機搭建Hadoop3.0高可用的分布式集群,雖然節點有點少,但是足以完成分布式集群搭建,並進行合理的主機規划。

 

master

slave1

slave2

Namenode

DataNode

ResourceManager

NodeManager

Journalnode

Zookeeper

大家需要注意的是:從Hadoop3.0開始支持更多的Namenode,因為我們只有3台機器,所以這3台機器都配置為Namenode,實際工作中Namenode也不宜過多,否則對集群造成壓力。其他角色保持跟Hadoop2.x一致即可,如果Hadoop2.x集群不熟悉可以參考大講台課程:http://www.dajiangtai.com/course/4.do

1.2軟件規划

軟件

版本

位數

說明

Jdk

Jdk1.8

64位

穩定版本

Centos

Centos6.5

64位

穩定版本

Zookeeper

Zookeeper3.4.6

 

穩定版本

Hadoop

Hadoop   3.0.0-alpha3

 

最新版本

需要注意的是:Hadoop3.0最低支持Java8,如果大家還在使用Java7或者更低版本,請升級到Java8。

1.3用戶規划

出於權限考慮,Hadoop集群環境安裝不要使用root用戶,需要大家自己創建相關的用戶和用戶組,注意創建用戶的時候需要設置密碼。

 

節點名稱

用戶組

用戶

Master

Hadoop

Hadoop3

Slave1

Hadoop

Hadoop3

Slave2

Hadoop

Hadoop3

1.4數據目錄規划

在搭建Hadoop集群之前,需要規划好所有的軟件目錄和數據存放目錄,便於后期的管理與維護。

目錄名稱

絕對路徑

所有軟件存放目錄

/home/hadoop3/app

所有數據與日志存放目錄

/home/hadoop3/data

 

2. 集群安裝前的環境檢查

2.1時鍾同步

所有節點的系統時間要與當前時間保持一致,否則集群運行會出現異常。時鍾同步在3台機器上都需要操作,這里以master節點為例。

首先查看master節點的當前系統時間

如果系統時間與當前網絡時間不一致,進行以下操作。

[root@master ~]# cd /usr/share/zoneinfo/

[root@master zoneinfo]# ls          //找到Asia

[root@master zoneinfo]# cd Asia/            //進入Asia目錄

[root@master Asia]# ls            //找到Shanghai

[root@master Asia]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime             //當前時區替換為上海

我們可以保持當前系統時間與NTP(網絡時間協議)一致。

[root@master Asia]# yum install ntp   //如果ntp命令不存在,在線安裝ntp

[root@master Asia]# ntpdate pool.ntp.org          //執行此命令同步日期時間

[root@master Asia]# date              //查看當前系統時間

2.2 hosts文件檢查

為了便於集群的操作,所有節點的hosts文件需要配置靜態ip與hostname之間的對應關系。

2.3禁用防火牆

學習環境下,大家可以將防火牆關閉掉。

在root用戶下,查看防火牆狀態

[root@master ~]# service iptables status

執行以下命令可以臨時關閉防火牆

[root@master ~]#  service iptables stop

執行以下命令才可以永久關閉防火牆

[root@master ~]#  chkconfig iptables off   

如果防火牆狀態如下,則說明防火牆已經關閉。

 

3. 配置SSH免密碼通信

Hadoop 集群中各個節點間會通過 SSH 訪問,每次訪問都輸入密碼是不切實際的,所以需要配置各個節點間的 SSH 是無密碼登錄的。

首先在各個節點上生成公鑰,這里以master節點、Hadoop3用戶為例

[root@master ~]# su hadoop3            //切換到hadoop3用戶下

[hadoop3@master root]$ cd        //切換到hadoop3用戶目錄

[hadoop3@master ~]$ mkdir .ssh

[hadoop3@master ~]$ ssh-keygen -t rsa        //執行命令一路回車,生成秘鑰

[hadoop3@master ~]$cd .ssh

[hadoop3@master .ssh]$ ls

id_rsa  id_rsa.pub

[hadoop3@master .ssh]$ cat id_rsa.pub >> authorized_keys           //將公鑰保存到authorized_keys認證文件中

[hadoop3@master .ssh]$ ls

authorized_keys  id_rsa  id_rsa.pub

[hadoop3@master .ssh]$ cd ..

[hadoop3@master ~]$ chmod 700 .ssh

[hadoop3@master ~]$ chmod 600 .ssh/*

[hadoop3@master ~]$ ssh master            //第一次執行需要輸入yes

[hadoop3@master ~]$ ssh master            //第二次以后就可以直接訪問

將另外2個節點中的共鑰id_ras.pub拷貝到master節點中的authorized_keys文件中。

cat ~/.ssh/id_rsa.pub | ssh hadoop3@master 'cat >> ~/.ssh/authorized_keys' 

然后將master中的authorized_keys文件分發到其他2個節點上。

scp -r authorized_keys hadoop3@slave1:~/.ssh/

scp -r authorized_keys hadoop3@slave2:~/.ssh/

各個節點如果能通過ssh相互訪問,且不需要輸入密碼,則代表ssh配置成功。

 

4. 腳本工具的使用

在master節點,hadoop3用戶下創建/home/hadoop3/tools目錄。

[hadoop3@master ~]$ mkdir /home/hadoop3/tools

cd /home/hadoop3/tools

將本地腳本文件上傳至/home/hadoop3/tools目錄下,這些腳本大家可以自己寫, 如果不熟練也可以直接使用。

[hadoop3@master tools]$ rz deploy.conf

[hadoop3@master tools]$ rz deploy.sh

[hadoop3@master tools]$ rz runRemoteCmd.sh

[hadoop3@master tools]$ ls

deploy.conf  deploy.sh  runRemoteCmd.sh

查看一下deploy.conf配置文件內容。

[hadoop3@master tools]$ cat deploy.conf

master,all,namenode,zookeeper,resourcemanager,

slave1,all,slave,namenode,zookeeper,resourcemanager,

slave2,all,slave,datanode,zookeeper,

查看一下deploy.sh遠程復制文件腳本內容。

[hadoop3@master tools]$ cat deploy.sh

#!/bin/bash

#set -x

 

if [ $# -lt 3 ]

then

  echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag"

  echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag confFile"

  exit

fi

 

src=$1

dest=$2

tag=$3

if [ 'a'$4'a' == 'aa' ]

then

  confFile=/home/hadoop3/tools/deploy.conf

else

  confFile=$4

fi

 

if [ -f $confFile ]

then

  if [ -f $src ]

  then

    for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`

    do

       scp $src $server":"${dest}

    done

  elif [ -d $src ]

  then

    for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`

    do

       scp -r $src $server":"${dest}

    done

  else

      echo "Error: No source file exist"

  fi

 

else

  echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"

fi

查看一下runRemoteCmd.sh遠程執行命令腳本內容。

[hadoop3@master tools]$ cat runRemoteCmd.sh

#!/bin/bash

#set -x

 

if [ $# -lt 2 ]

then

  echo "Usage: ./runRemoteCmd.sh Command MachineTag"

  echo "Usage: ./runRemoteCmd.sh Command MachineTag confFile"

  exit

fi

 

cmd=$1

tag=$2

if [ 'a'$3'a' == 'aa' ]

then

 

  confFile=/home/hadoop3/tools/deploy.conf

else

  confFile=$3

fi

 

if [ -f $confFile ]

then

    for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`

    do

       echo "*******************$server***************************"

       ssh $server "source /etc/profile; $cmd"

    done

else

  echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"

fi

以上三個文件,方便我們搭建hadoop3分布式集群。具體如何使用看后面如何操作。

如果我們想直接使用腳本,還需要給腳本添加執行權限。

[hadoop3@master tools]$ chmod u+x deploy.sh

[hadoop3@master tools]$ chmod u+x runRemoteCmd.sh

同時我們需要將/home/hadoop3/tools目錄配置到PATH路徑中。

[hadoop3@master tools]$vi ~/.bashrc

PATH=/home/hadoop3/tools:$PATH

export PATH

我們在master節點上,通過runRemoteCmd.sh腳本,一鍵創建所有節點的軟件安裝目錄/home/hadoop3/app。

[hadoop3@master tools]$ runRemoteCmd.sh "mkdir /home/hadoop3/app" all

我們可以在所有節點查看到/home/hadoop3/app目錄已經創建成功。

 

5. jdk安裝

下載jdk1.8至本地,然后將jdk1.8上傳至/home/hadoop3/app目錄下。

[hadoop3@master app]$  ls

jdk-8u51-linux-x64.tar.gz

解壓

[hadoop3@master app]$ tar –zxvf  jdk-8u51-linux-x64.tar.gz

刪除安裝包

[hadoop3@master app]$ rm –rf jdk-8u51-linux-x64.tar.gz

[hadoop3@master app]$  ls

jdk1.8.0_51

創建jdk軟鏈接

[hadoop3@master app]$ ln –s jdk1.8.0_51  jdk

在hadoop3用戶下,配置jdk環境變量

[hadoop3@master app]$ vi  ~/.bashrc

JAVA_HOME=/home/hadoop3/app/jdk

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

PATH=$JAVA_HOME/bin:/home/hadoop3/tools:$PATH

export JAVA_HOME CLASSPATH PATH

生效配置文件

[hadoop3@master app]$ source  ~/.bashrc

確認jdk配置成功

[hadoop3@master app]$ java -version

java version "1.8.0_51"

Java(TM) SE Runtime Environment (build 1.8.0_51-b16)

Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

通過deploy.sh腳本將jdk安裝目錄分發到另外兩個節點

[hadoop3@master app]$ deploy.sh jdk1.8.0_51 /home/hadoop3/app/ slave

在另外兩個節點做相關操作,完成jdk配置

 

6. Zookeeper安裝

下載zookeeper-3.4.6.tar.gz安裝包,然后上傳至/home/hadoop3/app目錄

6.1解壓

[hadoop3@master app]$ ls

zookeeper-3.4.6.tar.gz

[hadoop3@master app]$ tar –zxvf zookeeper-3.4.6.tar.gz

[hadoop3@master app]$ ls

zookeeper-3.4.6

[hadoop3@master app]$ rm –rf zookeeper-3.4.6.tar.gz

6.2修改配置文件

[hadoop3@master app]$ cd zookeeper-3.4.6/conf/

[hadoop3@master conf]$ ls

configuration.xsl  log4j.properties  zoo_sample.cfg

[hadoop3@master conf]$ cp  zoo_sample.cfg  zoo.cfg

[hadoop3@master conf]$vi zoo.cfg

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/home/hadoop3/data/zookeeper/zkdata

dataLogDir=/home/hadoop3/data/zookeeper/zkdatalog

# the port at which the clients will connect

clientPort=2181

# the maximum number of client connections.

# increase this if you need to handle more clients

#maxClientCnxns=60

#

# Be sure to read the maintenance section of the

# administrator guide before turning on autopurge.

#

# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

#

# The number of snapshots to retain in dataDir

#autopurge.snapRetainCount=3

# Purge task interval in hours

# Set to "0" to disable auto purge feature

#autopurge.purgeInterval=1

server.1=master:2888:3888

server.2=slave1:2888:3888

server.3=slave2:2888:3888

備注:

1 2 3代表服務編號;2888代表Zookeeper節點通信端口;3888代表zook選舉端口

6.3遠程拷貝

通過遠程腳本deploy.sh將Zookeeper安裝目錄拷貝到其他節點。

[hadoop3@master app]$ deploy.sh zookeeper-3.4.6 /home/hadoop3/app/ slave

所有節點創建數據目錄和日志目錄

[hadoop3@master app]$ runRemoteCmd.sh "mkdir -p /home/hadoop3/data/zookeeper/zkdata" all 

[hadoop3@master app]$ runRemoteCmd.sh "mkdir -p /home/hadoop3/data/zookeeper/zkdatalog" all 

6.4創建myid文件

在各個節點上,在 dataDir 所指定的目錄下創一個名為 myid 的文件, 文件內容為各個server 點后面的數字。

[hadoop3@master zkdata]$ vi myid

[hadoop3@slave1 zkdata]$ vi myid

[hadoop3@slave2 zkdata]$ vi myid

6.5測試運行

使用runRemoteCmd.sh 腳本,啟動所有節點上面的Zookeeper。

[hadoop3@master zookeeper-3.4.6]$runRemoteCmd.sh "/home/hadoop3/app/zookeeper-3.4.6/bin/zkServer.sh start" zookeeper

查看所有節點上面的QuorumPeerMain進程是否啟動。

[hadoop3@master zookeeper-3.4.6]$ runRemoteCmd.sh "jps" all

查看所有Zookeeper節點狀態。

[hadoop3@master zookeeper-3.4.6]$ runRemoteCmd.sh "/home/hadoop3/app/zookeeper-3.4.6/bin/zkServer.sh status" all

如果一個節點為leader,另兩個節點為follower,則說明Zookeeper安裝成功。

 

7.Hadoop3.0分布式集群搭建

7.1配置HDFS

7.1.1下載解壓Hadoop3.0

到Hadoop官網下載hadoop-3.0.0-alpha2.tar.gz,並上傳至/home/hadoop3/app目錄

[hadoop3@master app]$ ls

hadoop-3.0.0-alpha2.tar.gz

[hadoop3@master app]$tar –zxvf hadoop-3.0.0-alpha2.tar.gz

[hadoop3@master app]$ ls

hadoop-3.0.0-alpha2.tar.gz  hadoop-3.0.0-alpha3

[hadoop3@master app]$ rm –rf hadoop-3.0.0-alpha2.tar.gz

[hadoop3@master app]$ mv hadoop-3.0.0-alpha3 hadoop-3.0.0

7.1.2配置hadoop-env.sh

[hadoop3@master app]$ cd hadoop-3.0.0/etc/hadoop/

[hadoop3@master hadoop]$ vi hadoop-env.sh

export JAVA_HOME=/home/hadoop3/app/jdk

export HADOOP_HOME=/home/hadoop3/app/hadoop

7.1.3配置core-site.xml

[hadoop3@master hadoop]$ vi core-site.xml

<configuration>

       <property>

         <name>fs.defaultFS</name>

         <value>hdfs://mycluster</value>

       </property>

       <property>

         <name>hadoop.tmp.dir</name>

         <value>/home/hadoop3/data/tmp</value>

       </property>

       <property>

          <name>ha.zookeeper.quorum</name>

          <value>master:2181,slave1:2181,slave2:2181</value>

       </property>

</configuration>

7.1.4配置hdfs-site.xml

[hadoop3@master hadoop]$ vi  hdfs-site.xml

<configuration>

       <property>

         <name>dfs.nameservices</name>

         <value>mycluster</value>

       </property>

       <property>

      <name>dfs.permissions.enabled</name>

      <value>false</value>

    </property>

       <property>

         <name>dfs.ha.namenodes.mycluster</name>

         <value>nn1,nn2,nn3</value>

       </property>

       <property>

         <name>dfs.namenode.rpc-address.mycluster.nn1</name>

         <value>master:9820</value>

       </property>

       <property>

         <name>dfs.namenode.rpc-address.mycluster.nn2</name>

         <value>slave1:9820</value>

       </property>

       <property>

         <name>dfs.namenode.rpc-address.mycluster.nn3</name>

         <value>slave2:9820</value>

       </property>

       <property>

         <name>dfs.namenode.http-address.mycluster.nn1</name>

         <value>master:9870</value>

       </property>

       <property>

         <name>dfs.namenode.http-address.mycluster.nn2</name>

         <value>slave1:9870</value>

       </property>

       <property>

         <name>dfs.namenode.http-address.mycluster.nn3</name>

         <value>slave2:9870</value>

       </property>

       <property>

      <name>dfs.ha.automatic-failover.enabled</name>

      <value>true</value>

     </property>

       <property>

         <name>dfs.namenode.shared.edits.dir</name>

         <value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value>

       </property>

       <property>

         <name>dfs.journalnode.edits.dir</name>

         <value>/home/hadoop3/data/journaldata/jn</value>

       </property>

       <property>

         <name>dfs.client.failover.proxy.provider.mycluster</name>

         <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

       </property>

       <property>

      <name>dfs.ha.fencing.methods</name>

      <value>sshfence</value>

    </property>

    <property>

      <name>dfs.ha.fencing.ssh.private-key-files</name>

      <value>/home/hadoop3/.ssh/id_rsa</value>

    </property>

       <property>

      <name>dfs.ha.fencing.ssh.connect-timeout</name>

      <value>10000</value>

    </property>

    <property>

      <name>dfs.namenode.handler.count</name>

      <value>100</value>

    </property>

       <property>

          <name>dfs.ha.automatic-failover.enabled</name>

          <value>true</value>

        </property>

</configuration>

7.1.5配置workers

[hadoop3@master hadoop]$ vi workers

master

slave1

slave2

注意:hadoop2.x配置的是slaves文件,這里有所改變。

7.1.6將hadoop3.0安裝包分發到其他節點

[hadoop3@master app]$ deploy.sh hadoop-3.0.0 /home/hadoop3/app/ slave

7.1.7創建hadoop3.0軟連接

在所有節點上創建hadoop3.0軟連接,這里以master節點為例。

[hadoop3@master app]$ ln -s hadoop-3.0.0 hadoop

[hadoop3@master app]$ ls

hadoop  hadoop-3.0.0

7.1.8配置hadoop3.0環境變量

在所有節點上配置hadoop3.0環境變量,這里以master節點為例

[hadoop3@master app]$ vi ~/.bashrc

JAVA_HOME=/home/hadoop3/app/jdk

HADOOP_HOME=/home/hadoop3/app/hadoop

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

PATH=$JAVA_HOME/bin:HADOOP_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH HADOOP_HOME

7.1.9格式化hdfs

第一次安裝hdfs的時候,需要對hdfs進行相關的格式化操作,以后就不需要了。

7.1.9.1先啟動Zookeeper

[hadoop3@master app]$runRemoteCmd.sh "/home/hadoop3/app/zookeeper-3.4.6/bin/zkServer.sh start" all

7.1.9.2接着啟動journalnode

[hadoop3@master app]$ runRemoteCmd.sh "/home/hadoop3/app/hadoop/sbin/hadoop-daemon.sh start journalnode" all

7.1.9.3在master節點上執行格式化

[hadoop3@master hadoop]$ bin/hdfs namenode -format / /namenode 格式化

[hadoop3@master hadoop]$ bin/hdfs zkfc -formatZK //格式化高可用

[hadoop3@master hadoop]$bin/hdfs namenode //啟動namenode

7.1.9.4備用節點slave1 slave2通過master節點元數據信息,分別在slave1、slave2節點上執行。

[hadoop3@slave1 hadoop]$ bin/hdfs namenode -bootstrapStandby

[hadoop3@slave2 hadoop]$ bin/hdfs namenode -bootstrapStandby

7.1.9.5slave1 slave2節點同步完master上的元數據之后,在master節點上按下ctrl+c來結束namenode進程。

7.1.9.6 關閉所有節點journalnode

[hadoop3@master app]$ runRemoteCmd.sh "/home/hadoop3/app/hadoop/sbin/hadoop-daemon.sh stop journalnode" all

7.1.10 啟動HDFS

一鍵啟動hdfs

[hadoop3@master hadoop]$ sbin/start-dfs.sh

7.1.11 測試運行HDFS

7.1.11.1查看HDFS Web界面,這里配置的master slave1 slave2節點都為namenode。

關閉active狀態的namenode,檢查是否會自動切換其他節點

7.1.11.2測試hdfs文件上傳

[hadoop3@master hadoop]$ vi djt.txt   

hadoop

hadoop

hadoop

dajiangtai

dajiangtai

dajiangtai

[hadoop3@master hadoop]$ bin/hdfs dfs -mkdir /dajiangtai  

[hadoop3@master hadoop]$ bin/hdfs dfs -put djt.txt /dajiangtai  

[hadoop3@master hadoop]$ bin/hdfs dfs -cat /dajiangtai/djt.txt

7.2配置YARN

7.2.1配置mapred-site.xml

[hadoop3@master hadoop]$ vi  mapred-site.xml

<configuration>

<property>

       <name>mapreduce.framework.name</name>

       <value>yarn</value>

</property>

<property>

       <name>mapreduce.application.classpath</name>

       <value>

       /home/hadoop3/app/hadoop/etc/hadoop,

        /home/hadoop3/app/hadoop/share/hadoop/common/*,

        /home/hadoop3/app/hadoop/share/hadoop/common/lib/*,

        /home/hadoop3/app/hadoop/share/hadoop/hdfs/*,

        /home/hadoop3/app/hadoop/share/hadoop/hdfs/lib/*,

        /home/hadoop3/app/hadoop/share/hadoop/mapreduce/*,

        /home/hadoop3/app/hadoop/share/hadoop/mapreduce/lib/*,

        /home/hadoop3/app/hadoop/share/hadoop/yarn/*,

        /home/hadoop3/app/hadoop/share/hadoop/yarn/lib/*

       </value>

</property>

</configuration>

7.2.2配置yarn-site.xml

[hadoop3@master hadoop]$ vi  yarn-site.xml

<configuration>

<property>

       <name>yarn.resourcemanager.connect.retry-interval.ms</name>

       <value>2000</value>

</property>

<property>

       <name>yarn.resourcemanager.ha.enabled</name>

       <value>true</value>

</property>

<property>

       <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>

       <value>true</value>

</property>

<property>

       <name>yarn.resourcemanager.ha.automatic-failover.embedded</name>

       <value>true</value>

</property>

<property>

       <name>yarn.resourcemanager.cluster-id</name>

       <value>yarn-rm-cluster</value>

</property>

<property>

       <name>yarn.resourcemanager.ha.rm-ids</name>

       <value>rm1,rm2</value>

</property>

<property>

       <name>yarn.resourcemanager.hostname.rm1</name>

       <value>master</value>

</property>

<property>

       <name>yarn.resourcemanager.hostname.rm2</name>

       <value>slave1</value>

</property>

<property>

       <name>yarn.resourcemanager.recovery.enabled</name>

       <value>true</value>

</property>

<property>

   <description>The class to use as the persistent store.</description>

   <name>yarn.resourcemanager.store.class</name>

   <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>

 </property>

<property>

       <name>yarn.resourcemanager.zk.state-store.address</name>

       <value>master:2181,slave1:2181,slave2:2181</value>

</property>

<property>

       <name>yarn.resourcemanager.zk-address</name>

       <value>master:2181,slave1:2181,slave2:2181</value>

</property>

<property>

       <name>yarn.resourcemanager.address.rm1</name>

       <value>master:8032</value>

</property>

<property>

       <name>yarn.resourcemanager.scheduler.address.rm1</name>

       <value>master:8034</value>

</property>

<property>

       <name>yarn.resourcemanager.webapp.address.rm1</name>

       <value>master:8088</value>

</property>

<property>

       <name>yarn.resourcemanager.address.rm2</name>

       <value>slave1:8032</value>

</property>

<property>

       <name>yarn.resourcemanager.scheduler.address.rm2</name>

       <value>slave1:8034</value>

</property>

<property>

       <name>yarn.resourcemanager.webapp.address.rm2</name>

       <value>slave1:8088</value>

</property>

<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>

</configuration>

7.2.3腳本分發修改的yarn配置

[hadoop3@master hadoop]$ deploy.sh mapred-site.xml /home/hadoop3/app/hadoop-3.0.0/etc/hadoop/ slave

[hadoop3@master hadoop]$ deploy.sh yarn-site.xml

/home/hadoop3/app/hadoop-3.0.0/etc/hadoop/ slave

7.2.4啟動yarn

在master節點啟動resourcemanager

[hadoop3@master hadoop]$ bin/yarn --daemon start resourcemanager

在slave1節點啟動resourcemanager

[hadoop3@slave1  hadoop]$ bin/yarn --daemon start resourcemanager

在3個節點分別啟動nodemanager

[hadoop3@master  hadoop]$ bin/yarn --daemon start nodemanager [hadoop3@slave1  hadoop]$ bin/yarn --daemon start nodemanager [hadoop3@slave2  hadoop]$ bin/yarn --daemon start nodemanager

7.2.5 通過Web查看YARN

7.2.6檢查ResourceManager狀態

關閉active 狀態的resourcemanager,檢查另外一個節點是否能稱為active狀態。

7.2.7測試運行WordCount

[hadoop3@master hadoop]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0-alpha2.jar wordcount /dajiangtai/djt.txt /dajiangtai/output

查看yarn的Web界面

查看運行結果

[hadoop3@master hadoop]$ bin/hdfs dfs -cat /dajiangtai/output/*

如果以上操作沒有問題,說明Hadoop3.0分布式高可用集群成功搭建完畢。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM