从命令提示符

时间:2016-08-30 10:20:39

标签: hadoop mapreduce hbase hadoop2

我正在运行示例映射reduce job,它将.csv文件作为hdfs的输入并通过java map程序插入到hbase中。我尝试使用以下选项来避免java堆错误。

configuration.set("mapreduce.map.java.opts", "-Xmx5g"); 
configuration.set("mapreduce.map.memory.mb", "-1");

但是我在运行map reduce program时遇到了Java Heap问题。

  

2016-08-30 12:47:26,764 INFO [main] org.apache.hadoop.conf.Configuration.deprecation:不推荐使用mapred.skip.on。相反,请使用mapreduce.job.skiprecords   2016-08-30 12:50:57,663 FATAL [main] org.apache.hadoop.mapred.YarnChild:运行child时出错:java.lang.OutOfMemoryError:Java堆空间       在com.google.protobuf.ByteString.copyFrom(ByteString.java:194)       在com.google.protobuf.CodedInputStream.readBytes(CodedInputStream.java:324)       at org.apache.hadoop.hbase.protobuf.generated.ClientProtos $ MutationProto $ ColumnValue $ QualifierValue。(ClientProtos.java:9144)       at org.apache.hadoop.hbase.protobuf.generated.ClientProtos $ MutationProto $ ColumnValue $ QualifierValue。(ClientProtos.java:9089)       at org.apache.hadoop.hbase.protobuf.generated.ClientProtos $ MutationProto $ ColumnValue $ QualifierValue $ 1.parsePartialFrom(ClientProtos.java:9198)       at org.apache.hadoop.hbase.protobuf.generated.ClientProtos $ MutationProto $ ColumnValue $ QualifierValue $ 1.parsePartialFrom(ClientProtos.java:9193)

Driver program configuration as below :
Job job = new Job(configuration);       
job.setJarByClass(HbaseTest.class);     
job.setJobName("Data loading to HBase Table::"+TABLE_NAME);     
job.setInputFormatClass(TextInputFormat.class);     
job.setMapOutputKeyClass(ImmutableBytesWritable.class);     
job.setMapperClass(HbaseTestMapper.class);      
job.setNumReduceTasks(0);
FileInputFormat.addInputPaths(job, args[0]);        
FileSystem.getLocal(getConf()).delete(new Path(outputPath), true);      
FileOutputFormat.setOutputPath(job, new Path(outputPath));      
job.setMapOutputValueClass(Put.class);

我使用hadoop 2.x和三个节点集群,每个节点有32GB。我的输入文件大小是831MB。请帮助我解决问题和解决方法。

1 个答案:

答案 0 :(得分:0)

您可以增加配置,如

configuration.set("mapreduce.child.java.opts", "-Xmx6553m");
configuration.set("mapreduce.map.memory.mb", "8192");