22
0
0

1、Hadoop基础环境安装

2026-09-04
2026-09-04

1、Hadoop组成

1.1 Hadoop各个版本的区别


在Haddoop 1.x的时期,是需要开发手动处理资源调度的
在Hadoop 2.x的时期,加入了yarn组件,由yarn来负责资源的调度,开发则只需要做好代码做计算。
在Hadoop 3.x的时期,在组成上没有变化

1.2 HDFS架构概述

# 简介
Hadoop Distributed File System,简称HDFS,是一个分布式文件系统

# 组件
`NmaeNode`(nn)(主节点):存储文件的元数据,如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
`DataNode`(dn)(数据节点):在本地文件系统存储文件块数据,以及块数据的校验和。
`Secondary NameNode`(辅助名称节点):每隔一段时间对NameNode元数据备份	# 从NameNode获取文件系统的元数据和编辑日志,然后将它们合并,生成一个新的文件系统映像,从而减少NameNode的启动时间和内存消耗

1.3 YARN架构概述


# 简介
YARN(Yet Another Resource Negotiator)是 Hadoop 2.x 版本引入的一种资源管理和作业调度框架,用于替代原有的 Hadoop 1.x 的 MapReduce 作为资源管理和作业调度的唯一机制。YARN 提供了更高效的资源管理和更灵活的作业调度能力

# 组件
`ResourceManager`(RM):
    RM是YARN中的核心组件,负责整个集群资源的管理和作业调度。
    `Scheduler`(调度器):是YARN的组件之一,负责资源的调度,按照预定的策略(如公平调度器或容量调度器)分配资源给各个运行在集群上的应用程序。
    `ApplicationManager`(应用程序管理器):是YARN的组件之一,负责处理客户端的作业提交请求,管理作业的生命周期以及监控作业的执行
    
`NodeManager`(NM):
    NM是 YARN 中运行在每个节点上的组件,负责管理单个节点上的计算资源。
    NM监听其所在节点的资源使用情况(CPU、内存等),并像RM报告。
    NodeManager 也负责管理`Container`(容器),容器是 YARN 分配给应用程序的资源的抽象(包括 CPU、内存等)。
    NM处理来自RM的命令,启动或停止容器内的任务。
    
`ApplicationMaster`(AM):
    AM负责管理作业的生命周期,包括作业的提交、监控和终止。
    
# 个人小结:
    RM负责整个集群资源的管理和作业调度,但是RM不直接管理NM,NM是负责单个节点的资源计算,RM通过NM通信获取该节点的资源使用情况,并向其分发资源。
    当一个任务需要资源时,资源的计算和分配都是RM来进行分配的,即当一个任务的AM向RM申请发送资源请求,RM会通过NM反馈的信息,计算给该任务的资源需求,并把该请求发给NM,NM收到请求后会启动容器,该容器的资源就是给该任务的。

1.4 MapReduce简单介绍

MapReduce将计算过程分为两个阶段:Map和Reduce。
(1)Map阶段并行处理输入数据
(2)Reduce阶段对Map结果进行汇总

2、Hadoop安装

2.1 安装Centos7基础环境

1、按步骤安装Centos7虚机环境
2、永久关闭防火墙
    systemctl stop firewalld
    systemctl disable firewalld
3、配置网卡
vi /etc/sysconfig/network-script/ifcfg-ens33	# 需要配置静态ip,ip地址自己定义
BOOTROTO="static"
IPADDR="自定义IP"
GATEWAY="网关IP"
DNS1="DNS服务器IP"

然后重启网卡 systemctl restart network

4、配置yum源、epel源(此处使用阿里云的)(可选项)
# yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
yum install vim wget curl net-tools tree lsof unzip zip psmisc  nc  rsync  lrzsz  ntp libzstd openssl-static tree iotop git -y	# 常用工具

# epel源
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

5、更改主机名
vim /etc/hostname
hadoop101

6、创建账户
useradd mhm
passwd mhm	# 密码为1

7、提示mhm用户权限
vim /etc/sudoers
mhm     ALL=(ALL)       NOPASSWD:ALL

