使用VMware在Centos7虚拟机上搭建Hadoop3.1.4集群

650 阅读3分钟

一、准备工作

教程1:VMware创建虚拟机教程,地址:www.bilibili.com/video/BV1E4…
教程2:黑马程序员Hadoop入门教程,地址:www.bilibili.com/video/BV1CU…
教程3:黑马程序员Hadoop3.0教程,地址:www.bilibili.com/video/BV11N…
教程4:安装jdk1.8,地址:blog.csdn.net/weixin_5170…

VMware虚拟机
Centos7镜像文件,来自Centos官网,清华源,地址:mirrors.tuna.tsinghua.edu.cn/centos/7.9.…
Hadoop3.0安装包,安装包来自教程3置顶评论

二、VMware安装3台虚拟机

安装教程参考:教程1 和 教程2的P8

三、安装Hadoop前准备

1、服务器基础环境准备

参考教程3的P14,具体步骤:

1)、修改hostname(3台机器)

vim /etc/hostname
node1.itcast.cn

2)、添加hosts映射(3台机器)

vim /etc/hosts
添加
192.168.88.128 node1 node1.itcast.cn
192.168.88.129 node2 node2.itcast.cn
192.168.88.130 node3 node3.itcast.cn
192.168.88.131 node4 node4.itcast.cn
注:node4是课程后续用到的

3)、关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

4)、免密登录(node1执行->node1|node2|node3)

ssh-keygen # 4个回车 生成公钥、私钥
ssh-copy-id node1、ssh-copy-id node2、ssh-copy-id node3
注:只需在node1上配置,不需要双向配置

5)、集群时间同步

yum -y install ntpdate
ntpdate ntp4.aliyun.com

6)、安装jdk1.8

参考教程4

2、前瞻性准备(重要)

有一些功能,比如回收站功能,后续想要开启的话需要重启集群,但是如果提前配置好参数,但是不设置值就不用重启集群了,所以需要提前决定是否需要这些功能
功能列表:

四、安装Hadoop

使用的是黑马程序员编译好的安装包,具体地址见一
安装教程:教程3 的P15
具体步骤:

1、创建相关目录,以及上传解压安装包

在每台机器上创建以下目录
mkdir -p /export/server
mkdir -p /export/data
mkdir -p /export/software

在node1上,上传并解压安装包,node2和node3的在node1的配置文件都编辑好后,通过scp复制过去即可
上传至/export/software,然后在software 目录下执行
tar -xvzf hadoop-3.1.4-bin-snappy-CentOS7.tar.gz -C ../server/
将安装包解压到server目录下

2、修改配置文件

hadoop-env.sh 文件

cd /export/server/hadoop-3.1.4/etc/hadoop/
vim hadoop-env.sh

配置JAVA_HOM,找到文件中被注释掉的那行
export JAVA_HOME=/export/server/jdk1.8

设置用户以执行对应角色shell命令
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

core-site.xml文件

cd /export/server/hadoop-3.1.4/etc/hadoop/
vim core-site.xml

在文件末尾的两个configuration之间插入

    <!-- 默认文件系统的名称。通过URI中schema区分不同文件系统。-->
    <!-- file:///本地文件系统 hdfs:// hadoop分布式文件系统 gfs://。-->
    <!-- hdfs文件系统访问地址:http://nn_host:8020。-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node1.itcast.cn:8020</value>
    </property>
    <!-- hadoop本地数据存储目录 format时自动生成 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/export/data/hadoop-3.1.4</value>
    </property>
    <!-- 在Web UI访问HDFS使用的用户名。-->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>

图片.png

hdfs-site.xml文件

cd /export/server/hadoop-3.1.4/etc/hadoop/
vim hdfs-site.xml

<!-- 设定SNN运行主机和端口。-->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node2.itcast.cn:9868</value>
</property>

mapred-site.xml文件

cd /export/server/hadoop-3.1.4/etc/hadoop/
vim mapred-site.xml

<!-- mr程序默认运行方式。yarn集群模式 local本地模式-->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<!-- MR App Master环境变量。-->
<property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- MR MapTask环境变量。-->
<property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- MR ReduceTask环境变量。-->
<property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

yarn-site.xml文件

cd /export/server/hadoop-3.1.4/etc/hadoop/
vim yarn-site.xml

<!-- yarn集群主角色RM运行机器。-->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node1.itcast.cn</value>
</property>
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MR程序。-->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<!-- 每个容器请求的最小内存资源(以MB为单位)。-->
<property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>512</value>
</property>
<!-- 每个容器请求的最大内存资源(以MB为单位)。-->
<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>2048</value>
</property>
<!-- 容器虚拟内存与物理内存之间的比率。-->
<property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>4</value>
</property>

workers文件

cd /export/server/hadoop-3.1.4/etc/hadoop/
vim workers

node1.itcast.cn
node2.itcast.cn
node3.itcast.cn

3、同步Hadoop安装包到node2,node3

cd /export/server/
scp -r hadoop-3.1.4 root@node2:/export/server/
scp -r hadoop-3.1.4 root@node3:/export/server/

4、配置Hadoop环境变量

在node1上配置Hadoop环境变量
vim /etc/profile
export HADOOP_HOME=/export/server/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

将修改后的环境变量同步其他机器
scp /etc/profile root@node2:/etc/
scp /etc/profile root@node3:/etc/

重新加载环境变量 验证是否生效(3台机器)
source /etc/profile
hadoop #验证环境变量是否生效

5、NameNode format(格式化操作or初始化操作)

首次启动HDFS时,必须对其进行格式化操作。
format本质上是初始化工作,进行HDFS清理和准备工作
命令:
hdfs namenode -format
在倒数第6个时间那行附近,出现:Storage directory /export/data/hadoop-3.1.4/dfs/name has been successfully formatted.即表示成功

图片.png

五、集群启停命令

1、每台机器上每次手动启动关闭一个角色进程,精准控制

HDFS集群

hdfs --daemon start namenode|datanode|secondarynamenode
hdfs --daemon stop namenode|datanode|secondarynamenode
注:使用jps命令查看进程是否启动

YARN集群

yarn --daemon start resourcemanager|nodemanager
yarn --daemon stop resourcemanager|nodemanager

2、Hadoop集群启动关闭-shell脚本一键启停

在node1上,使用软件自带的shell脚本一键启动 前提:配置好机器之间的SSH免密登录和workers文件。

HDFS集群

start-dfs.sh
stop-dfs.sh

YARN集群

start-yarn.sh
stop-yarn.sh

Hadoop集群

start-all.sh
stop-all.sh

Hadoop启动日志

日志路径:/export/server/hadoop-3.1.4/logs/
启动失败时可去此目录查看日志

图片.png

六、Hadoop Web UI页面

1、HDFS集群

地址:http://namenode_host:9870
其中namenode_host是namenode运行所在机器的主机名或者ip
如果使用主机名访问,别忘了在Windows配置
C:\Windows\System32\drivers\etc 路径下的hosts文件

2、YARN集群

地址:http://resourcemanager_host:8088
其中resourcemanager_host是resourcemanager运行所在机器的主机名或者ip
如果使用主机名访问,别忘了在Windows配置hosts