gpt4 book ai didi

Hadoop conf确定num map任务

转载 作者:可可西里 更新时间:2023-11-01 15:39:55 27 4
gpt4 key购买 nike

我有一份工作,就像我所有的 Hadoop 工作一样,从我在 Hadoop 界面中看到的运行时,它似乎总共有 2 个 map task 。但是,这意味着它加载了太多数据,以至于我收到 Java 堆空间错误。

我已经尝试在我的 Hadoop 集群中设置许多不同的 conf 属性来将作业拆分为更多任务,但似乎没有任何效果。

我试过设置mapreduce.input.fileinputformat.split.maxsizemapred.max.split.sizedfs.block.size 但似乎没有任何效果。

我正在使用 0.20.2-cdh3u6,并尝试使用 cascading.jdbc 运行作业 - 该作业无法从数据库读取数据。我认为这个问题可以通过增加拆分次数来解决,但不知道该怎么做!

求助!快疯了!

2013-07-23 09:12:15,747 FATAL org.apache.hadoop.mapred.Child: Error running child : java.lang.OutOfMemoryError: Java heap space
at com.mysql.jdbc.Buffer.<init>(Buffer.java:59)
at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1477)
at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2936)
at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:477)
at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2631)
at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1800)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2221)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2618)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1557)
at cascading.jdbc.db.DBInputFormat$DBRecordReader.<init>(DBInputFormat.java:97)
at cascading.jdbc.db.DBInputFormat.getRecordReader(DBInputFormat.java:376)
at cascading.tap.hadoop.MultiInputFormat$1.operate(MultiInputFormat.java:282)
at cascading.tap.hadoop.MultiInputFormat$1.operate(MultiInputFormat.java:277)
at cascading.util.Util.retry(Util.java:624)
at cascading.tap.hadoop.MultiInputFormat.getRecordReader(MultiInputFormat.java:276)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:370)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:324)
at org.apache.hadoop.mapred.Child$4.run(Child.java:266)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1278)
at org.apache.hadoop.mapred.Child.main(Child.java:260)

最佳答案

你应该看看内存管理的设置,比如 io.sort.mbmapred.cluster.map.memory.mb 因为堆空间错误通常是由于一个分配问题而不是映射号。

如果你想强制你的 map 编号,你必须考虑到一些值先于其他值使用。例如,如果 mapreduce.input.fileinputformat.split.maxsize 很小,即使您将 mapred.tasktracker.map.tasks.maximum 设置得很小,也会产生大量任务值(value)。

只有当 dfs.block.size 大于 mapreduce.input.fileinputformat.split.maxsize

时,它才会影响生成的 map 数量

关于Hadoop conf确定num map任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17810368/

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