8、创建目录
mkdir /opt/software  # 软件包存储位置
mkdir /opt/module  # 软件包解压目录
chown mhm:mhm /opt/software
chown mhm:mhm /opt/module 

9、更改hosts文件(windows的也可以改下)
vim /etc/hosts
192.168.146.101 hadoop101
192.168.146.102 hadoop102
192.168.146.103 hadoop103
192.168.146.104 hadoop104

10、通过hadoop101克隆3台机器
克隆完再都修改一下ip和主机名

2.2 安装Hadoop单机环境

1、上传jar包至102服务器/opt/software/
hadoop-3.1.3.tar.gz
jdk-8u212-linux-x64.tar.gz

2、解压缩jdk
tar -xzvf /opt/software/jdk-8u212-linux-x64.tar.gz -C /opt/module/

3、添加环境变量
vim /etc/profile.d/my_env.sh
# JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
# 刷新配置
source /etc/profile
# 查看是否生效
[root@hadoop102 bin]# java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

4、解压缩hadoop的jar包
tar -xzvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/module/

5、配置环境变量
vim /etc/profile.d/my_env.sh
# HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
# 刷新配置
source /etc/profile
# 查看是否生效
[root@hadoop102 bin]# hadoop version
Hadoop 3.1.3
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r ba631c436b806728f8ec2f54ab1e289526c90579
Compiled by ztang on 2019-09-12T02:47Z
Compiled with protoc 2.5.0
From source with checksum ec785077c385118ac91aadde5ec9799
This command was run using /opt/module/hadoop-3.1.3/share/hadoop/common/hadoop-common-3.1.3.jar

#################################### 测试服务案例 ####################################
cd /opt/module/hadoop-3.1.3
# 创建测试目录
mkdir input
# 创建文件
vim word.txt
hadoop yarn
hadoop mapreduce
mhm
mhm

# 执行jar包
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount input output

# 查看输出文件
[root@hadoop102 hadoop-3.1.3]# ll output/
总用量 4
-rw-r--r--. 1 root root 45 5月  28 01:22 part-r-00000
-rw-r--r--. 1 root root  0 5月  28 01:22 _SUCCESS
[root@hadoop102 hadoop-3.1.3]# cd output/
[root@hadoop102 output]# cat part-r-00000 
hadoop	2
mapreduce	1
mhm	2
yarn	1

2.3 Hadoop的目录介绍

[root@hadoop102 hadoop-3.1.3]# ll
总用量 176
drwxr-xr-x. 2 mhm mhm    183 9月  12 2019 bin
drwxr-xr-x. 3 mhm mhm     20 9月  12 2019 etc
drwxr-xr-x. 2 mhm mhm    106 9月  12 2019 include
drwxr-xr-x. 3 mhm mhm     20 9月  12 2019 lib
drwxr-xr-x. 4 mhm mhm    288 9月  12 2019 libexec
-rw-rw-r--. 1 mhm mhm 147145 9月   4 2019 LICENSE.txt
-rw-rw-r--. 1 mhm mhm  21867 9月   4 2019 NOTICE.txt
-rw-rw-r--. 1 mhm mhm   1366 9月   4 2019 README.txt
drwxr-xr-x. 3 mhm mhm   4096 9月  12 2019 sbin
drwxr-xr-x. 4 mhm mhm     31 9月  12 2019 share

