【大数据之Hive】二十、Hive之调优相关配置及Explain查看执行计划

news2024/11/25 2:58:22

1 Yarn资源配置

  需要调整Yarn的参数与CPU、内存等资源有关
(1)yarn.nodemanager.resource.memory-mb
  设置一个NodeManager节点分配给容器Container使用的内存,取决于NodeManager所在节点的总内存容量和该节点运行的其他服务的数量,一般为总内存的1/2到2/3之间。

<!-- NodeManager节点分配给容器Container使用的内存 设置2G -->
<property>
   <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
</property>

(2)yarn.nodemanager.resource.cpu-vcores
  设置一个NodeManager节点分配给Container使用的CPU核数,取决于NodeManager所在节点的总CPU核数和该节点运行的其他服务,一般一个核分配4G内存。

<!-- NodeManager节点分配给Container使用的CPU核数 -->
<property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>1</value>
</property>

(3)yarn.scheduler.maximum-allocation-mb
  单个Container能够使用的最大内存,可以稍微调大一点。

<!-- 单个Container能够使用的最大内存 -->
<property>
   <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>1536</value>
</property>

(4)yarn.scheduler.minimum-allocation-mb
  单个Container能够使用的最小内存。

<!-- 单个Container能够使用的最小内存 -->
<property>
   <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>512</value>
</property>

修改yarn-site.xml文件

<!-- NodeManager节点分配给容器Container使用的内存 设置64G -->
<property>
   <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
</property>

<!-- NodeManager节点分配给Container使用的CPU核数 -->
<property>
   <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>1</value>
</property>

<!-- 单个Container能够使用的最大内存 -->
<property>
   <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>1536</value>
</property>

<!-- 单个Container能够使用的最小内存 -->
<property>
   <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>512</value>
</property>

保存分发然后重启yarn。

xsync yarn-site.xml
stop-yarn.sh
start-yarn.sh

2 MapReduce配置

  MapReduce资源配置主要包括Map Task的内存和CPU核数,以及Reduce Task的内存和CPU核数。

(1)mapreduce.map.memory.mb
  单个Map Task申请的container容器内存大小,其默认值为1024。该值不能超出yarn.scheduler.maximum-allocation-mb和yarn.scheduler.minimum-allocation-mb规定的范围。

  该参数需要根据不同的计算任务单独进行配置,在hive中,可直接使用如下方式为每个SQL语句单独进行配置:

set  mapreduce.map.memory.mb=1536;

(2)mapreduce.map.cpu.vcores
  单个Map Task申请的container容器cpu核数,其默认值为1。

(3)mapreduce.reduce.memory.mb
  单个Reduce Task申请的container容器内存大小,其默认值为1024。该值同样不能超出yarn.scheduler.maximum-allocation-mb和yarn.scheduler.minimum-allocation-mb规定的范围。
  该参数需要根据不同的计算任务单独进行配置,在hive中,可直接使用如下方式为每个SQL语句单独进行配置:

set  mapreduce.reduce.memory.mb=1536;

(4)mapreduce.reduce.cpu.vcores
  单个Reduce Task申请的container容器cpu核数,其默认值为1。

3 Explain查看执行计划

3.1 执行计划概述

  执行计划简单来说就是一个SQL语句最终翻译成多少个MapReduce,Map里做了什么,Reduce里做了什么。
  Explain显示的执行计划,由一系列Stage(整个执行计划的一个阶段,一条SQL语句会把整个阶段分为若干个执行计划)组成,Stage具有依赖关系,每个Stage对应一个MapReduce Job,或者一个文件系统操作等。
  若某个Stage对应的一个MapReduce Job,其Map端和Reduce端的计算逻辑分别由Map Operator Tree和Reduce Operator Tree进行描述;Operator Tree由一系列的Operator组成;一个Operator代表在Map或Reduce阶段的一个单一的逻辑操作,例如TableScan Operator,Select Operator,Join Operator等。

例如一个job执行计划:
  stage-1依赖stage-0。stage-0是拉取操作,stage-1有Map核Reduce操作树。
在这里插入图片描述
常见的Operator及其作用如下:

TableScan:表扫描操作,通常map端第一个操作肯定是表扫描操作。

Select Operator:选取操作。

Group By Operator:分组聚合操作。

