Hadoop全分布设置教程

BUG之神 211

软件包:

java8,Hadoop,xshell6,xftp安装包下载

高可用集群VS非高可用集群

区别:高可用大数据集群有两个master节点,用于在主master节点故障时,快速切换到备用master节点。实现业务的高可用。

在搭建难度上:高可用集群搭建较为复杂,配置项较多。

二者架构图可参考下图:

Hadoop全分布设置教程

Hadoop全分布设置教程


hadoop全分布集群搭建:

一.节点配置说明

1台Master节点,3台Slave节点,每台节点配置环境,如下表所示:

主机名 IP地址 需要安装软件
master 192.168.31.100 jdk、hadoop
slave1 192.168.31.101 jdk、hadoop
slave2 192.168.31.102 jdk、hadoop
slave3 192.168.31.103 jdk、hadoop

 


二.单节点配置步骤

(1)安装前准备

1.给要访问的主机地址设置别名

[root@localhost ~]# vim /etc/hosts

192.168.31.100 master

192.168.31.101 slave1

192.168.31.102 slave2

192.168.31.103 slave3

Hadoop全分布设置教程

2.在/root目录创建app目录,并将java和hadoop安装包上传

Hadoop全分布设置教程

(2)安装JDK

1.解压jdk压缩包,解压完成后删除压缩包

[root@localhost ~]# cd app

[root@localhost app]# tar -zxvf jdk-8u202-linux-x64.tar.gz

[root@localhost app]# rm -rf jdk-8u202-linux-x64.tar.gz

2.配置java环境变量,进入java目录,ls查看java安装目录为:/root/app/jdk1.8.0_202

Hadoop全分布设置教程

设置环境变量:

[root@localhost app]vim /etc/profile

添加以下三行:

export JAVA_HOME=/root/app/jdk1.8.0_202

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

Hadoop全分布设置教程

使环境变量生效:

[root@localhost jdk1.8.0_202]# source /etc/profile

验证jdk是否配置成功:

[root@localhost jdk1.8.0_202]# java -version

java version "1.8.0_202"

Java(TM) SE Runtime Environment (build 1.8.0_202-b08)

Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

(三)安装hadoop

解压hadoop,解压完成后删除原始的安装包

[root@master app]# cd /root/app

[root@master app]# tar -zxvf hadoop-2.7.7.tar.gz

[root@master app]# rm -rf hadoop-2.7.7.tar.gz

进入hadoop,打印并hadoop所处的目录:/root/app/hadoop-2.7.7

[root@master app]# cd hadoop-2.7.7

[root@master hadoop-2.7.7]# pwd

/root/app/hadoop-2.7.7

配置hadoop环境变量:

[root@master hadoop-2.7.7]#vim /etc/profile

添加以下4行:

export JAVA_HOME=/root/app/jdk1.8.0_202

export HADOOP_HOME=/root/app/hadoop-2.7.7

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

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME/lib:$CLASSPATH

Hadoop全分布设置教程

使配置生效:

[root@master hadoop-2.7.7]# source /etc/profile

验证安装是否成功:

[root@master hadoop-2.7.7]# hadoop

Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]

(4)让环境变量持续生效

注:必须设置,否则可能在执行某些脚本,如第6章脚本执行到一半,hadoop命令失效

当前设置的java版本和hadoop命令会在关闭终端和在其他目录打开终端时失效,可通过如下方式解决:

[root@master app]# vim /root/.bashrc

在最后添加以下代码:

#java path

export JAVA_HOME=/root/app/jdk1.8.0_202

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

#hadoop path

export JAVA_HOME=/root/app/jdk1.8.0_202

export HADOOP_HOME=/root/app/hadoop-2.7.7

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

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME/lib:$CLASSPATH

Hadoop全分布设置教程

设置完成后保存退出,再bash以下使之生效!

[root@master app]# bash

(5)配置hadoop的配置文件(位于安装目录的etc/hadoop目录下):

[root@master hadoop]# cd /root/app/hadoop-2.7.7/etc/hadoop

[root@master hadoop]# ls

在hadoop-env.sh中修改jdk的环境变量:

[root@master hadoop]# vim hadoop-env.sh

将:export JAVA_HOME=${JAVA_HOME}

改为:

export JAVA_HOME=/root/app/jdk1.8.0_202

Hadoop全分布设置教程

配置从节点(将从节点的主机名添加到slaves文件中):

[root@master hadoop]# vim slaves

slave1

slave2

slave3

Hadoop全分布设置教程

此处设置的主机名即是/etc/hosts设置的别名

Hadoop全分布设置教程

配置hdfs的配置文件(core-site.xml,hdfs-site.xml)

core-site.xml:

[root@master hadoop]# vim core-site.xml

配置如下:

Hadoop全分布设置教程

<configuration>

<!--指定HDFS存储入口-->

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:9000</value>

</property>

 

<!--指定hadoop临时目录-->

<property>

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

<value>/root/app/hadoop-2.7.7/tmp</value>

</property>

</configuration>

 

设置hdfs-site.xml文件:

<configuration>

<!--设备数据备份数量-->

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

</configuration>

 

配置mapreduce配置文件(mapred-site.xml,yarn-site.xml):

mapred-site.xml本身并不存在可以使用cp命令复制mapred-site.xml.template再更改:

[root@master hadoop]# cp mapred-site.xml.template mapred-site.xml

[root@master hadoop]# vim  mapred-site.xml

 

<configuration>

<!--配置mapreduce框架用yarn启动-->

<property>

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

<value>yarn</value>

</property>

</configuration>

 

yarn-site.xml是ResourceManager进程相关配置文件:

 

<configuration>

<!--设置对外暴露的访问地址为master-->