2)重要目录
(1)bin目录:存放对Hadoop相关服务(hdfs,yarn,mapred)进行操作的脚本
(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本
(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例

2.4 配置分布式Hadoop集群

2.4.1 服务器准备工作

# 如上,已经配置好了102服务器单节点Hadoop
1、在102节点上,分发软件包给103和104节点	# 发送之前可以删除hadoop家目录下的/share/doc ,此目录下是帮助文档,数量多,影响传输IO
scp -r /opt/module/hadoop-3.1.3/ mhm@192.168.146.103:/opt/module/  # 分发103的hadoop软件
scp -r /opt/module/hadoop-3.1.3/ mhm@192.168.146.104:/opt/module/  # 分发104的hadoop软件
scp -r /opt/module/jdk1.8.0_212/ mhm@192.168.146.103:/opt/module/  # 分发103的jdk软件
scp -r /opt/module/jdk1.8.0_212/ mhm@192.168.146.104:/opt/module/  # 分发104的jdk软件

2、修改103和104的环境变量
scp /etc/profile.d/my_env.sh root@192.168.146.103:/etc/profile.d/
scp /etc/profile.d/my_env.sh root@192.168.146.104:/etc/profile.d/
# 或者以下直接复制
cat > /etc/profile.d/my_env.sh << 'EOF'
# JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
# HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
EOF

3、刷新环境变量
source /etc/profile

4、检查环境变量
[root@hadoop104 module]# java -version
[root@hadoop104 module]# hadoop version

5、rsync(了解)	# 注意,使用的双方节点都需要下载rsync
# 102节点,将102节点的对应目录下的所有文件,复制到对方指定目录,但是不会复制对方已有的文件。
rsync -av /opt/module/* hadoop103:/opt/module/
    -a:递归方式同步文件和目录,并保持所有文件属性,包括权限、时间戳等
    -v:表示在执行同步时显示详细输出,以便查看同步的进度和结果。
    
    
6、下载ansible工具
yum -y install ansible
ansible --version	# 查看版本
cat > /etc/ansible/hosts << EOF
192.168.146.102 hadoop102
192.168.146.103 hadoop103
192.168.146.104 hadoop104
EOF

7、配置同集群内节点免密登录
# 全部节点都做,用户用mhm和root用户
ssh-keygen -t rsa	# 生成公钥和私钥,后续一直按回车
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
  • 免密登录原理


2.4.2 集群规划与配置文件说明

  • 集群规划
1、NameNode和SecondaryNameNode不要安装在同一台服务器(提高高可用性,SN可以备份元数据)
2、ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。
主机 HDFS YARN
hadoop102 NameNode DataNode NodeManager
hadoop103 DataNode ResourceManager NodeManager
hadoop104 SecondaryNameNode DataNoda NodeManager
  • 配置文件说明
Hadoop配置文件分两类:`默认配置文件`和`自定义配置文件`,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。
要获取的默认文件 文件存放在Hadoop的jar包中的位置
[core-default.xml] hadoop-common-3.1.3.jar/core-default.xml
[hdfs-default.xml] hadoop-hdfs-3.1.3.jar/hdfs-default.xml
[yarn-default.xml] hadoop-yarn-common-3.1.3.jar/yarn-default.xml
[mapred-default.xml] hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml
目录 核心配置文件(用户可以根据项目需求重新进行修改配置)
/opt/module/hadoop-3.1.3/etc/hadoop core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml
- 默认配置文件
- 自定义配置文件

2.4.3 集群端口

daemon APP 端口
NameNode NameNode 9820
NameNode NameNode UI 9870
SecondaryNameNode SecondaryNameNode 9869
SecondaryNameNode SecondaryNameNode UI 9868
DataNode DataNode IPC(同rpc,即服务干活的端口) 9876
DataNode DataNode 9866
DataNode DataNode UI 9864
History 通信端口 19888
mapreduce查看执行任务端口 8088

2.4.4 编辑配置文件并分发

  • 102节点 /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>

        <value>hdfs://hadoop102:8020</value>

    </property>

    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>

        <value>/opt/module/hadoop-3.1.3/data</value>

    </property>

    <!-- 配置HDFS网页登录使用的静态用户为mhm -->
    <property>
        <name>hadoop.http.staticuser.user</name>

        <value>mhm</value>

    </property>

</configuration>

  • hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- nn web端访问地址-->
    <property>
        <name>dfs.namenode.http-address</name>

        <value>hadoop102:9870</value>

    </property>

    <!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>

        <value>hadoop104:9868</value>

    </property>

</configuration>

  • yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>

        <value>hadoop103</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>

</configuration>

  • mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

</configuration>

  • 分发配置文件
1、切换用户
su - mhm	# 在mhm用户上执行
cd ~

2、编辑hosts文件
cat > h-all << EOF
[all]
192.168.146.102
192.168.146.103
192.168.146.104
EOF

3、ansible分发文件
ansible -i h-all all -m copy -a "src=/opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml dest=/opt/module/hadoop-3.1.3/etc/hadoop/"
ansible -i h-all all -m copy -a "src=/opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml dest=/opt/module/hadoop-3.1.3/etc/hadoop/"
ansible -i h-all all -m copy -a "src=/opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml dest=/opt/module/hadoop-3.1.3/etc/hadoop/"
ansible -i h-all all -m copy -a "src=/opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml dest=/opt/module/hadoop-3.1.3/etc/hadoop/"
  • 配置DN主机列表
# 全量节点
1、编辑
cat > /opt/module/hadoop-3.1.3/etc/hadoop/workers << EOF
hadoop102
hadoop103
hadoop104
EOF

2、分发
ansible -i h-all all -m copy -a "src=/opt/module/hadoop-3.1.3/etc/hadoop/workers dest=/opt/module/hadoop-3.1.3/etc/hadoop/"

2.4.5 配置历史服务器,开启日志聚集

  • 102节点执行
  • /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml
<!-- 注意,是把以下内容添加到configuration内,不要全部覆盖啦!!! -->
    <!-- 历史服务器端地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>

        <value>hadoop102:10020</value>

    </property>

    <!-- 历史服务器web端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>

        <value>hadoop102:19888</value>

    </property>

  • 分发
ansible -i /home/mhm/h-all all -m copy -a "src=/opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml dest=/opt/module/hadoop-3.1.3/etc/hadoop/"

  • 102节点,开启日志聚集
  • /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml
<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</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.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <!-- 设置日志聚集服务器地址 -->
    <property>
        <name>yarn.log.server.url</name>  
        <value>http://hadoop102:19888/jobhistory/logs</value>
    </property>
    <!-- 设置日志保留时间为7天 -->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value> <!-- 是否启用虚拟内存检查,建议测试集群改为false -->
    </property>
</configuration>
  • 同步文件
ansible -i /home/mhm/h-all all -m copy -a "src=/opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml dest=/opt/module/hadoop-3.1.3/etc/hadoop/"

2.5 手动开启服务

  • 初始化
# 如果集群是第一次启动,,需要在hadoop102节点格式化NameNode
# 注意:
    格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。

1、格式化
# 登录102节点(因为bin目录已经加入环境变量,所以可以直接使用hdfs命令)
hdfs namenode -format	# 格式化命令

2、查看hadoop家目录,发现会多出data目录,是之前core-site.xml的指定存储数据目录
[mhm@hadoop102 ~]$ ll /opt/module/hadoop-3.1.3/
总用量 176
drwxr-xr-x. 2 mhm mhm    183 9月  12 2019 bin
drwxrwxr-x. 3 mhm mhm     17 5月  30 01:19 data
drwxr-xr-x. 3 mhm mhm     20 9月  12 2019 etc
drwxr-xr-x. 2 mhm mhm    106 9月  12 2019 include
drwxr-xr-x. 3 mhm mhm     20 9月  12 2019 lib
drwxr-xr-x. 4 mhm mhm    288 9月  12 2019 libexec
-rw-rw-r--. 1 mhm mhm 147145 9月   4 2019 LICENSE.txt
drwxrwxr-x. 2 mhm mhm     36 5月  30 01:19 logs
-rw-rw-r--. 1 mhm mhm  21867 9月   4 2019 NOTICE.txt
-rw-rw-r--. 1 mhm mhm   1366 9月   4 2019 README.txt
drwxr-xr-x. 3 mhm mhm   4096 9月  12 2019 sbin
drwxr-xr-x. 4 mhm mhm     31 9月  12 2019 share
  • 启动集群服务(手动拉起,了解)
su - mhm	# 全量节点

1、102节点
# 102节点启动NameNode和DataNode
hdfs --daemon start namenode
hdfs --daemon start datanode
jps 	# 查看启动的java进程

2、103节点
# 开启ResourceManager,NodeManager,DataNode
yarn --daemon start resourcemanager
yarn --daemon start nodemanager
hdfs --daemon start datanode
jps
# 返回102节点
yarn --daemon start nodemanager
3、104节点
# 开启Secondary NameNode,NodeManager,DataNode
hdfs --daemon start secondarynamenode
yarn --daemon start nodemanager
hdfs --daemon start datanode
jps


######################################### 关闭 ####################################
1、先关每个节点的从服务
yarn --daemon stop nodemanager
hdfs --daemon stop datanode

2、102节点
hdfs --daemon stop namenode
jps

2、103节点
yarn --daemon stop resourcemanager
jps

3、104节点
hdfs --daemon stop secondarynamenode
jps

  • 测试UI界面
# NameNode UI界面	(之前配置的hdfs-default.xml)
hadoop102:9870

# Yarn UI界面
hadoop103:8088

# Secondary NameNode UI界面 (之前配置的hdfs-default.xml)
hadoop104:9868

2.6 脚本群起服务

  • 全量查看启动的服务
# 102节点执行
ansible -i /home/mhm/h-all all -m shell -a "/opt/module/jdk1.8.0_212/bin/jps"

# 102节点设置别名
vim ~/bashrc
alias myjps='ansible -i /home/mhm/h-all all -m shell -a "/opt/module/jdk1.8.0_212/bin/jps"'

# 执行命令
[mhm@hadoop102 ~]$ myjps
192.168.146.104 | CHANGED | rc=0 >>
1746 NodeManager
1655 SecondaryNameNode
2120 Jps
1564 DataNode
192.168.146.103 | CHANGED | rc=0 >>
2457 Jps
2043 NodeManager
1565 DataNode
1727 ResourceManager
192.168.146.102 | CHANGED | rc=0 >>
1688 NameNode
2120 NodeManager
2248 JobHistoryServer
1850 DataNode
2795 Jps
  • 繁琐步骤
# 因为已经配过/opt/module/hadoop-3.1.3/sbin的环境变量,所以该目录下的脚本可以直接使用
# 注意:群起脚本需要全部节点都事先配置/opt/module/hadoop-3.1.3/etc/hadoop/workers

1、102节点
start-dfs.sh

2、103节点
start-yarn.sh

3、全量节点
jps

################################ 停止全部服务	################################ 
1、102节点
stop-dfs.sh

2、103节点
stop-yarn.sh

3、全量节点
jps
  • 脚本实现
vim /home/mhm/bin/myhadoop.sh

#!/bin/bash

if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi

case $1 in
"start")
        echo " =================== 启动 hadoop集群 ==================="

        echo " --------------- 启动 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
        echo " --------------- 启动 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
        echo " =================== 关闭 hadoop集群 ==================="

        echo " --------------- 关闭 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
    echo "Input Args Error..."
;;
esac

2.7 集群测试






通过测试上传文件,发现本来实际hadoop的这个包是322MB,但是他分成3个数据块,前面2块128MB后面一块66多MB。
并且在最后一张图上可以查看到
Availability:
hadoop102
hadoop104
hadoop103

表示该数据块的副本存储在 hadoop102、hadoop103 和 hadoop104 这三个节点上
  • 再次执行命令测试
# 在任意节点执行均可
1、 新建一个测试文件
cat > /tmp/hello.txt << EOF
hadoop yarn byd
hadoop mapreduce ok
mhm byd ko
mhm byd
EOF

2、创建hdfs文件夹
hdfs dfs -mkdir /test

3、上传文件至该文件夹内
hdfs dfs -put /tmp/hello.txt /test/

4、执行测试命令
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /test /test2

5、查看执行结果
[mhm@hadoop104 ~]$ hdfs dfs -ls /test2/
Found 2 items
-rw-r--r--   3 mhm supergroup          0 2024-05-31 00:54 /test2/_SUCCESS
-rw-r--r--   3 mhm supergroup         50 2024-05-31 00:54 /test2/part-r-00000
[mhm@hadoop104 ~]$ hdfs dfs -cat /test2/part-r-00000
2024-05-31 00:55:40,562 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
byd	3
hadoop	2
ko	1
mapreduce	1
mhm	2
ok	1
yarn	1

6、查看刚刚执行的mr任务,如下图


2.8 集群URL

YARN UI http://hadoop103:8088/cluster
NameNode HTTP UI http://hadoop102:9870/
History UI http://hadoop102:19888/jobhistory
SecondaryNameNode

2.9测试mr命令

/opt/module/hadoop-3.1.3/bin/hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 16 1000

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

评论

欢迎来到我的博客!