Reduce Output Operator:输出到 reduce 操作。

Filter Operator:过滤操作,如where、having。

Join Operator:join 操作。

File Output Operator:文件输出操作。

Fetch Operator 客户端获取数据操作。

3.2 基本语法

explain [formatted|extended|dependency] query_sql;

(1)formatted:将执行计划以JSON字符串形式输出。
(2)extended:输出执行计划中的额外信息,通常是读写的文件名、临时文件目录等信息。
(3)dependency:输出执行计划读取的表或分区。

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

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

相关文章

搭建高性能数据库集群之二:MySQL读写分离(基于mycat2-1.22)

一、概述 读写分离是常见的一种数据库架构&#xff0c;一般是由 1 主多从构成&#xff0c;特殊场景下也会存在多主多从的架构。 无论哪一种架构&#xff0c;对于应用程序来说都是多个数据源&#xff0c;增加了代码的复杂性。如果配合 mycat&#xff0c;则可以实现屏蔽数据库复…

【C++】深入剖析vector

好久不见~让大家久等啦~ 本期让我们来揭开vector的面纱&#xff0c;看看它底层是怎么实现的~ 目录 一、STL定义vector的源码分析&#xff1a; 二、vector的模拟实现 2.1 vector框架的搭建&#xff08;一些简单功能函数的实现&#xff09; 2.2 迭代器失效问题 2.2.1 实现i…

【Spring】SpringCloud Ribbon中的7种负载均衡策略!

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 负载均衡通器常有两种实现手段&#xff0c;一种是服务端负载均衡器&#xff0c;另一种是客户端负载均衡器&#xff0c;而我们今天的主角 Ribbon 就属于后者——客户端负载均衡器。 服务…

个人总结:测试用例万能公式+常见例子(公式的运用)

前言 测试工程师面试的时候&#xff0c;有时候会当场考测试用例&#xff0c;毕竟这是测试工程师的基本功。 对于我来说&#xff0c;让我写测试用例会比让我直接说测试用例更好点。 直接嘴里说出来&#xff0c;容易逻辑混乱&#xff0c;给人一种想到啥说啥的感觉。 其实个人感…

MySQL学习基础篇(九)---子查询

MySQL学习基础篇(九)—子查询 子查询指一个查询语句嵌套在另一个查询语句内部的查询&#xff0c;这个特性从MySQL 4.1开始引入。SQL 中子查询的使用大大增强了 SELECT查询的能力&#xff0c;因为很多时候查询需要从结果集中获取数据&#xff0c;或者需要从同一个表中先计算得出…

MySQL安装与部署

第一种方法&#xff1a;在线安装 配置一个安装yum源 Adding the MySQL Yum Repository 可以手动配置yum源&#xff0c;baseurl指向国内镜像源地址&#xff0c;比如清华、中科大。 Installing MySQL Starting the MySQL Server&#xff1a; 查询临时登录密码 修改数据库密码…

CTFHub XSS DOM反射 WriteUp

前言&#xff1a;本文需要注册一个xss平台&#xff0c;以接收xss反弹回来的数据&#xff0c;请自己在互联网上寻找合适的xss平台 1. 构造闭合语句 根据题目提示&#xff0c;判断网站存在DOM xss漏洞 查看页面源代码&#xff0c;发现关键位置&#xff0c;其中CTFHub is very n…

【揭秘Vue核心】深入解析Object.defineProperty和Proxy的区别,让你秒懂!

问题&#xff1a;Object.difineProperty 和 proxy 有什么区别&#xff1f; Object.defineProperty 和 Proxy 是用于实现响应式数据的两种不同方式。 Object.defineProperty Object.defineProperty 通过直接修改对象的属性描述符来实现数据的劫持。Vue 2.x 中就是通过 Objec…

vscode 之 工作区的应用(解决vue2插件vetur、vue3插件volar禁用启用问题)

目录 前言创建工作区添加文件夹到工作区为当前打开的工作区指定特定环境工作区删除文件夹如何切换工作区 前言 工作区&#xff1f;&#xff1f;&#xff1f;为什么要工作区&#xff1f;&#xff1f;&#xff1f; 首先工作区简单理解就是vscode工作时的区域、范围&#xff1b; 延…

如何正确的安装MySQL

