Hadoop完全分布式搭建(在三台虚拟机中实现)

目录

一、虚拟机的准备工作

 1、软件、镜像包的下载

 2、虚拟机的创建及配置

二、准备工作

 1、添加映射关系

 2、关闭和禁用防火墙

(1)直接关闭防火墙

(2)禁止firewall开机启动

(3)查看状态    

3、关闭selinux

4、集群节点之间时间同步

(1)安装ntpdate

(2)执行

(3)把这个同步时间的操作添加到linux的crontab定时器中,每分钟执行一次

三、JDK的安装

四、Hadoop的安装及配置

五、修改Hadoop核心配置文件

1、进入配置文件所在目录

2、修改hadoop-env.sh文件,在文件末尾增加环境变量信息

3、修改core-site.xml文件,注意fs.defaultFS属性中的主机名需要和主节点的主机名保持一致

4、修改hdfs-site.xml文件,把hdfs中文件副本的数量设置为2,最多为2,因为现在集群中有两个从节点, 还有secondaryNamenode进程所在的节点信息

5、改mapred-site.xml,设置mapreduce使用的资源调度框架

6、改yarn-site.xml,设置yarn上支持运行的服务和环境变量白名单

7、修改workers文件

8、修改启动脚本,分别修改 start-dfs.sh , stop-dfs.sh 这两个脚本文件,在文件前面增加如下内容

9、分别修改 start-yarn.sh , stop-yarn.sh 这两个脚本文件,在文件前面增加如下内容

六、克隆虚拟机

1、将主机进行关机

2、开始克隆两台虚拟机

3、修改克隆后的虚拟机的主机名和ip地址

(1)输入root账户及密码进入虚拟机hadoop2和hadoop3

(2)在hadoop2中修改主机名

 (3)在hadoop2中修改IP地址

(4)照着上面(2)、(3)的步骤再克隆一台hadoop3

4、设置虚拟机的免密登录

七、启动Hadoop集群

1、在hadoop1节点上格式化HDFS

2、启动集群,在hadoop1的/opt/module/hadoop-3.3目录下上执行如下命令

3、验证是否启动成功


一、虚拟机的准备工作

1、软件、镜像包的下载

(1)虚拟机软件:本人所使用的虚拟机软件是VMware Workstation Pro 16.X

(2)虚拟机镜像:版本为CentOS-7-x86_64-DVD-2009.iso,官方链接为http://isoredirect.centos.org/centos/7/isos/x86_64/

(3)jdk1.8,官方下载链接为Java SE Development Kit 8 - Downloads (oracle.com)

(4)Hadoop3.3,下载地址为Index of /apache/hadoop/common (tsinghua.edu.cn)

