黑马大数据学习笔记3-MapReduce配置和YARN部署以及基本命令

news2024/11/18 5:52:20

目录

  • 部署说明
  • MapReduce配置文件
  • YARN配置文件
  • 分发配置文件
  • 集群启动命令
    • 开始启动YARN集群
  • 查看YARN的WEB UI页面
  • 保存快照
  • YARN集群的启停命令
    • 一键启动脚本
    • 单进程启停
  • 提交MapReduce任务到YARN执行
    • 提交wordcount示例程序
    • 查看运行日志
    • 提交求圆周率示例程序

p41~43
https://www.bilibili.com/video/BV1WY4y197g7/?p=41

部署说明

  • Hadoop HDFS分布式文件系统,我们会启动:
    • NameNode进程作为管理节点
    • DataNode进程作为工作节点
    • SecondaryNamenode作为辅助
  • 同理,Hadoop YARN分布式资源调度,会启动:
    • ResourceManager进程作为管理节点
    • NodeManager进程作为工作节点
    • ProxyServer、JobHistoryServer这两个辅助节点
  • 那么,MapReduce呢?
    MapReduce运行在YARN容器内,无需启动独立进程

所以关于MapReduce和YARN的部署,其实就是2件事情:

  • 关于MapReduce: 修改相关配置文件,但是没有进程可以启动
  • 关于YARN: 修改相关配置文件, 并启动ResourceManager、NodeManager进程以及辅助进程(代理服务器、历史服务器)
    在这里插入图片描述
    有3台服务器,其中node1配置较高
    集群规划如下:
主机角色
node1ResourceManager、NodeManager、ProxyServer、JobHistoryServer
node2NodeManager
node3NodeManager

MapReduce配置文件

在 $HADOOP_HOME/etc/hadoop 文件夹内,修改:

  • mapred-env.sh文件
su - hadoop
cd /export/server/hadoop/etc/hadoop/
vim mapred-env.sh

在顶部添加以下内容

export JAVA_HOME=/export/server/jdk
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000
export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA

设置JDK路径
设置JobHistoryServer进程内存为1G
设置日志级别为INFO

  • mapred-site.xml文件
vim mapred-site.xml

<configuration></configuration>之间添加以下内容

<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
	<discription>MapReduce的运行框架运行为YARN</discription>
</property>

<property>
	<name>mapreduce.jobhistory.address</name>
	<value>node1:10020</value>
	<discription>历史服务器通讯端口为node1:10020</discription>
</property>

<property>
	<name>mapreduce.jobhistory.webapp.address</name>
	<value>node1:19888</value>
	<discription>历史服务器端口为node1的19888</discription>
</property>

<property>
	<name>mapreduce.jobhistory.intermediate-done-dir</name>
	<value>/data/mr-history/tmp</value>
	<discription>历史信息在HDFS的记录临时路径</discription>
</property>

<property>
	<name>mapreduce.jobhistory.done-dir</name>
	<value>/data/mr-history/done</value>
	<discription>历史信息在HDFS的记录路径</discription>
</property>

<property>
	<name>yarn.app.mapreduce.am.env</name>
	<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
	<discription>MapRedece HOME设置为HADOOP_HOME</discription>
</property>

<property>
	<name>mapreduce.map.env</name>
	<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
	<discription>MapRedece HOME设置为HADOOP_HOME</discription>
</property>

<property>
	<name>mapreduce.reduce.env</name>
	<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
	<discription>MapRedece HOME设置为HADOOP_HOME</discription>
</property>

YARN配置文件

vim yarn-env.sh

在顶部添加以下内容

export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs

设置JDK路径的环境变量
设置HADOOP_HOME的环境变量
设置配置文件路径的环境变量
设置日志文件路径的环境变量

vim yarn-site.xml

<configuration></configuration>之间添加以下内容

<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>node1</value>
	<discription>ResourceManager设置在node1节点</discription>
</property>

