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分布式高可用集群成功搭建完毕。

hadoop集群安装规划的更多相关文章

  1. Apache Hadoop集群安装(NameNode HA + SPARK + 机架感知)

    1.主机规划 序号 主机名 IP地址 角色 1 nn-1 192.168.9.21 NameNode.mr-jobhistory.zookeeper.JournalNode 2 nn-2 ).HA的集 ...

  2. Apache Hadoop集群安装(NameNode HA + YARN HA + SPARK + 机架感知)

    1.主机规划 序号 主机名 IP地址 角色 1 nn-1 192.168.9.21 NameNode.mr-jobhistory.zookeeper.JournalNode 2 nn-2 192.16 ...

  3. 2 Hadoop集群安装部署准备

    2 Hadoop集群安装部署准备 集群安装前需要考虑的几点硬件选型--CPU.内存.磁盘.网卡等--什么配置?需要多少? 网络规划--1 GB? 10 GB?--网络拓扑? 操作系统选型及基础环境-- ...

  4. Apache Hadoop 集群安装文档

    简介: Apache Hadoop 集群安装文档 软件:jdk-8u111-linux-x64.rpm.hadoop-2.8.0.tar.gz http://www.apache.org/dyn/cl ...

  5. 1.Hadoop集群安装部署

    Hadoop集群安装部署 1.介绍 (1)架构模型 (2)使用工具 VMWARE cenos7 Xshell Xftp jdk-8u91-linux-x64.rpm hadoop-2.7.3.tar. ...

  6. Hadoop集群安装-CDH5(5台服务器集群)

    CDH5包下载:http://archive.cloudera.com/cdh5/ 架构设计: 主机规划: IP Host 部署模块 进程 192.168.254.151 Hadoop-NN-01 N ...

  7. Hadoop集群安装配置

    一.准备工作 1.首先准备好七台虚拟机,并确保都已经安装配置好jdk. 2.Hadoop3.2.0+jdk1.8自行到官网下载 3.修改好相称的主机名,并在hosts文件中相互添加. ######注意 ...

  8. hadoop集群安装故障解决

    nodemanager进程解决:http://blog.csdn.net/baiyangfu_love/article/details/13504849 编译安装:http://blog.csdn.n ...

  9. Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS

    摘自:http://www.powerxing.com/install-hadoop-cluster/ 本教程讲述如何配置 Hadoop 集群,默认读者已经掌握了 Hadoop 的单机伪分布式配置,否 ...

随机推荐

  1. sql server 2008 对字段的操作

    添加,刪除字段 通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数   增加字段:  增加数字字段,整型,缺省值为0 增加数字 ...

  2. EasyNVR智能云终端硬件使用场景分析:如何实现软硬一体的视频上云整体解决方案

    背景分析 在于众多的客户交流中,经常会被客户问到,"EasyNVR到底是软件还是硬件?"."EasyNVR能否出一个硬件的版本,摆脱自建服务器的压力?".&qu ...

  3. 关于在react和node中,经常出现的const

    const是定义一个常量,在ECM6当中,定义局部变量可以用let.定义全局变量用var......这是ECM6的新特性,好吧,包子在这里只是记录一下,希望大家在将来写react或者node的时候,不 ...

  4. Linux 常用命令缩写及对应的

    0.项目名: Linux -- LINUs' uniX (开个玩笑不是这样的,别当真) GNU -- Gnu is Not Unix1.目录名: /boot:顾名思义 /root :同上 /run:同 ...

  5. Introduction to Mathematical Thinking - Week 3

    there exists and all there exists 证明根号2是无理数 all 习题 3. Which of the following formal propositions say ...

  6. Docker + ElasticSearch + Node.js

    最近有空就想研究下ElasticSearch. 此篇文章用来记录研究过程.备注:需要有一定的docker基础,ElasticSearch的基本概念 Docker安装ElasticSearch 首先,就 ...

  7. Servlet 运行原理

    一:servlet定义 Servlet是一个Java应用程序,运行在服务器端,用来处理客户端请求并作出响应的程序. 二:简单servlet实例 //导入所需的包 import javax.servle ...

  8. Linux中的位置参数变量

    解释: 主要是向脚本中传递数据,变量名不能自定义,变量作用是固定的 $n $0代表命令本身,$1-9代表接受的第1-9个参数,10以上需要用{}括起来,比如${10}代表接收的第10个参数 $* 代表 ...

  9. 3.3 使用STC89C52控制MC20通过GPRS远程发送数据

    需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...

  10. classmethod和staticmethod区别

    实例方法:在类中,定义的方法,这个方法的第一个参数默认是实例对象,一般习惯使用self 类方法:在类中,定义的方法,这个方法的第一个参数默认是类对象,一般习惯用cls表示,用@classmethod装 ...