我在进行两个大表的join时,任务显示成功,但Hadoop出现以下异常:
报出错误如下:
java.lang.RuntimeException:java.lang.reflect.InvocationTargetException
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:81)
at org.apache.hadoop.io.WritableUtils.clone(WritableUtils.java:231)
at com.***.***.ajoin.Exception.regroup(ExecReducer.java:239)
at com.***.***.ajoin.Exception.reduce(ExecReducer.java:263)
at com.***.***.ajoin.Exception.regroup(ExecReducer.java:1)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:430)
at org.apache.hadoop.mapred.child.main(Child.java:155)
Caused by:java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedConstructorAccessor6.newInstance(Unknow Source)
at sun.reflect.DelegationConstructorAccessorImp1.newInstance(DelegatingConstructorA
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:79)
... 6 more
Caused by:java.lang.OutOfMemoryError:java heap space
at java.nio.ByteBuffer.allocate(ByteBuffer.java:312)
at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:760)
at org.apache.hadoop.io.Text.encode(Text.java:388)
at org.apache.hadoop.io.Text.set(Text.java:178)
at org.apache.hadoop.io.Text.(Text.java:81)
at org.apache.hadoop.contrib.utils.join.TaggedMapOutput.(TaggedMapOut.java:37)
at com.***.***.ajoin.AjoinTaggedMapOutput.(AjoinTaggedMapOutput.java:15)
... 10 more
以及exception: java.lang.OutOfMemoryError: GC overhead limit exceeded
hadoop给每一个进程的空间默认是200M以上(具体不清楚,就是很小),可将这个参数调整以下,调整方法如下:
进入hadoop安装目录,conf文件下,编辑hadoop-site.xml文件,添加或修改
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx1024m</value>
</property>
该参数设置了任务进程的jvm的使用内存,我设置为1G,可视个人情况来定。
Java has a couple of settings that help control how much memory it uses:
- -Xmx sets the maximum memory heap size
- -Xms sets the minimum memory heap size
这个参数只能使从修改过的服务器提交的任务占有1G空间,其他服务器提交的保持各自的状态。
修改整个机群:
我首先修改hadoop集群的配置hadoop-release/conf/hadoop-default.xml,将该配置修改为-Xmx2048m
任何同步所有节点的该配置,然后重启这个集群。
然后运行任务发现,那个task的java进程仍然是运行-Xmx200m参数下,为什么?
原来-Xmx200m参数来至与提交job的客户端参数,因为offer提交job的机器在44.1上,在44.1上的hadoop客户端配置是-Xmx200m,这样提交的job会使用该配置。
后面将hadoop客户端配置修改为-Xmx1048m,重新运行一个job,查看hadoop集群的task进程,
已经发现进程已经运行在-Xmx1048m参数下。
分享到:
相关推荐
可能包括了 Java 代码示例,讲解如何创建 MapReduce 程序,并将其提交到 Hadoop 集群执行。 7. **运行与调试**: 在实际环境中,我们需要配置 Hadoop 集群,设置输入文件路径,编译并打包 WordCount 程序,最后...
在Hadoop 2.7.7版本中,开发MapReduce程序通常需要使用Java编程语言。你需要导入Hadoop的相关库,创建Mapper和Reducer类,并实现它们的map()、reduce()方法。此外,还需要配置Job参数,如输入路径、输出路径、Mapper...
在大数据处理领域,Hadoop MapReduce是一个至关重要的组件,它为海量数据的并行处理提供了分布式计算框架。本文将深入探讨如何使用...通过深入学习和实践,开发者可以利用Hadoop MapReduce解决大数据处理中的各种问题。
在这个"大数据Hadoop MapReduce词频统计"的场景中,我们利用MapReduce来统计文本中的词汇出现频率。这是数据分析中一个常见的任务,有助于理解文本内容的概貌。Map阶段的任务是对输入的文本进行分词,并形成<单词, 1...
### Hadoop MapReduce作业卡死问题的解决方法 #### 一、问题背景 在使用Hadoop MapReduce进行大规模数据处理的过程中,遇到了一个棘手的问题——部分MapReduce作业长时间卡死,严重影响了系统的运行效率和资源利用...
《Hadoop MapReduce Cookbook 源码》是一本专注于实战的书籍,旨在帮助读者通过具体的例子深入理解并掌握Hadoop MapReduce技术。MapReduce是大数据处理领域中的核心组件,尤其在处理大规模分布式数据集时,它的重要...
《Hadoop MapReduce实战手册》是一本专注于大数据处理技术的专著,主要针对Apache Hadoop中的MapReduce框架进行了深入的探讨。MapReduce是Hadoop生态系统中的核心组件之一,用于处理和生成大规模数据集。该书旨在...
本书通过一系列实用案例展示了如何利用Hadoop MapReduce V2解决实际问题。例如: - **日志分析**:通过MapReduce对大量日志数据进行分析,提取有价值的信息。 - **推荐系统构建**:使用MapReduce进行数据预处理和...
然而,需要注意的是,由于MapReduce的通信开销,对于某些特定数据结构和算法,可能有更优化的分布式解决方案,如Spark的FP-Growth等。 总结起来,"基于Apriori算法的频繁项集Hadoop mapreduce"是一个利用大数据处理...
结论: 本章介绍了 Hadoop MapReduce,同时发现它有以下缺点: ...2、有运行效率问题,MapReduce 需要将中间产生的数据保存到硬盘中,因此会有读写数据延迟问题。 3、不支持实时处理,它原始的设计就是以批处理为主。
一个自己写的Hadoop MapReduce实例源码,网上看到不少网友在学习MapReduce编程,但是除了wordcount范例外实例比较少,故上传自己的一个。包含完整实例源码,编译配置文件,测试数据,可执行jar文件,执行脚本及操作...
Hadoop MapReduce 是 Hadoop 生态系统中的一部分,它是一种可靠的、可扩展的并行处理框架,用于处理大规模数据集。MapReduce 是一种编程模型,它将计算任务分解为两个阶段:Map 阶段和 Reduce 阶段。 Map 阶段的...
Hadoop MapReduce v2 Cookbook (第二版), Packt Publishing
通过熟练掌握这些调试技巧,开发者可以更有效地定位和解决问题,从而优化 Hadoop MapReduce 应用程序的性能和效率。在实际操作中,不断实践和理解 Hadoop 生态系统将使你能够更好地驾驭这个强大的大数据处理工具。
在实践中,我们可以使用 MapReduce 来解决各种大数据处理问题。以下是一些 MapReduce 项目实践: * WordCount 程序编写及代码分析 * 新建一个 MapReduce 工程 * 修改源程序 * 上传处理数据 * 运行以及结果分析 * ...
在大数据处理领域,Hadoop MapReduce 是一种广泛使用的分布式计算框架,它允许高效地处理海量数据。...如果你正在处理大量数据并需要寻找数据的内在结构,Hadoop MapReduce 结合 KMeans 算法是一个值得考虑的解决方案。
YARN的引入则将资源管理和作业调度从MapReduce中分离出来,提高了系统的灵活性和效率。 Hadoop MapReduce v2的主要改进包括: 1. **YARN架构**:YARN将JobTracker的功能拆分为ResourceManager(RM)和...
本教程将详细讲解如何使用Java编程语言操作Hadoop的MapReduce来计算整数序列中的最大值和最小值,这对于数据分析和处理任务来说是非常基础且实用的技能。 首先,我们需要理解MapReduce的工作原理。MapReduce是一种...
【Hadoop MapReduce教程】 Hadoop MapReduce是一种分布式计算框架,设计用于处理和存储大量数据。这个框架使得开发者能够编写应用程序来处理PB级别的数据,即使是在由数千台廉价硬件组成的集群上。MapReduce的核心...