<property>
	<name>yarn.nodemanager.local-dirs</name>
	<value>/data/nm-local</value>
	<discription>NodeManager中间数据本地存储路径</discription>
</property>

<property>
	<name>yarn.nodemanager.log-dirs</name>
	<value>/data/nm-log</value>
	<discription>NodeManager数据日志本地存储路径</discription>
</property>

<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
	<discription>为MapReduce程序开启Shuffle服务</discription>
</property>

<property>
	<name>yarn.log.server.url</name>
	<value>http://node1:19888/jobhistory/logs</value>
	<discription>历史服务器URL</discription>
</property>

<property>
	<name>yarn.web-proxy.address</name>
	<value>node1:8089</value>
	<discription>代理服务器主机和端口</discription>
</property>

<property>
	<name>yarn.log-aggregation-enable</name>
	<value>true</value>
	<discription>开启日志聚合</discription>
</property>

<property>
	<name>yarn.nodemanager.remote-app-log-dir</name>
	<value>/tmp/logs</value>
	<discription>程序日志HDFS的存储路径</discription>
</property>

<property>
	<name>yarn.resourcemanager.scheduler.class</name>
	<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
	<discription>选择公平调度器</discription>
</property>

分发配置文件

把配置好的文件分发到其他服务器节点中

scp mapred-env.sh mapred-site.xml yarn-env.sh yarn-site.xml node2:`pwd`/
scp mapred-env.sh mapred-site.xml yarn-env.sh yarn-site.xml node3:`pwd`/

集群启动命令

常用的进程启动命令如下:

  • 一键启动YARN集群: $HADOOP_HOME/sbin/start-yarn.sh
    • 会基于yarn-site.xml中配置的yarn.resourcemanager.hostname来决定在哪台机器上启动resourcemanager
    • 会基于workers文件配置的主机启动NodeManager
  • 一键停止YARN集群: $HADOOP_HOME/sbin/stop-yarn.sh
  • 在当前机器,单独启动或停止进程
    • $HADOOP_HOME/bin/yarn --daemon start|stop resourcemanager|nodemanager|proxyserver
    • start和stop决定启动和停止
    • 可控制resourcemanager、nodemanager、proxyserver三种进程
  • 历史服务器启动和停止
    • $HADOOP_HOME/bin/mapred --daemon start|stop historyserver

开始启动YARN集群

在node1服务器,以hadoop用户执行

start-dfs.sh
start-yarn.sh
jps
mapred --daemon start historyserver

日志文件在/export/server/hadoop/logs,出问题可以查看日志来排查问题。

在这里插入图片描述

查看YARN的WEB UI页面

打开 http://node1:8088 即可看到YARN集群的监控页面(ResourceManager的WEB UI)
在这里插入图片描述

保存快照

三个服务器都关机退出保存快照

su -
init 0

刚刚部署好YARN集群
在这里插入图片描述

YARN集群的启停命令

一键启动脚本

启动:
$HADOOP_HOME/sbin/start-yarn.sh

从yarn-site.xml中读取配置,确定ResourceManager所在机器,并启动它。
读取workers文件,确定机器,启动全部的NodeManager。
在当前机器启动ProxyServer(代理服务器)。

关闭:
$HADOOP_HOME/sbin/stop-yarn.sh

start-yarn.sh
jps
stop-yarn.sh

单进程启停

除了一键启停外,也可以单独控制进程的启停。

$HADOOP_HOME/bin/yarn,此程序也可以用以单独控制所在机器的进程的启停
用法:yarn --daemon (start|stop) (resourcemanager|nodemanager|proxyserver)

yarn --daemon start resourcemanager
yarn --daemon stop resourcemanager
yarn --daemon start nodemanager
yarn --daemon stop nodemanager
yarn --daemon start proxyserver
yarn --daemon stop proxyserver

$HADOOP_HOME/bin/mapred,此程序也可以用以单独控制所在机器的历史服务器的启停
用法:mapred --daemon (start|stop) historyserver