1. 使用rpm包在线安装 1.1 确认自己电脑版本(linux) [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)ps:本次安装采用的系统为Centos 7.9 所使用的mysql为5.7 1.2 下载rpm包 下载地址 https://dev.mysql.com/downloads/mysql/ ps: 自己…

初识树莓派:强大功能与创造力的结合

目录 树莓派4B简介&#xff1a; 树莓派系统镜像下载&#xff1a; 树莓派4B简介&#xff1a; 树莓派4B是一款功能强大且受欢迎的单板计算机&#xff0c;由树莓派基金会开发。作为树莓派系列的最新版本&#xff0c;4B提供了许多令人兴奋的特性和改进&#xff0c;使其成为教育、创…

SSM简单项目遇到的几个问题(最后一个问题,虽然能运行,但是我找不出问题出在哪里)

这几个问题&#xff0c;干扰了我很长时间。 主要因为书本的例子&#xff0c;是通过controller层返回到jsp层。但是&#xff0c;最后一个SSM项目&#xff0c;它用的是controller返回信息给Service层&#xff0c;再由Service层返回Jsp层。 实训&#xff1a;编写一个模糊查询姓名…

【Java基础教程】(三)程序概念篇 · 上:探索Java编程基础,注释、标识符、关键字、数据类型~

Java基础教程之程序概念 上 本节学习目标1️⃣ Java中的注释2️⃣ 标识符3️⃣ 关键字4️⃣ 数据类型4.1 整型&#x1f50d; 什么是变量&#xff1f;什么是常量&#xff1f;&#x1f50d;关于数据类型转换的规则&#xff1f; 4.2 浮点数&#x1f50d;关于Java的计算的缺陷 4.3…

chatGPT写综述

文献是任何学术研究的基础&#xff0c;但搜集和整合众多的信息&#xff0c;写成一篇健全的文献综述却是一项艰巨的任务。随着人工智能技术的发展&#xff0c;大型预训练语言模型&#xff08;LM&#xff09;&#xff0c;如OpenAI的ChatGPT变得越来越流行。本文将探讨如何使用Cha…

K8S的概念和基本应用

学习视频&#xff1a;Kubernetes基本概念和应用_哔哩哔哩_bilibili 零 . 架构概览 master节点&#xff1a;管理调度集群资源&#xff0c;一般为多节点构成&#xff0c;可以是物理机&#xff0c;也可以是虚拟机。worker节点&#xff1a;资源的提供者&#xff0c;一般为多节点构…

沟通的层次模型

沟通的层次模型 根据沟通的倾向性将沟通划分为五个层次&#xff0c;分别是情绪、感受、想法、态度和事实。 模型介绍 沟通的层次 第5层&#xff1a;沟通情绪-带着强烈情绪表达&#xff0c;尤其经常使用这些字眼&#xff1a;“总是”、“每次都”第4层&#xff1a;沟通感受-不…

【APP开发】uni-data-select真机下拉框不显示问题

官网示例&#xff1a;uni-data-select 因为外层container有样式&#xff1a; width: 100%; height: 100%; overflow: hidden; display: flex; flex-direction: column; 去掉最外层 class"container"之后就可以了&#xff0c;但具体原因不清楚 我是对比了Hello uni-…

python中多态的作用是什么?

在强类型语言(例如Java或C#)中&#xff0c;多态是指允许使用一个父类类型的变量或常量来引用一个子类类型的对象&#xff0c;根据被引用子类对象特征的不同&#xff0c;得到不同的运行结果。即使用父类的类型来调用子类的方法。 在Python中&#xff0c;多态指在不考虑对象类型…

js压缩base64图片

今天试了用js把base64编码格式的图片进行压缩&#xff0c;记录一下&#xff1a; base64图片转换地址 base64图片转换网址 代码如下 js&#xff1a; $(document).ready(function(){compressImg(targetObj.src, 0.5, useImg, targetObj) });let targetObj {// base64字符串 …

机器学习26:《数据准备和特征工程-IV》数据转换

特征工程 是确定哪些特征可能对训练模型有用&#xff0c;然后通过转换日志文件等数据来源中的原始数据来创建这些特征的过程。在本文中&#xff0c;笔者将重点讨论何时以及如何转换数字和分类数据&#xff0c;以及不同方法的权衡。 目录 1.数据转换的原因 1.1 数据兼容性的强…