Tag: mapreduce

MapReduce(二级)排序/过滤 – 如何?

我有一个聊天室webapp的不同“区域”的时间戳值(并发用户)的日志文件,格式为“Timestamp; Zone; Value”。 对于每个区域,每天每分钟存在一个值。 对于每个区域,我想列出每天的最大值,按此最大值排序desc 所以,一个输入文件 #timestamp; zone; value 2011-01-01 00:00:00; 1; 10 2011-01-01 00:00:00; 2; 22 2011-01-01 00:01:00; 1; 11 2011-01-01 00:01:00; 2; 21 2011-01-02 00:00:00; 1; 12 2011-01-02 00:00:00; 2; 20 应该为1区生产: 2011-01-02 12 2011-01-01 11 对于2区: 2011-01-01 22 2011-01-02 20 我该如何处理? 恕我直言,我需要一个以上的M / R步骤。 到目前为止我实施的是: 收集文本键“YYYY-MM-DD / Zone”和IntWritable值“value”的映射器,以及 减速器,用于标识每个键的最大值(即每个区域每天)。 这导致文件像 2011-01-01/1 11 […]

纱线MapReduce作业问题 – Hadoop 2.3.0中的AM容器启动错误

我已经设置了Hadoop 2.3.0的2节点集群。 它工作正常,我可以成功运行distributedshell-2.2.0.jar示例。 但是当我尝试运行任何mapreduce作业时,我都会收到错误。 我根据( http://www.alexjf.net/blog/distributed-systems/hadoop-yarn-installation-definitive-guide )设置了MapRed.xml和其他用于运行MapReduce作业的配置,但是我收到以下错误: 14/03/22 20:31:17 INFO mapreduce.Job: Job job_1395502230567_0001 failed with state FAILED due to: Application application_1395502230567_0001 failed 2 times due to AM Container for appattempt_1395502230567_0001_000002 exited with exitCode: 1 due to: Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException: org.apache.hadoop.util.Shell$ExitCodeException: at org.apache.hadoop.util.Shell.runCommand(Shell.java:505) at org.apache.hadoop.util.Shell.run(Shell.java:418) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650) at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:195) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:283) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:79) at java.util.concurrent.FutureTask.run(FutureTask.java:262) […]

Hadoop:java.lang.ClassCastException:org.apache.hadoop.io.LongWritable无法强制转换为org.apache.hadoop.io.Text

我的程序看起来像 public class TopKRecord extends Configured implements Tool { public static class MapClass extends Mapper { public void map(Text key, Text value, Context context) throws IOException, InterruptedException { // your map code goes here String[] fields = value.toString().split(“,”); String year = fields[1]; String claims = fields[8]; if (claims.length() > 0 && (!claims.startsWith(“\””))) { context.write(new Text(year.toString()), […]

Hadoop – 直接从Mapper写入HBase

我有一个haddop作业,它的输出应写入HBase。 我真的不需要reducer,我想插入的那种行在Mapper中确定。 我如何使用TableOutputFormat来实现这一目标? 从我看到的所有示例中,我们假设reducer是创建Put的那个,而TableMapper只是用于从HBase表中读取。 在我的情况下,输入是HDFS,输出是Put到特定的表,我在TableMapReduceUtil中找不到任何可以帮助我的东西。 有什么例子可以帮助我吗? 顺便说一下,我正在使用新的Hadoop API

无法报告状态600秒。 杀! 报告hadoop的进展情况

我收到以下错误: Task attempt_201304161625_0028_m_000000_0 failed to report status for 600 seconds. Killing! 我的地图工作。 这个问题类似于这个 , 这个和这个 。 但是, 我不希望在hadoop杀死不报告进度的任务之前增加默认时间 ,即 Configuration conf=new Configuration(); long milliSeconds = 1000*60*60; conf.setLong(“mapred.task.timeout”, milliSeconds); 相反,我想使用context.progress() , context.setStatus(“Some Message”)或context.getCounter(SOME_ENUM.PROGRESS).increment(1)或类似的东西定期报告进度。 然而,这仍然导致工作被杀死。 以下是我尝试报告进度的代码片段。 映射器: protected void map(Key key, Value value, Context context) throws IOException, InterruptedException { //do some things Optimiser optimiser = new Optimiser(); […]

如何在mapper(Hadoop)中使用MATLAB代码?

我有一个处理图像的matlab代码。 我想创建一个使用该代码的Hadoop映射器。 我遇到了以下解决方案,但不确定哪一个是最好的(因为很难在hadoop中为每个从节点安装matlab编译器运行时): 手动将该matlab代码转换为C ++中的OpenCV,并从映射器调用其exe / dll(并提供适当的参数)。 不确定,因为群集在每个节点而不是Windows上安装了Linux。 使用Hadoop Streaming。 但是Hadoop流需要一个可执行文件作为映射器,而matlab的可执行文件也需要Matlab Compiler Runtime,这很难在每个从属节点上安装。 将其自动转换为C / C ++代码并自动创建其exe(不确定这是否正确,因为exe将要求运行matlab运行时,或者转换中可能存在很难修复的编译器问题) 使用Matlab Java Builder。 但是这样创建的jar文件也需要运行时。 有什么建议么? 提前致谢。

调用工作的差异

从main()和ToolRunner.run()调用mapreduce作业有什么区别? 当我们说主类说, MapReduce extends Configured implements Tool ,如果我们只是从main方法中完成一个简单的作业运行,那么我们得到的额外特权是什么呢? 谢谢。

在Hadoop中使用NullWritable的优点

与使用null文本(即new Text(null) )相比,将NullWritable用于null键/值有什么好处。 我从“Hadoop:The Definitive Guide”一书中看到以下内容。 NullWritable是一种特殊类型的Writable ,因为它具有零长度序列化。 没有字节写入或读取流。 它用作占位符; 例如,在MapReduce中,当您不需要使用该位置时,可以将键或值声明为NullWritable – 它有效地存储常量空值。 当您想要存储值列表而不是键值对时,NullWritable也可以用作SequenceFile中的键。 它是一个不可变的单例:可以通过调用NullWritable.get()来检索实例 我不清楚如何使用NullWritable写出输出? 在开始输出文件中是否会有一个常量值,表明此文件的键或值为null ,以便MapReduce框架可以忽略读取null键/值(以null为准)? 另外,实际上如何序列化null文本? 谢谢, Venkat

Java MapReduce按日期计算

我是Hadoop的新手,我正在尝试做一个MapReduce程序,按日期计算最大前两个出版物(按月分组)。 所以我的意见是这样的: 2017-06-01 , A, B, A, C, B, E, F 2017-06-02 , Q, B, Q, F, K, E, F 2017-06-03 , A, B, A, R, T, E, E 2017-07-01 , A, B, A, C, B, E, F 2017-07-05 , A, B, A, G, B, G, G 所以,我正在考虑这个MapReducer程序的结果,如: 2017-06, A:4, E:4 2017-07, A:4, B:4 public […]

相当于mongo的出局:减少hadoop中的选项

我正在重写MongoDB map reduce作业以改为使用Hadoop(使用mongo-hadoop连接器),但是当我将两个数据集映射到同一个集合时,它会覆盖值而不是使用它们 {reduce:“collectionName”} – 如果对于结果集和旧集合中的给定键存在文档,则将对这两个值执行reduce操作(使用指定的reduce函数),结果将写入输出集合。 如果提供了finalize函数,那么也将在reduce之后运行。 如何使用mongo-hadoop?