mapred --daemon stop historyserver
mapred --daemon start historyserver

提交MapReduce任务到YARN执行

YARN作为资源调度管控框架,其本身提供资源供许多程序运行,常见的有:MapReduce程序、Spark程序、Flink程序

Hadoop官方内置了一些预置的MapReduce程序代码,我们无需编程,只需要通过命令即可使用。

常用的有2个MapReduce内置程序:

  • wordcount:单词计数程序。
    统计指定文件内各个单词出现的次数
  • pi:求圆周率
    通过蒙特卡罗算法(统计模拟法)求圆周率

这些内置的示例MapReduce程序代码,都在:
$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar 这个文件内。

cd /export/server/hadoop/share/hadoop/mapreduce/
ll
cd

在这里插入图片描述

可以通过 hadoop jar 命令来运行它,提交MapReduce程序到YARN中。

语法: hadoop jar 程序文件 java类名 [程序参数] … [程序参数]

提交wordcount示例程序

单词计数示例程序的功能很简单:

  • 给定数据输入的路径(HDFS)、给定结果输出的路径(HDFS)
  • 将输入路径内的数据中的单词进行计数,将结果写到输出路径

我们可以准备一份数据文件,并上传到HDFS中。

hadoop it bigdata hello world
hello bigdata hdfs
it is hadoop hdfs
hdfs mapreduce yarn
hadoop yarn

将上面内容保存到Linux中为words.txt文件,并上传到HDFS

start-dfs.sh
vim words.txt
hadoop fs -mkdir -p /input
hadoop fs -mkdir /output
hadoop fs -ls /
hadoop fs -put words.txt /input/
hadoop fs -ls /input/

在这里插入图片描述

执行如下命令,提交示例MapReduce程序WordCount到YARN中执行

start-yarn.sh
mapred --daemon start historyserver
hadoop jar /export/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount hdfs://node1:8020/input hdfs://node1:8020/output/wc