<property>

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

<value>master</value>

</property>

 

<!--NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序-->

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

 

配置完成后格式化namenode节点

[root@master hadoop]# hdfs namenode -format

格式化完成后像这样:

Hadoop全分布设置教程

如果执行成功,在/root/app/hadoop-2.7.7目录下会生成一个tmp目录。可以使用tree (没有此命令可以使用yum -y install tree 来安装tree命令)来查看tmp目录下的文件结构,如果出现相应的快照文件和版本相应的信息,则格式化成功:

[root@master hadoop]# ls /root/app/hadoop-2.7.7

bin  etc  include  lib  libexec  LICENSE.txt  NOTICE.txt  README.txt  sbin  share  tmp

[root@master hadoop]# tree /root/app/hadoop-2.7.7/tmp

Hadoop全分布设置教程

数据含义说明:

Hadoop全分布设置教程

安装ssh(centos7.6 GNOME桌面版已经有ssh,可以不装)

[root@master hadoop]# yum list | grep ssh

安装openssh.x86_64 openssh-clients.x86_64 openssh-server.x86_64

[root@master hadoop]# yum -y install openssh.x86_64 openssh-clients.x86_64 openssh-server.x86_64

安装好ssl后就可以复制虚拟机(需完全关闭:使用poweroff命令)


三.多节点克隆

1.复制虚拟机

方式一:(直接复制虚拟机文件,我这里存储空间不够,未采用此方式)

根据master虚拟机所在的位置,将文件复制3分,并命名为slave1,slave2,slave3

Hadoop全分布设置教程

复制三份并重命名:

Hadoop全分布设置教程

然后选择【打开虚拟机】-启动虚拟机时选择-【我已复制该虚拟机】

Hadoop全分布设置教程

方式二,克隆

右键-【master】-【管理】-【克隆】

Hadoop全分布设置教程

【下一步】-【克隆自虚拟机中当前状态】-【克隆方法:创建链接克隆】,最好使用完整克隆,我这里存储空间不够了,所以采用此方式,空间足够的情况下请使用【创建完整克隆】

Hadoop全分布设置教程 Hadoop全分布设置教程 Hadoop全分布设置教程

选择一个存储路径,我这里先在D:\Virtual Machines目录下创建了一个slave1目录

Hadoop全分布设置教程

按照以上方式再克隆slave2,slave3

三个都克隆完成后像这样:

Hadoop全分布设置教程 Hadoop全分布设置教程


四.配置多节点

将4台虚拟机都开启,按照约定,设置3台从服务器的主机名和固定IP:

主机名 IP地址 需要安装软件
master 192.168.31.100 jdk、hadoop
slave1 192.168.31.101 jdk、hadoop
slave2 192.168.31.102 jdk、hadoop
slave3 192.168.31.103 jdk、hadoop

1.slave1修改主机名并设置固定ip:

[root@localhost ~]# vim /etc/hostname

主机名设置为:slave1

或者直接使用以下命令设置

[root@localhost ~]# hostnamectl set-hostname slave1

[root@localhost ~]# bash

修改网络配置文件,修改MAC地址和ip

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

 

Hadoop全分布设置教程

[root@localhost ~]# systemctl restart network

按照上面的教程设置slave2,slave3的主机名和固定IP

 

 

2.使用xshell连接上4个服务器

3.在master节点设置免密登录

[root@slave1 ~]# ssh-keygen -t rsa -P ''

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Created directory '/root/.ssh'.

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:IjmkX5UliD8jDt+bHgwRad20AUAlIxdpnj+Mpuxeb1Q root@slave1

The key's randomart image is:

+---[RSA 2048]----+

|  ..OOo=+ .      |

|   o*+o .*       |

|   +oo  +        |

|  .o+o+.E        |

|  .+=*o+S        |

|   .=**.         |

| . oo.o+         |

|  o. .+.         |

| oo  oo          |

+----[SHA256]-----+

Hadoop全分布设置教程

4.将密钥分发给每个节点(包括自己):

[root@master ~]# ssh-copy-id master

[root@master ~]# ssh-copy-id slave1

[root@master ~]# ssh-copy-id slave2

[root@master ~]# ssh-copy-id slave3

[root@master ~]# ssh master

[root@master ~]# ssh slave1

[root@slave1 ~]# exit

[root@master ~]# ssh slave2

[root@slave2 ~]# exit

[root@master ~]# ssh slave3

[root@slave3 ~]# exit

5.关闭4个节点的防火墙,不关闭会影响mapreduce的运行:

在撰写栏输入命令,同时在四个终端执行命令

如果没有出现输入框,点击xshell-【查看】-【撰写】-【撰写栏】开启

Hadoop全分布设置教程

开启后要选择发送到全部选项卡:

Hadoop全分布设置教程

关闭防火墙命令:

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# systemctl disable firewalld

关闭selinux:

[root@localhost ~]# vim /etc/selinux/config

将参数设置为disabled 然后保存退出:

Hadoop全分布设置教程

自此,所有配置完成


在master节点启动集群:

[root@master ~]# start-all.sh

验证是否启动成功,在撰写栏输入jps查看集群中所有进程:

如果成功,master节点会出现ResourceManager SecondaryNameNode NameNode进程

Hadoop全分布设置教程

从节点会出现:NodeManager DataNode 进程

Hadoop全分布设置教程

在浏览器验证,输入master的IP地址加端口号50070

Hadoop全分布设置教程 Hadoop全分布设置教程

yarn web页面地址为:http://192.168.31.100:8088

Hadoop全分布设置教程

关闭集群命令:

[root@master hadoop]# stop-all.sh #关闭集群所有服务


 

分享