当前位置: 首页 > news >正文

合并文件解决HiveServer2内存溢出方案

一、文件过多导致HiveServer2内存溢出

1.1查看表文件个数

desc formatted yanyu.tmp

文件个数

• 表文件数量为6522102

1.2查看表文件信息

hadoop fs -ls warehouse/yanyu.db/tmp

文件详情

• 分区为string 类型的time字段,分了2001个区。

1.3.查看某个分区下的文件个数为10000个

hadoop fs -ls warehouse/yanyu.db/tmp/time=45

在这里插入图片描述

1.4.执行select count(*) 是否内存溢出

在这里插入图片描述

•可以看到Jvm内存使用明显增大,Hiveserver2内存溢出,进程挂掉了;查看HiveServer2状态标红。

在这里插入图片描述

•详细日志如下

在这里插入图片描述
在这里插入图片描述

二、合并小文件以解决HiveServer2内存溢出

2.1小文件合并

• 将每个分区里的若干个小文件合并成一个文件,最终文件个数为分区数。合并流程如下:

2.1.1 创建表结构一致的临时表

 查看原始表信息desc formatted yanyu.tmp

在这里插入图片描述

• 然后创建一个数据结构与原表完全一样的临时表用来存储数据。

  create table yanyu.tmp_bak like yanyu.tmp;查看表属性show create table yanyu.tmp_bak;

2.1.2 将原始数据导入到临时表

• 配置合并小文件的参数

SET hive.merge.mapfiles = true;
SET hive.merge.mapredfiles = true;
--输出时合并小文件大小为256M
SET hive.merge.size.per.task = 256000000;
--输出文件平均大小小于该值,则开启小文件合并
SET hive.merge.smallfiles.avgsize = 134217728;
SET hive.exec.compress.output = true;
SET parquet.compression = snappy;
SET hive.exec.dynamic.partition.mode = nonstrict;
SET hive.exec.dynamic.partition = true;

• 查询原表数据并使用insert overwrite 将原表数据插入到临时表中

    insert overwrite table yanyu.tmp_bak  partition(time) select * from yanyu.tmp;查看合并小文件后的表文件个数(2000)desc formatted yanyu.tmp_bak;

在这里插入图片描述

2.1.3 查看hdfs文件系统里原始表和合并小文件表后任意分区下面的文件数量

  查看合并后的文件数量:hadoop fs -ls warehouse/yanyu.db/tmp_bak/time=0

在这里插入图片描述

  对比查看原始表分区下的文件数量:hadoop fs -ls warehouse/yanyu.db/tmp/time=0

在这里插入图片描述

• 说明:小文件合并操作后原始表的分区下的大量小文件合并为一个文件。

2.1.4 压缩小文件进行合并后是否查看数据

• 查看原始文件数据,正常显示
在这里插入图片描述

• 查看合并后的文件内容为乱码。
在这里插入图片描述

• 使用sql检查临时表数据是否和原表数据一致。
在这里插入图片描述

• 查看hdfs文件系统表格路径下文件个数是否与分区数一致。

hadoop fs -ls warehouse/yanyu.db/tmp_bak

在这里插入图片描述

 查看合并小文件后分区最大值为1999即有2000个分区(分区类型为string,以字符串排序)

2.1.5 删除原始表

• 确认表数据一致后,删除原表,使用alert修改临时表名为原表名。

alter table yanyu.tmp_bak rename to yanyu.tmp

三、总结

使用HiveServer2查询数据时,会将元数据都加载到内存中,如果一个表格的分区很大,每个分区中又有很多的小文件,就会导致将元数据加载到内存中时使用的内存比较大。因此,Cloudera公司推荐使用的分区数最好不要超过1000个分区;同时分区中的也不要存储过多的为小文件,要定期对数据进行治理以合并小文件。

相关文章:

合并文件解决HiveServer2内存溢出方案

一、文件过多导致HiveServer2内存溢出 1.1查看表文件个数 desc formatted yanyu.tmp• 表文件数量为6522102 1.2查看表文件信息 hadoop fs -ls warehouse/yanyu.db/tmp• 分区为string 类型的time字段,分了2001个区。 1.3.查看某个分区下的文件个数为10000个 …...

韧性数据安全体系缘起与三个目标 |CEO专栏

今年4月,美创科技在数据安全领域的新探索——“韧性”数据安全防护体系框架正式发布亮相。 为帮您更深入了解“韧性数据安全”,我们特别推出专栏“构建适应性进化的韧性数据安全体系”,CEO柳遵梁亲自执笔,进行系列解读分享。 首期…...

华为OD机试真题 Java 实现【火车进站】【牛客练习题】

一、题目描述 给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号,火车站只有一个方向进出,同时停靠在火车站的列车中,只有后进站的出站了,先进站的才能出站。 要求输出所有火车出站的方案,以字典序排序输出。 …...

c#快速入门(下)

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析2 目录 &#x1f449;&#x1f3fb;Inline和lambda委托和lambda &#x1f449;&#x1f…...

基于深度学习的目标姿态检测方法_kaic

目录 摘要 第1章 引言 1.1 研究背景和意义 1.2 国内外研究现状 1.3 主要内容 第2章 单目相机的目标姿态检测技术 2.1单目相机的工作原理 2.2目标姿态检测 2.3已有的目标姿态检测方法及其局限性 2.4本章总结 第3章 构建数据集 3.1 数据集来源 3.2数据集标注 3.3数据集分析 3.4本…...

