Tag: mapreduce

执行mapreduce程序时ClassNotFoundException

我试图在eclipse中执行word count程序。 但在执行程序时,我收到以下错误 log4j:ERROR Could not instantiate class [org.apache.hadoop.log.metrics.EventCounter]. java.lang.ClassNotFoundException: org.apache.hadoop.log.metrics.EventCounter at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:190) at org.apache.log4j.helpers.Loader.loadClass(Loader.java:198) at org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter.java:327) at org.apache.log4j.helpers.OptionConverter.instantiateByKey(OptionConverter.java:124) at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:785) at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768) at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648) at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514) at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580) at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526) at org.apache.log4j.LogManager.(LogManager.java:127) at org.apache.log4j.Logger.getLogger(Logger.java:104) at org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:289) […]

即使在命令行上告知-D mapred.reduce.tasks = 0之后,hadoop也会减少任务运行

我有一个MapReduce程序 public static class MapClass extends MapReduceBase implements Mapper { private final static IntWritable uno = new IntWritable(1); private IntWritable citationCount = new IntWritable(); public void map(Text key, Text value, OutputCollector output, Reporter reporter) throws IOException { citationCount.set(Integer.parseInt(value.toString())); output.collect(citationCount, uno); } } public static class Reduce extends MapReduceBase implements Reducer { public void reduce(IntWritable key, […]

使用MongoDB的MapReduce Java驱动程序错误的BSONElement断言类型错误

我是MongoDB和MapReduce的新手。 我需要在我的数据库中的集合上做一些MapReduce。 MAP和REDUCE_MAX函数可以工作,因为我能够在Mongo交互式shell(v.1.8.2)中完成我的需求。 但是,使用Mongo Java驱动程序(v.2.6.3)尝试执行相同的操作时出错 我的MAP和REDUCE_MAX函数如下所示: String MAP = “function(){” + “if(this.type != \”checkin\”){return;}” + “if(!this.venue && !this.venue.id){return;}” + “emit({userId:this.userId, venueId:this.venue.id}, {count:1});” + “};”; String REDUCE_MAX = “function(key, values){” + “var res = {count:0};” + “values.forEach(function(value){result.count += value.count;});” + “return res;” + “};”; 这是我正在执行的命令: MapReduceOutput sum = collection .mapReduce(MAP, REDUCE_MAX, null, null); 这是我得到的错误: com.mongodb.CommandResult$CommandFailure: command […]

运行mapreduce程序时“Java堆空间内存不足错误”

我在运行mapreduce程序时遇到Out Of Memory错误。如果我将260个文件保存在一个文件夹中并将其作为输入提供给mapreduce程序,则显示Java Heap space Out of Memory错误。如果我只提供100个文件作为输入mapreduce,运行正常。那么如何限制mapreduce程序一次只能获取100个文件(~50MB)。 任何人都可以就此问题提出建议…… 没有文件:318,块数:1(块大小:128MB),Hadoop在32位系统上运行 My StackTrace: ============== 15/05/05 11:52:47 INFO input.FileInputFormat: Total input paths to process : 318 15/05/05 11:52:47 INFO input.CombineFileInputFormat: DEBUG: Terminated node allocation with : CompletedNodes: 1, size left: 52027734 15/05/05 11:52:47 INFO mapreduce.JobSubmitter: number of splits:1 15/05/05 11:52:47 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local634564612_0001 […]

在Oozie中将参数从一个动作传递到另一个动作

我有一个以下shell脚本: DATE= date +”%d%b%y” -d “-1 days” 如何将DATE传递给Java操作?

Hadoop HDFS MapReduce输出到MongoDb

我想编写Java程序,它从HDFS读取输入,使用MapReduce处理它并将输出写入MongoDb。 这是场景: 我有一个Hadoop集群,它有3个数据节点。 java程序从HDFS读取输入,使用MapReduce处理它。 最后,将结果写入MongoDb。 实际上,从HDFS读取并使用MapReduce处理它很简单。 但我对将结果写入MongoDb感到困惑。 是否支持将Java API写入MongoDB? 另一个问题是,由于它是一个Hadoop集群,所以我们不知道哪个datanode将运行Reducer任务并生成结果,是否可以将结果写入安装在特定服务器上的MongoDb? 如果我想将结果写入HDFS,代码将如下所示: @Override public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException { long sum = 0; for (LongWritable value : values) { sum += value.get(); } context.write(new Text(key), new LongWritable(sum)); } 现在我想将结果写入MongoDb而不是HDFS,我该怎么做?

Pipeling hadoop map减少了工作量

我有五个map reduce我分别运行每个。 我想把它们一起管道。 因此,一份工作的输出转到下一份工作。 目前,我编写了shell脚本来执行它们。 有没有办法在java中写这个? 请举个例子。 谢谢

MapReduce查找字长频率

我是MapReduce的新手,我想问一下是否有人可以使用MapReduce给我一个执行字长的频率的想法。 我已经有了字数的代码但是我想使用字长,这是我到目前为止所拥有的。 public class WordCount { public static class Map extends Mapper { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); context.write(word, one); } […]

Hadoop中的CSV处理

我在csv文件中有6个字段: 首先是学生姓名( String ) 其他是学生的标记,如主题1,主题2等 我在java中编写mapreduce ,用逗号分割所有字段,并在键中发送学生姓名,并在地图值中标记。 在reduce我正在处理他们输出密钥中的学生姓名和theres标记加上减去的总值,平均值等。 我认为可能有一种替代的,更有效的方法来做到这一点。 有没有人知道更好的方法来做这些操作? 是否有任何内置function的hadoop可以按学生姓名分组,并且可以计算与该学生相关的总分和平均值?

输出文件包含Mapper输出而不是Reducer输出

嗨我试图在独立模式下使用map reduce技术找到少数数字的平均值。 我有两个输入文件。它包含值file1: 25 25 25 25 25和file2: 15 15 15 15 15 。 我的程序运行正常,但输出文件包含mapper的输出而不是reducer输出。 这是我的代码: import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.io.Writable; import java.io.*; public class Average { public static class SumCount implements Writable { public int […]