注意:
参数wordcount,表示运行jar包中的单词计数程序(Java Class)
参数1是数据输入路径(hdfs://node1:8020/input/wordcount/)
参数2是结果输出路径(hdfs://node1:8020/output/wc), 需要确保输出的文件夹不存在

提交程序后,可以在YARN的WEB UI页面看到运行中的程序(http://node1:8088/cluster/apps)

在这里插入图片描述

执行完成后,可以查看HDFS上的输出结果

hadoop fs -ls /output/wc
hadoop fs -cat /output/wc/*

在这里插入图片描述

  • _SUCCESS文件是标记文件,表示运行成功,本身是空文件
  • part-r-00000,是结果文件,结果存储在以part开头的文件中

执行完成后,可以借助历史服务器查看到程序的历史运行信息

ps:如果没有启动历史服务器和代理服务器,此操作无法完成(页面信息由历史服务器提供,鼠标点击跳转到新网页功能由代理服务器提供)

查看运行日志

点击logs链接,可以查看到详细的运行日志信息。
此功能基于:

  1. 配置文件中配置了日志聚合功能,并设置了历史服务器

  1. 启动了代理服务器和历史服务器
  2. 历史服务器进程会将日志收集整理,形成可以查看的网页内容供我们查看。

所以,如果发现无法查看程序运行历史以及无法查看程序运行日志信息,请检查上述1、2、3是否都正确设置。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

提交求圆周率示例程序

可以执行如下命令,使用蒙特卡罗算法模拟计算求PI(圆周率)

hadoop jar /export/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar pi 3 1000

参数pi表示要运行的Java类,这里表示运行jar包中的求pi程序
参数3,表示设置几个map任务
参数1000,表示模拟求PI的样本数(越大求的PI越准确,但是速度越慢)

(样本1000太小,不够精准)
在这里插入图片描述

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

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

相关文章

无线温湿度信息中继器模块的组成和工作状态及编程与组网建议

在无线温湿度信息收集系统中&#xff0c;信息中继器模块是连接终端信息点与互联网的重要节点。本文将详细介绍该模块的组成和工作状态&#xff0c;并给出编程和组网的建议。 一、组成 该无线温湿度信息中继器模块由以下几个核心组成部分构成&#xff1a; STM32F103ZET6主控芯片…

17- C++ const和异常-5 (C++)

第六章 C对C的拓展2 6.1 const详解 6.1.1 const 修饰普通变量 被修饰的对象是只读的 const int a; //a的值是只读的 int const a; const int * p; 该语句表示指向整形常量的 指针&#xff0c;它指向的值不能修改。 int const * p; 该语句与b的含义相同&#xff0c;表…

adobe ps beta的使用方法

1、人物换发型。 1&#xff09;套索套选出来相关的头发。 2&#xff09;点击生成&#xff0c;输入“red hair” 按“生成”键。 2、人物换眼睛。 1&#xff09;套索套选出来相关的眼睛区域&#xff0c;大一点范围。 2&#xff09;点击生成&#xff0c;输入“blue eyes"…

【Golang 接口自动化03】 解析接口返回XML

目录 解析接口返回数据 定义结构体 解析函数&#xff1a; 测试 优化 资料获取方法 上一篇我们学习了怎么发送各种数据类型的http请求&#xff0c;这一篇我们来介绍怎么来解析接口返回的XML的数据。 解析接口返回数据 定义结构体 假设我们现在有一个接口返回的数据resp如…

分布式软件架构——内容分发网络

内容分发网络&#xff08;CDN&#xff0c;Content Distribution Network或Content Delivery Network&#xff09; 其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节&#xff0c;使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现…

【数据结构与算法】归并排序

归并排序 归并排序&#xff08;MERGE-SORT&#xff09;是利用归并的思想实现的排序方法&#xff0c;该算法采用经典的分治&#xff08;divide-and-conquer&#xff09;策略&#xff08;分治法将问题分&#xff08;divide&#xff09;成一些小的问题然后递归求解&#xff0c;而…

LaTex语法(常用数学符号的语法和注意事项)

说明:[]括号表示把语法括起来&#xff0c;并不表示LaTex语法。 1. 求和符号(Σ) 这个符号的基本语法为&#xff1a;[\sum_{}^{}]。 符号有两种模式&#xff1a;内联数学模式(inside math mode)和显示数学模式(displayed math mode)。 内联数学模式&#xff1a;排版时使用各…

CAN通信的位定时与同步

位定时与同步 1.位时间 1.1相关基本概念 1&#xff09;系统时钟&#xff1a;记为 t c l k t_{clk} tclk​&#xff1b; 2&#xff09;CAN时钟周期&#xff1a;CAN时钟是由系统时钟分频而来的一个时间长度值&#xff0c;表示CAN控制器的工作时钟&#xff0c;实际上就是一个时…

【前端知识】React 基础巩固(四十二)——React Hooks的介绍

React 基础巩固(四十二)——React Hooks的介绍 一、为什么需要Hook? Hook 是 React 16.8 的新增特性&#xff0c;它可以让我们在不编写class的情况下使用state以及其他的React特性&#xff08;比如生命周期&#xff09;。 class组件 VS 函数式组件&#xff1a; class的优势…

C语言每日一题:9.《数据结构》链表的中间节点+链表的倒数第k个节点。

第一题&#xff1a; 题目链接&#xff1a; >思路一&#xff1a; 1.第一遍遍历链表&#xff0c;直到找到尾结束第一次遍历&#xff0c;遍历的过程中记录链表长度。定义长度为k。 2.确定中间是第几个节点&#xff0c;计算是k/21根据题目要求。 3.再一次去遍历我们的数组&…

iOS开发-格式化时间显示刚刚几分钟前几小时前等

iOS开发-格式化时间显示刚刚几分钟前几小时前等 在开发中经常遇到从服务端获取的时间戳&#xff0c;需要转换显示刚刚、几分钟前、几小时前、几天前、年月日等格式。 主要用到了NSCalendar、NSDateComponents这两个类 NSString *result nil;NSCalendarUnit components (NSC…

minGPT 代码详解(训练 GPT 模型执行两位数加法)

文章目录 1. MinGPT 项目简介2. 相关论文2.1 GPT-12.2 GPT-22.3 GPT-3 3. 代码详解3.1 项目结构3.2 GPT 模型代码详解3.2.1 Transformer block3.2.2 GPT 3.3 两位数加法实验3.3.1 数据集构造3.3.2 训练器3.3.3 模型参数设置3.3.4 训练过程 1. MinGPT 项目简介 MinGPT 是 GPT 模…

【Linux】关于Bad magic number in super-block 当尝试打开/dev/sda1 时找不到有效的文件系统超级块

每个区段与 superblock 的信息都可以使用 dumpe2fs 这个指令来查询的&#xff01; 不过可惜的是&#xff0c;我们的 CentOS 7 现在是以 xfs 为默认文件系统&#xff0c; 所以目前你的系统应该无法使用 dumpe2fs 去查询任何文件系统的。 因为目前两个版本系统的根目录使用的文…

Servlet文件的下载

第一种方法直接在前端使用超链接&#xff0c;也就是a标签 浏览器不能识别会直接下载&#xff08;像压缩文件不能直接下载&#xff09;&#xff0c;浏览器能识别&#xff0c;想要下载加一个download属性。download可以不写任何信息。 首先在web下建一个文件&#xff0c;放需要…

Vue 3:玩一下web前端技术(七)

前言 本章内容为VUE生命周期与相关技术讨论。 上一篇文章地址&#xff1a; Vue 3&#xff1a;玩一下web前端技术&#xff08;六&#xff09;_Lion King的博客-CSDN博客 下一篇文章地址&#xff1a; Vue 3&#xff1a;玩一下web前端技术&#xff08;八&#xff09;_Lion Ki…

9、测试Service组件和使用模拟组件辅助测试

测试Service组件和使用模拟组件辅助测试 测试Service组件 测试Service组件无需启动Web服务器&#xff0c;所以使用SpringBootTest(webEnvironment WebEnvironment.NONE)修饰测试用例类即可 &#xff08;用NONE表示不启动Web服务器&#xff09;。 Service组件其实就是一个普…

【002 操作系统】进程的状态及状态转换图?

一、进程的状态 1. 创建状态 2. 就绪状态 3. 运行状态 4. 阻塞状态 5. 终止状态 图源&#xff1a;进程、线程基础知识全家桶&#xff0c;30 张图一套带走_Linux_小林coding_InfoQ写作社区 NULL -> 创建状态&#xff1a;一个新进程被创建时的第一个状态&#xff1b; 创建状态…

python+django+mysql项目实践一(环境准备)

python项目实践 环境说明: Pycharm 开发环境 Django 前端 MySQL 数据库 Navicat 数据库管理 创建Pycharm项目 安装Django 在pycharm文件—设置进行安装 新建Django项目 注意项目创建目录 项目默认目录文件说明: __init__.py asgi.py 【异步接受网络…

Qt 5. QSerialPort串口收发

1. 代码 //ex2.cpp #include "ex2.h" #include "ui_ex2.h" #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo>int static cnt 0;Ex2::Ex2(QWidget *parent): QDialog(parent), ui(new Ui::Ex2) {ui->setupUi…

Win11的dev通道更新Build23493版本后启用Windows Copilot的解决办法

博客嘛&#xff0c;多偷懒少打字&#xff0c;先上图&#xff1a; 首先是微软宣布了对dev通道版本推送了Windows Copilot for Windows 11&#xff0c;但是相信像我这样的小白想体验又对win一窍不通的人应该也有不少&#xff0c;经历了一次重装&#xff0c;五次版本的回退再更新后…