同时也可以到我整理的阿里云盘中下载(我用阿里云盘分享了「整合资源」,你可以不限速下载? 复制这段内容打开「阿里云盘」App 即可获取 链接:https://www.aliyundrive.com/s/7UfZnZeJrWt),虚拟机软件则需要自行去找了,可以参考这篇文章(15条消息) 虚拟机VMware最详细下载与安装教程!_zp17834994071的博客-CSDN博客_csdn 虚拟机安装

2、虚拟机的创建及配置

略,可以参照我这篇文章(15条消息) CentOS7虚拟机的详细最小化安装_语仄无言的博客-CSDN博客

二、准备工作

1、添加映射关系

vi /etc/hosts

在最下面添加如下内容

192.168.168.110    hadoop1
192.168.168.111    hadoop2
192.168.168.112    hadoop3

如图

2、关闭和禁用防火墙

(1)直接关闭防火墙

systemctl stop firewalld

(2)禁止firewall开机启动

systemctl disable firewalld

(3)查看状态 
   

systemctl status firewalld

3、关闭selinux

vim /etc/selinux/config

 将SELINUX=enforcing改为SELINUX=disabled;最后要重启一下

重启命令为

reboot

4、集群节点之间时间同步

集群只要涉及到多个节点的就需要对这些节点做时间同步,如果节点之间时间不同步相差太多,会影响集群的稳定性,甚至导致集群出问题。

(1)安装ntpdate

yum install -y ntpdate

(2)执行

ntpdate -u ntp.sjtu.edu.cn

确认是否可以正常执行

(3)把这个同步时间的操作添加到linux的crontab定时器中,每分钟执行一次

vi /etc/crontab

将以下内容加到最底部

* * * * * root /usr/sbin/ntpdate -u ntp.sjtu.edu.cn

:wq保存退出即可

三、JDK的安装

1、使用finalshell将下载好的jdk软件包上传到虚拟机中,按住拖动即可上传

2、创建jdk的安装目录

 mkdir -p /opt/module/

3、到上传jdk的目录下将jdk解压

tar -zxvf jdk-8u301-linux-x64.tar.gz -C /opt/module/

4、到/opt/module/目录下修改jdk名称

cd /opt/module
mv jdk1.8.0_301/ jdk1.8

5、配置环境变量

vi /etc/profile

在最下方添加如下内容

export JAVA_HOME=/opt/module/jdk1.8

export PATH=${JAVA_HOME}/bin:$PATH

wq保存退出后source环境变量

source /etc/profile

6、检验jdk是否安装成功

java -version

显示如下内容则代表java安装完成

四、Hadoop的安装及配置

节点分配如下

节点分配
hadoop1hadoop2hadoop3
NameNodeDataNodeDataNode
ResourceManagerNodeManagerNodeManager
SecondaryNameNode

1、将Hadoop的安装包上传到虚拟机中,我这里直接上传到/opt/module/目录下

2、到/opt/module/目录下解压Hadoop安装包并修改名称

cd /opt/profile/

tar -zxvf hadoop-3.3.0.tar.gz

mv hadoop-3.3.0 hadoop-3.3

3、配置Hadoop的环境变量

vi /etc/profile

在最下方添加如下内容

export HADOOP_HOME=/opt/module/hadoop-3.3

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

wq保存退出后source环境变量

source /etc/profile

检验Hadoop是否安装成功

hadoop version

显示如下内容则表示安装成功

五、修改Hadoop核心配置文件

1、进入配置文件所在目录

cd /opt/module/hadoop-3.3/etc/hadoop/

2、修改hadoop-env.sh文件,在文件末尾增加环境变量信息

vi hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8

export HADOOP_LOG_DIR=/opt/module/hadoop-3.3/tmp/logs/hadoop

3、修改core-site.xml文件,注意fs.defaultFS属性中的主机名需要和主节点的主机名保持一致

vi core-site.xml

<configuration>

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop1:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/opt/module/hadoop-3.3/tmp</value>
    </property>

</configuration>

4、修改hdfs-site.xml文件,把hdfs中文件副本的数量设置为2,最多为2,因为现在集群中有两个从节点, 还有secondaryNamenode进程所在的节点信息

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value> 

    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop2:50090</value>
    </property>

</configuration>

5、改mapred-site.xml,设置mapreduce使用的资源调度框架

<configuration>

    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

</configuration>

6、改yarn-site.xml,设置yarn上支持运行的服务和环境变量白名单

注意,针对分布式集群在这个配置文件中还需要设置resourcemanager的hostname,否则 nodemanager找不到resourcemanager节点。

<configuration>
    <property> 
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>  
    <name>yarn.nodemanager.env-whitelist</name>    
    <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
    </value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop1</value>
    </property>
</configuration>

7、修改workers文件

vi workers

#原有的删掉,增加如下内容

hadoop2
hadoop3

8、修改启动脚本,分别修改 start-dfs.sh , stop-dfs.sh 这两个脚本文件,在文件前面增加如下内容

cd /opt/module/hadoop-3.3/sbin

#注意是分别修改,也就是在这两个文件下都添加下面的内容

vi start-dfs.sh   

vi stop-dfs.sh

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

9、分别修改 start-yarn.sh , stop-yarn.sh 这两个脚本文件,在文件前面增加如下内容

vi start-yarn.sh

vi stop-yarn.sh

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

六、克隆虚拟机

1、将主机进行关机

输入

poweroff

命令可将虚拟机进行关机

2、开始克隆两台虚拟机

在这个界面选择hadoop1,点击鼠标右键,点击管理-克隆

 一直下一页直到这一页,点创建完整克隆,下一页

 更改虚拟机名称及位置信息

克隆完成,点关闭即可

照着这种方式克隆两台,分别为hadoop2,hadoop3,随后将三台虚拟机开启

3、修改克隆后的虚拟机的主机名和ip地址

(1)输入root账户及密码进入虚拟机hadoop2和hadoop3

(2)在hadoop2中修改主机名

vi /etc/hostname

将里面的hadoop1改为hadoop2

 

 (3)在hadoop2中修改IP地址

 vi /etc/sysconfig/entwork-scripts/ifcfg-ens33

将BOOTPROTO改成static

将IPADDR改为192.168.168.111

 随后保存退出,输入reboot重启虚拟机,重启进入后可以看到主机名及IP的修改均已生效

这时就可以用FinalShell连接hadoop2了

(4)照着上面(2)、(3)的步骤再克隆一台hadoop3

注意:主机名要改成hadoop3,IP地址要改成192.168.168.112

4、设置虚拟机的免密登录

(1)先在haodoop1上执行

ssh-keygen -t rsa

rsa表示的是一种加密算法

注意:执行这个命令以后,需要连续按 4 次回车键回到 linux 命令行才表示这个操作执行 结束, 在按回车的时候不需要输入任何内容。

执行以后会在~/.ssh目录下生产对应的公钥和秘钥文件 

 下一步是把公钥拷贝到需要免密码登录的机器上面,过程中会提示要输入yes和密码,输入即可

ssh-copy-id hadoop2

ssh-copy-id hadoop3

后就可以通过ssh 免密码登录到hadoop2和hadoop3机器了

七、启动Hadoop集群

1、在hadoop1节点上格式化HDFS

cd /opt/module/hadoop-3.3
bin/hdfs namenode -format

如果在后面的日志信息中能看到这一行,则说明namenode格式化成功。

common.Storage: Storage directory /data/hadoop_repo/dfs/name has been successf

2、启动集群,在hadoop1的/opt/module/hadoop-3.3目录下上执行如下命令

sbin/start-all.sh

3、验证是否启动成功

在hadoop1下输入jps验证

在hadoop2下输入jps验证

在hadoop3下输入jps验证

 显示如上就表示完全分布式集群已经成功搭建


版权声明:本文为qq_50004611原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。