Hadoop 3.2.4 集群搭建详细图文教程

一、集群简介

    Hadoop 集群包括两个集群:HDFS 集群、YARN 集群。两个集群逻辑上分离、通常物理上在一起;两个集群都是标准的主从架构集群。

在这里插入图片描述

  • 逻辑上分离
    两个集群互相之间没有依赖、互不影响

  • 物理上在一起
    某些角色进程往往部署在同一台物理服务器上

  • MapReduce 集群呢?
    MapReduce 是计算框架、代码层面的组件,没有集群之说

二、Hadoop 集群部署方式

在这里插入图片描述

标题三、集群安装

3.1 集群角色规划

    集群模式主要用于生产环境部署,需要多台主机,并且这些主机之间可以相互访问。本次是在 Centos 7.6 搭建集群模式,以三台主机为例,以下是集群规划

在这里插入图片描述

3.2 服务器基础环境准备

3.2.1 环境初始化

给三台机器进行环境初始化,特别是需要做好 Hosts 映射:CentOS 7 初始化系统_centos7初始化_Stars.Sky的博客-CSDN博客

3.2.2 ssh 免密登录(在 hadoop01 上执行)
# 4 个 回车,生成公钥、私钥
[root@hadoop01 ~]# ssh-keygen # 推送到各个节点
[root@hadoop01 ~]# ssh-copy-id root@hadoop01
[root@hadoop01 ~]# ssh-copy-id root@hadoop02
[root@hadoop01 ~]# ssh-copy-id root@hadoop03
3.2.3 各个节点上安装 JDK 1.8 环境
3.3 安装 Hadoop
# 创建统一工作目录(3 台机器)
[root@hadoop01 ~]# mkdir -p /bigdata/hadoop/server    # 软件安装路径
[root@hadoop01 ~]# mkdir -p /bigdata/hadoop/data      # 数据存储路径
[root@hadoop01 ~]# mkdir -p /bigdata/softwares        # 安装包存放路径# 上传、解压安装包(hadoop01)
[root@hadoop01 ~]# cd /bigdata/softwares/
[root@hadoop01 /bigdata/softwares]# ls
hadoop-3.2.4.tar.gz
[root@hadoop01 /bigdata/softwares]# tar -zxvf hadoop-3.2.4.tar.gz -C /bigdata/hadoop/server/
3.4 Hadoop 安装包目录结构
[root@hadoop01 /bigdata/softwares]# cd /bigdata/hadoop/server/
[root@hadoop01 /bigdata/hadoop/server]# ls
hadoop-3.2.4
[root@hadoop01 /bigdata/hadoop/server]# cd hadoop-3.2.4/
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4]# ls
bin  etc  include  lib  libexec  LICENSE.txt  NOTICE.txt  README.txt  sbin  share

在这里插入图片描述

3.5 编辑 Hadoop 配置文件
3.5.1 hadoop-env.sh
    文件中设置的是 Hadoop 运行时需要的环境变量。JAVA_HOME 是必须设置的,即使我们当前的系统中设置了 JAVA_HOME,它也是不认识的,因为 Hadoop 即使是在本机上执行,它也是把当前的执行环境当成远程服务器。 
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# pwd
/bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop # 在文件最后面直接添加下面内容
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim hadoop-env.sh
# 配置 JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_381
# 设置用户以执行对应角色 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
3.5.2 core-site.xml
    hadoop 的核心配置文件,有默认的配置项 core-default.xml。core-default.xml 与 core-site.xml 的功能是一样的,如果在 core-site.xml 里没有配置的属性,则会自动会获取 core-default.xml 里的相同属性的值。
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.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://hadoop01:8020</value>
</property>
<!-- hadoop 本地数据存储目录 format 时自动生成 -->
<property><name>hadoop.tmp.dir</name><value>/bigdata/hadoop/data/tmp</value>
</property>
<!-- 在 Web UI 访问 HDFS 使用的用户名。-->
<property><name>hadoop.http.staticuser.user</name><value>root</value>
</property>
</configuration>
3.5.3 hdfs-site.xml
    HDFS 的核心配置文件,主要配置 HDFS 相关参数,有默认的配置项 hdfs-default.xml。hdfs-default.xml 与 hdfs-site.xml 的功能是一样的,如果在 hdfs-site.xml 里没有配置的属性,则会自动会获取 hdfs-default.xml 里的相同属性的值。
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim hdfs-site.xml 
<configuration>
<!-- 设定 SNN 运行主机和端口 -->
<property><name>dfs.namenode.secondary.http-address</name><value>hadoop02:9868</value>
</property>
</configuration>
3.5.4 mapred-site.xml
    MapReduce 的核心配置文件,Hadoop 默认只有个模板文件 mapred-site.xml.template,需要使用该文件复制出来一份 mapred-site.xml 文件。
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim mapred-site.xml 
<configuration>
<!-- mr 程序默认运行方式。yarn 集群模式 local 本地模式-->
<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>
<!-- jobhistory 服务配置 注意 19888 是 web ui 访问端口 -->
<property><name>mapreduce.jobhistory.address</name><value>hadoop01:10020</value>
</property>
<property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop01:19888</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>
</configuration>
3.5.5 yarn-site.xml