Pycharm设置Python每个文件开头自定义模板(带上声明字符编码、作者名、时间等)

Pycharm设置地址&#xff1a; 在File---settings---Editor---File and Code Templates---Python script 脚本里添加: 模板声明设置参考&#xff1a; # ---encoding:utf-8--- # Time : ${DATE} ${HOUR}:${MINUTE} # Author : 作者名 # Email &#xff1a;你的邮箱 # Sit…...

Gem相关操作命令

Gem相关操作命令 gem -v # 查看 gem 版本gem source # 查看 gem 配置源 gem source -l # 查看 gem 配置源目录 gem sources -a url # 添加 gem 配置源&#xff08;url 需换成网址&#xff09; gem sources --add url # 添加 gem 配置源&#xff08;url 需换成网址&#xff09;…...

软件测试2023年行情怎么样?仔细讲解!

目录 前言&#xff1a; 普通功能测试人员不建议跳槽 还有一个要求就是要对业务的极致理解 那么产业互联网趋势会导致什么呢&#xff1f; 现在跳槽涨薪需要掌握到什么样的技术呢&#xff1f; 给大家一些跳槽建议 前言&#xff1a; 软件测试是为了发现程序中的错误而执行程序的…...

【1130. 叶值的最小代价生成树】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个正整数数组 arr&#xff0c;考虑所有满足以下条件的二叉树&#xff1a; 每个节点都有 0 个或是 2 个子节点。数组 arr 中的值与树的中序遍历中每个叶节点的值一一对应。每个非叶节点的值等于…...

Linux各个目录的全称及含义

/ 根目录&#xff0c;包含整个文件系统的根节点。 /bin : Binary Directory 二进制文件目录&#xff0c;包含一些基本的可执行程序。 /boot : Boot Directory 包含启动系统所需的文件&#xff0c;如内核和引导程序。 /dev : Device Directory 设备文件目录&#xff0c;…...

Cookie和Session原理详解

目录 前言 Cookie Session 会话机制 Cookie和Session的区别 Servlet中对Session和Cookie的封装 代码实例&#xff1a;实现用户登录 约定前后端交互的接口 前端页面&#xff1a; 后端实现 login index 总结 前言 在web的发展史中&#xff0c;我们知道浏览器和服务…...

小程序自动化测试

背景 近期团队打算做一个小程序自动化测试的工具&#xff0c;期望能够做到业务人员操作一遍小程序后&#xff0c;自动还原之前的操作路径&#xff0c;并且捕获操作过程中发生的异常&#xff0c;以此来判断这次发布是否会影响小程序的基础功能。 上述描述看似简单&#xff0c;…...

【linux系统操作】 - 技术一览

文章目录 1. 用户管理2. 文件管理3. 文件系统4. 字符处理5. 网络管理6. 进程管理7. 软件安装8. vi和vim编辑器9. 正则表达式 1. 用户管理 1.用户和用户组 2.账号管理 新增和删除用户、组&#xff1b;检查用户信息切换用户信息、用其他用户身份执行例行任务管理 : 周期性执行任…...

yield和sleep 区别

yield和sleep对比 sleepyieldsleep会导致当前线程暂停指定的时间&#xff0c;没有CPU时间片的消耗。yield只是对CPU调度器的一个提示&#xff0c;如果CPU调度器没有忽略这个提示&#xff0c;它会导致线程上下文的切换。sleep会使线程短暂block&#xff0c;会在给定的时间内释放…...

Redis 注册服务,自动启动

通常情况下我们可以通过 redis-server.exe 和配置文件启动redis服务 : 命令&#xff1a; redis-server.exe redis.windows.conf 另外开启一个命令行窗口 redis-cli.exe 即可做一些简单的操作命令行 但如果我们关闭控制台&#xff0c;那么Redis服务也跟随着一起关闭了&#x…...

华为OD机试真题 Java 实现【字符统计】【2023 B卷 100分】

一、题目描述 输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出。 数据范围:字符串长度满足 1≤len(str)≤1000 。 二、输入描述 一个只包含小写英文字母和数字的字符串。 三、…...

ASP.NET Core MVC 从入门到精通之自动映射(一)

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…...

4. WebGPU 存储缓冲区 (WebGPU Storage Buffers)

这篇文章是关于存储缓冲区的&#xff0c;我们从上一篇文章暂停的地方继续。 存储缓冲区在许多方面类似于统一缓冲区。如果我们所做的只是将 JavaScript 中的 UNIFORM 更改为 STORAGE 并将 WGSL 中的 var 更改为 var<storage, read> &#xff0c;那么上一页中的示例就可以…...

ChatGPT 插件功能深度解析:acquire、scholarai、form

引言 在我们的日常工作中&#xff0c;插件扮演着重要的角色&#xff0c;它们可以帮助我们提高工作效率&#xff0c;简化复杂的任务。在这篇文章中&#xff0c;我将详细介绍三个非常实用的插件&#xff1a;acquire、scholarai和form。 1、acquire 插件详解 acquire插件是一个…...

【面试集锦 - 汽车电子 - ASPICE]

ASPICE ASPICE&#xff08;Automotive Software Performance Improvement and Capability dEtermination&#xff09;是一种针对汽车电子行业的软件过程评估和改进模型。它是一种国际标准&#xff0c;旨在帮助汽车制造商和供应商评估和改进其软件开发过程的能力&#xff0c;以…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...