gpt4 book ai didi

oracle - sqoop 命令中映射器数量的增加会导致 java 堆空间错误

转载 作者:行者123 更新时间:2023-12-02 21:37:36 25 4
gpt4 key购买 nike

我正在使用 sqoop 1.4.5-cdh5.2.1 和 oracle 。

我正在从 oracle 导入一小组 115k 的记录。
Sqoop 命令在将 --num-mappers 设置为 5 时工作正常。
但是当我将它设置为超过 5 时,我收到 JAVA HEAP SPACE 的错误。

任何人都可以告诉这一点,这就是为什么会这样。

日志
线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间
在 java.math.BigInteger.(BigInteger.java:394)
在 java.math.BigDecimal.bigTenToThe(BigDecimal.java:3380)
在 java.math.BigDecimal.bigDigitLength(BigDecimal.java:3635)
在 java.math.BigDecimal.precision(BigDecimal.java:2189)
在 java.math.BigDecimal.compareMagnitude(BigDecimal.java:2585)
在 java.math.BigDecimal.compareTo(BigDecimal.java:2566)
在 org.apache.sqoop.mapreduce.db.BigDecimalSplitter.split(BigDecimalSplitter.java:138)
在 org.apache.sqoop.mapreduce.db.BigDecimalSplitter.split(BigDecimalSplitter.java:69)
在 org.apache.sqoop.mapreduce.db.DataDrivenDBInputFormat.getSplits(DataDrivenDBInputFormat.java:171)
在 org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:498)
在 org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:515)
在 org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:399)
在 org.apache.hadoop.mapreduce.Job$10.run(Job.java:1295)
在 org.apache.hadoop.mapreduce.Job$10.run(Job.java:1292)
在 java.security.AccessController.doPrivileged( native 方法)
在 javax.security.auth.Subject.doAs(Subject.java:415)
在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
在 org.apache.hadoop.mapreduce.Job.submit(Job.java:1292)
在 org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1313)
在 org.apache.sqoop.mapreduce.ImportJobBase.doSubmitJob(ImportJobBase.java:198)
在 org.apache.sqoop.mapreduce.ImportJobBase.runJob(ImportJobBase.java:171)
在 org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:268)
在 org.apache.sqoop.manager.SqlManager.importQuery(SqlManager.java:721)
在 org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:499)
在 org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605)
在 org.apache.sqoop.Sqoop.run(Sqoop.java:143)
在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
在 org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
在 org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
在 org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
在 org.apache.sqoop.Sqoop.main(Sqoop.java:236)
2015-06-25 13:48:59 状态:1
2015-06-25 13:48:59 ERROR 错误 (1) Sqoop 失败。
2015-06-25 13:48:59 ERROR 错误 (1) run_sqoop

最佳答案

默认情况下,每个 map 和 reduce 任务都在自己的 JVM 中运行。因此,每个映射器都会消耗一定数量的物理内存。随着映射器数量的不断增加,内存需求也将不断增长。如果 java 进程无法分配足够的内存,它会抛出 java.lang.OutOfMemoryError在您的情况下,系统(或虚拟机,如果您正在运行虚拟机)可能有足够的内存,最多只能容纳 5 个映射器。
您可以运行 top命令同时启动 >5 个映射器并监视可用内存。

关于oracle - sqoop 命令中映射器数量的增加会导致 java 堆空间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31070589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com