私のすべての Hadoop ジョブと同様に、Hadoop インターフェイスで表示されるものから実行すると、合計 2 つのマップ タスクがあるように見えます。ただし、これは大量のデータをロードしているため、Java Heap Space エラーが発生することを意味します。
ジョブをより多くのタスクに分割するために、Hadoop クラスターでさまざまな conf プロパティを設定しようとしましたが、何も効果がないようです。
mapreduce.input.fileinputformat.split.maxsize
、を設定してみましたがmapred.max.split.size
、dfs.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)