因为跨机房业务需要,在另一个机房部署了一个小型的hadoop集群,其中一个节点为namenode无计算节点datanode,而其它两个节点为datanode节点其中每过节点分配50G的内存,总共100G内存资源;而每台机器都是32核CPU,制定最高使用80% 即26核,配置如下:
yarn-site.xml
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>51200</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>26</value>
</property>
因为目前主要是用hive做离线数据分析,一开始数据量少的情况下hive执行基本没什么问题,当我们的业务量上来之后,对应的数据量也上升,突然有一天发现,之前执行得好好的hive任务执行不成功。后来经过这控制台执行发现如下问题:
执行进度总是0%
过一段时间报上图的错误,然后退出。
也有的时候是报内存溢出:
Diagnostic Messages for this Task:
Error: java.lang.OutOfMemoryError: Java heap space
大概估计应该是集群资源不足导致。所以在网上搜索了一下关于hive内存溢出相关问题的文章,找到http://blog.csdn.net/godspeedlaile9/article/details/13776595,按照这篇文章提出的解决方案:
Currently hive.map.aggr.hash.percentmemory is set to 0.5. Try setting it to a lower value. i.e 'set hive.map.aggr.hash.percentmemory = 0.25;'
也就是说hive目前的这个属性是0.5,我们把它在hive中调整成0.25,调整完之后任务居然能够正常执行了。
但是其中的缘由确给我打了一个深深的问号?
查看了一下hive中hive.map.aggr.hash.percentmemory属性的说明:Hive Map 端聚合的哈稀存储所占用虚拟机的内存比例。
意思是说,当内存的Map大小,占到JVM配置的Map进程的25%的时候(默认是50%),就将这个数据flush到reducer去,以释放内存Map的空间。
错误原因:Map端聚合时hash表所占用的内存比例默认为0.5,这个值超过可用内存大小,导致内存溢出。
PS:资源不足很多同学可能第一想的是加机器,我一开始也是这么想的,但是现实总是有差距,只能尽力做到物尽其用了。
欢迎大家提出不同的方案或补充!
参考资料:
http://dacoolbaby.iteye.com/blog/1880089
http://blog.csdn.net/lixucpf/article/details/20458617
- 大小: 8.7 KB
- 大小: 24.2 KB
分享到:
相关推荐
### Hive的一些报错及解决方法 #### 一、Hive连接报错 在更换网络接口卡后重新启动服务时,可能会遇到Hive连接失败的问题。此类问题通常与元数据存储中的异常有关,例如存在多个版本的元数据或者端口被其他服务...
这里我们将深入探讨五个在Hive on Tez中常见的报错问题及其解决方案。 1. 错误一:Failing because I am unlikely to write too。 这个问题是由于Hive中的一个已知bug,具体问题可以在Apache JIRA的HIVE-16398中...
3. **性能分析**:通过统计每个操作的成本(如时间、内存和CPU使用量),帮助用户定位潜在的性能问题。例如,可能会发现某个join操作过于复杂或者数据倾斜导致了性能瓶颈。 4. **优化建议**:根据分析结果,提供...
总的来说,理解Hive的优化策略和执行原理对于提升查询性能至关重要。通过对SQL语句的精心设计和对集群配置的适当调整,可以有效地处理大规模数据查询。同时,随着Hive与其他计算框架如Spark的融合,其执行效率和灵活...
在这个例子中,我们首先通过`EXPLAIN`关键字获取查询的执行计划,然后分析各个部分是如何连接和过滤的,以此来判断查询的效率并做出相应的调整。 #### 四、避免SQL注释中的分号问题 在Hive SQL中,注释中不应包含...
基于SpringBoot+hiveJDBC+echarts的数据大屏可视化和大数据分析源码+项目使用说明.zip 【项目介绍】 使用Hadoop技术可快速生成分析结果,对6万条美妆销售数据分析,将数据转化为有价值的数据。 在Centos7中搭建 ...
替换这些jar包意味着升级了Hive在CDH环境中的执行部分和ORC处理库,以解决在2.1.1版本中遇到的问题。 分发新jar包到各个服务器是必要的步骤,因为Hive通常在分布式环境中运行,每个节点都需要有正确的库才能正确...
### Spark与Hive自定义函数兼容性问题解析 在大数据处理领域,Apache Spark 和 Apache Hive 都是非常重要的工具。Spark 是一种快速通用的大规模数据处理系统,而Hive 则是一种数据仓库工具,主要用于对存储在 ...
综上,Hive的优化和执行原理涉及多个层面,包括数据组织、查询设计、系统配置和执行引擎的选择。理解这些原理并结合实际场景进行调优,能够有效提升Hive在大数据处理中的性能。通过深入学习和实践,我们可以更好地...
通过上述分析可以看出,对于“Spark或MR引擎插入的数据,Hive表查询数据为0”的问题,主要是因为Tez引擎在执行`UNION ALL`操作时生成了额外的子目录,而查询引擎未能正确处理这些子目录。通过改变数据写入方式或是...
Hive是Apache Hadoop生态系统中的一个数据仓库工具,它允许用户使用SQL(称为HQL,Hive查询语言)对大规模存储在Hadoop分布式文件系统(HDFS)中的结构化数据进行查询和分析。Hive提供了数据整理、离线查询以及用户...
windows10下安装hive2.3.3的时候,无法执行hive命令,原因是官方下载文件中缺少可执行文件(好多个cmd文件),安装的时候无法执行成功。下载后,解压替换hive的bin目录即可执行成功。
### DataX 数据从 Hive 导入 MySQL 数据缺失解决 #### 背景介绍 在大数据处理领域,Hive 和 MySQL 分别作为...通过以上分析和实践,我们不仅解决了当前的数据缺失问题,也为未来处理类似问题提供了宝贵的经验和参考。
Hive on Spark源码分析 Hive on Spark 源码分析是指将 Hive 默认的执行...通过对 Hive on Spark 的源码分析,我们可以更好地理解 Hive on Spark 的运行机理和实现原理,从而更好地应用 Hive on Spark 解决实际问题。
在Windows环境下,Hive的使用需要特定的配置和执行文件。以下是对标题和描述中涉及的知识点的详细解释: 1. **Hive在Windows上的安装**: - Hive通常在Linux环境下运行,但在Windows上也可以通过安装Java环境和...
### HDFS高可用机制与Hive兼容性问题详解 #### 一、背景介绍 Hadoop分布式文件系统(HDFS)是...综上所述,通过合理的配置调整和技术优化,可以有效解决HDFS HA与Hive之间的兼容性问题,保障大数据平台的稳定运行。
不同版本的Hive和Hadoop可能对Windows支持程度不同,有时候即使找到可下载的版本,也可能因为特定环境的配置或依赖问题导致无法正常运行。在这种情况下,用户通常需要尝试多个版本,或者进行一些额外的配置调整来使...
基于Hive的搜狗日志分析 本文档主要介绍了基于Hive的搜狗日志分析的整个过程,从数据预处理、构建数据仓库、数据分析到其他数据操作等方面进行了详细的介绍。 一、 数据预处理 数据预处理是整个日志分析的第一步...
利用Hive进行复杂用户行为大数据分析及优化案例(全套视频+课件+代码+讲义+工具软件),具体内容包括: 01_自动批量加载数据到hive 02_Hive表批量加载数据的脚本实现(一) 03_Hive表批量加载数据的脚本实现(二) ...
在Python中编写Hive脚本主要是为了方便地与Hadoop HIVE数据仓库进行交互,这样可以在数据分析和机器学习流程中无缝地集成大数据处理步骤。以下将详细介绍如何在Python环境中执行Hive查询和管理Hive脚本。 1. **直接...