YARN 的核心配置文件,在该文件中的 标签中添加以下配置。

[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim yarn-site.xml <!-- yarn 集群主角色 RM 运行机器。-->
<property><name>yarn.resourcemanager.hostname</name><value>hadoop01</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>
<!-- 开启 yarn 日志聚集功能,收集每个容器的日志集中存储在一个地方 -->
<property><name>yarn.log-aggregation-enable</name><value>true</value>
</property>
<!-- 日志保留时间设置为一天 -->
<property><name>yarn.log-aggregation.retain-seconds</name><value>86400</value>
</property>
<property><name>yarn.log.server.url</name><value>http://hadoop01:19888/jobhistory/logs</value>
</property>
3.5.6 workers

workers 文件里面记录的是集群主机名。一般有以下两种作用:

配合一键启动脚本如 start-dfs.sh、stop-yarn.sh 用来进行集群启动。这时候 slaves 文件里面的主机标记的就是从节点角色所在的机器。
可以配合 hdfs-site.xml 里面 dfs.hosts 属性形成一种白名单机制。
dfs.hosts 指定一个文件,其中包含允许连接到 NameNode 的主机列表。必须指定文件的完整路径名,那么所有在 workers 中的主机才可以加入的集群中。如果值为空,则允许所有主机。

[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim workers 
hadoop01
hadoop02
hadoop03
3.6 分发同步安装包

在 hadoop01 机器上将 Hadoop 安装包 scp 同步到其他机器

3.7 配置 Hadoop 环境变量

在三台机器上配置 Hadoop 环境变量

[root@hadoop01 /bigdata/hadoop/server]# vim /etc/profile
# hadoop
export HADOOP_HOME=/bigdata/hadoop/server/hadoop-3.2.4/
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin# 重新加载环境变量
[root@hadoop01 /bigdata/hadoop/server]# source /etc/profile# 验证环境变量是否生效
[root@hadoop01 /bigdata/hadoop/server]# hadoop
3.8 NameNode format(格式化操作)
    首次启动 HDFS 时,必须对其进行格式化操作。format 本质上是初始化工作,进行 HDFS 清理和准备工作。
# 仅在 hadoop01 上执行
[root@hadoop01 ~]# hdfs namenode -format[root@hadoop01 ~]# ll /bigdata/hadoop/data/tmp/dfs/name/current/
总用量 16
-rw-r--r-- 1 root root 396 831 17:04 fsimage_0000000000000000000
-rw-r--r-- 1 root root  62 831 17:04 fsimage_0000000000000000000.md5
-rw-r--r-- 1 root root   2 831 17:04 seen_txid
-rw-r--r-- 1 root root 218 831 17:04 VERSION
  • fsimage_0000000000000000000:这是文件系统镜像(File System Image),包含了HDFS的整个文件系统结构(如目录和文件元数据)的一个快照。
  • fsimage_0000000000000000000.md5:这是与fsimage文件对应的MD5校验和,用于验证文件完整性。
  • seen_txid:这个文件保存了NameNode最后一次启动后见到(即处理过)的最大事务ID。
  • VERSION:这个文件包含了与NameNode相关的各种版本和配置信息,比如Hadoop的版本号,布局版本等。
    在这里插入图片描述
3.9 Hadoop 集群启动关闭
3.9.1 手动逐个进程启停

每台机器上每次手动启动关闭一个角色进程。

  • HDFS 集群
hdfs --daemon start namenode|datanode|secondarynamenodehdfs --daemon stop  namenode|datanode|secondarynamenode
  • YARN 集群
yarn --daemon start resourcemanager|nodemanageryarn --daemon stop  resourcemanager|nodemanager
3.9.2 Hadoop 集群启动日志
# 启动完毕之后可以使用 jps 命令查看进程是否启动成功
[root@hadoop01 ~]# jps
22337 NodeManager
21798 DataNode
22203 ResourceManager
22669 Jps
21662 NameNode[root@hadoop02 ~]# jps
21114 NodeManager
21005 DataNode
21213 Jps[root@hadoop03 ~]# jps
21010 DataNode
21219 Jps
21119 NodeManager# Hadoop 启动日志
[root@hadoop01 ~]# ll /bigdata/hadoop/server/hadoop-3.2.4/logs/
总用量 184
-rw-r--r-- 1 root root 36069 831 17:54 hadoop-root-datanode-hadoop01.log
-rw-r--r-- 1 root root   692 831 17:54 hadoop-root-datanode-hadoop01.out
-rw-r--r-- 1 root root 43819 831 17:54 hadoop-root-namenode-hadoop01.log
-rw-r--r-- 1 root root   692 831 17:54 hadoop-root-namenode-hadoop01.out
-rw-r--r-- 1 root root 40045 831 17:55 hadoop-root-nodemanager-hadoop01.log
-rw-r--r-- 1 root root  2264 831 17:55 hadoop-root-nodemanager-hadoop01.out
-rw-r--r-- 1 root root 47741 831 17:55 hadoop-root-resourcemanager-hadoop01.log
-rw-r--r-- 1 root root  2280 831 17:54 hadoop-root-resourcemanager-hadoop01.out
-rw-r--r-- 1 root root     0 831 17:04 SecurityAuth-root.audit
drwxr-xr-x 2 root root     6 831 17:54 userlogs
3.10 Hadoop Web UI 页面
3.10.1 配置 windows 域名映射

以管理员身份打开 C:\Windows\System32\drivers\etc 目录下的 hosts 文件
在文件最后添加以下映射域名和 ip 映射关系

3.10.2 访问 HDFS 集群 UI 页面

地址:http://namenode_host:9870

其中 namenode_host 是 namenode 运行所在机器的主机名或者 ip。
在这里插入图片描述
HDFS 文件系统 Web 页面浏览
在这里插入图片描述

3.10.3 访问 YARN 集群 UI 页面

地址:http://resourcemanager_host:8088

其中 resourcemanager_host 是 resourcemanager 运行所在机器的主机名或者 ip。
在这里插入图片描述

3.10.4 访问 JobHistory 服务 UI 页面
# 启动 JobHistory 服务
[root@hadoop01 ~]# mapred --daemon start historyserver

地址:http://historyserver_host:19888/jobhistory

其中 historyserver_host 是 historyserver 运行所在机器的主机名或者 ip。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Open3D (C++) 计算条件数

目录 一、算法原理1、条件数2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、条件数 条件数法是目前应用最为广泛的一种病态诊断方法。条件数的定义为:

基于RNN的模型

文本数据是一种典型的具有序列结构的数据&#xff0c;因为文本通常是由一系列的词语或字符组成的序列。每个词语或字符在文本中都有特定的位置和顺序&#xff0c;这种有序的结构对于理解和处理文本的含义至关重要。因此&#xff0c;多数情况下需要使用时间序列建模来完成相应的…

HX711压力传感器学习一(STM32)

目录 原理图&#xff1a;​ 引脚介绍&#xff1a; HX711介绍工作原理: 程序讲解&#xff1a; 整套工程&#xff1a; 发送的代码工程&#xff0c;与博客的不一致&#xff0c;如果编译有报错请按照报错和博客进行修改 原理图&#xff1a; 引脚介绍&#xff1a; VCC和GND引…

计算机体系结构基础复习

1. 计算机系统可划分为哪几个层次,各层次之间的界面是什么? 你认为这样划分层次的意义何在? 答&#xff1a; 计算机系统可划分为四个层次&#xff0c;分别是&#xff1a;应用程序、 操作系统、 硬件系统、 晶体管四个大的层次。 注意把这四个层次联系起来的三个界面。各层次…

gateway Redisson接口级别限流解决方案

文章目录 前言1. 计数器算法&#xff08;固定窗口限流器&#xff09;2. 滑动窗口日志限流器3. 漏桶算法&#xff08;Leaky Bucket&#xff09;4. 令牌桶算法&#xff08;Token Bucket&#xff09;5. 限流队列应用场景实现工具 一、Redisson简介二、Redisson限流器的原理三、Red…

面向对象三大特征之三:多态--java学习笔记

什么是多态 多态是在继承/实现情况下的一种现象&#xff0c;表现为&#xff1a;对象多态、行为多态 对象多态&#xff1a;举个栗子&#xff0c;比如一个人&#xff0c;他可以是一个老师&#xff0c;也可以是一个歌手&#xff0c;也可以是一个丈夫...... 行为多态&#xff1a;举…

PHP反序列化总结4--原生类总结

原生类的简要介绍以及原生类和反序列化的关系 PHP 原生类指的是 PHP 内置的类&#xff0c;它们可以直接在 PHP 代码中使用且无需安装或导入任何库&#xff0c;相当于代码中的内置方法例如echo &#xff0c;print等等可以直接调用&#xff0c;但是原生类就是可以就直接php中直接…

jmeter分布式服务搭建

目录 一、环境准备 二、 安装包下载 三 、安装jdk 四 、控制机安装 4.1 解压压缩包 4.2 修改 bin/jmeter.properties 4.3 修改 bin/system.properties 五、执行机安装 5.1 解压安装包 5.2 修改 bin/jmeter.properties 5.3 修改 bin/system.properties 5.4 启动执行机 …

关于如何禁用、暂停或退出OneDrive等操作,看这篇文件就够了

​想知道如何禁用OneDrive?你可以暂停OneDrive的文件同步,退出应用程序,阻止它在启动时打开,或者永远从你的机器上删除该应用程序。我们将向你展示如何在Windows计算机上完成所有这些操作。 如何在Windows上关闭OneDrive 有多种方法可以防止OneDrive在你的电脑上妨碍你。…

堆排序——高效解决TOP-K问题

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 引言什么是堆&#xff1f;建堆堆排序&#xff1a;排序的最终结果 堆排序实现函数声明交换函数 Swap下沉调整 DnAdd堆排序函数 HeapSort主函数 文件中找…

SpringBoot+Vue实现对称加密和非对称加密

我们先来了解一下什么是对称加密和非对称加密&#xff0c;以及两者的优缺点 对称加密 使用同一个密钥对消息进行加密解密 优点&#xff1a;加密和解密的速度快&#xff0c;适合于数据量大的加解密 缺点&#xff1a;密钥在网络传输中可能被泄露&#xff0c;因此安全性相对较低…

C++核心编程三:函数提高(持续更新)

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;C从基础到进阶 &#x1f319;C核心编程&#x1f30f;1 函数提高&#x1f384;1.1 函数默认参数&#x1f384;1.2 函数占位参数&#x1f384;1.3 函数重载&#x1f349;1.3.1 函数重载概述&…

护眼灯有蓝光吗?防蓝光护眼台灯推荐

护眼台灯是家长为孩子购买的常见用品之一&#xff0c;但对于它的了解却不够深入&#xff0c;很多人购买之后反而容易出现眼睛疲劳、不适的情况&#xff01;据了解&#xff0c;主要的原因是因为在选择护眼台灯时&#xff0c;大多数人没有专业知识&#xff0c;没有买到合适的护眼…

012集:三目运算符实例讲解(if else)及for、while循环—python基础入门实例

Python也有自己的三目运算符&#xff1a; 条件为真时的结果 if 判段的条件 else 条件为假时的结果 即&#xff1a;Python可以通过if语句来实现三目运算符的功能&#xff0c;因此可以把这种if语句当做三目运算符&#xff0c;具体语法格式如下&#xff1a; 返回True执行 if 表达…

Github搭建图床 github搭建静态资源库 免费CDN加速 github搭建图床使用 jsdelivr CDN免费加速访问

Github搭建图床 github搭建静态资源库 免费CDN加速 github搭建图床使用 jsdelivr CDN免费加速访问 前言1、创建仓库2、开启 gh-pages页面功能3、访问测试 前言 写博客文章时&#xff0c;图片的上传和存放是一个问题&#xff0c;使用小众第三方图床&#xff0c;怕不稳定和倒闭&…

.net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别

//全局过滤器 builder.Services.AddMvc(m > { m.Filters.Add<AllResultFilter>(); }); 1、实现过滤器 public class AllResultFilter : IResultFilter {/// <summary>/// 结果执行后方法/// 不可更改结果/// </summary>/// <param name"con…

springboot+mysql大学生就业推荐系统-计算机毕业设计源码01535

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对学生就业管理等问题&#xff0c;对学生就业…

扒开MySQL的源码,探索MVCC实现方式

下载MySQL源码 没有什么比源码更靠谱的了&#xff0c;所以我们先把源码下载下来&#xff0c;后期验证使用MySQL源码下载 MVCC是什么 mvvc全称是multi-version concurrency control&#xff08;多版本并发控制&#xff09;&#xff0c;主要用于处理读写并发冲突的问题。 MVC…

大数据开发之Hive(企业级调优)

第 10 章&#xff1a;企业级调优 创建测试用例 1、建大表、小表和JOIN后表的语句 // 创建大表 create table bigtable(id bigint, t bigint, uid string, keyword string, url_rank int, click_num int, click_url string) row format delimited fields terminated by \t; //…

Asp .Net Core 系列:基于 Swashbuckle.AspNetCore 包 集成 Swagger

什么是 Swagger? Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。它提供了一种规范的方式来定义、构建和文档化 RESTful Web 服务&#xff0c;使客户端能够发现和理解各种服务的功能。Swagger 的目标是使部署管理和使用功…