Tag: hadoop

由于任务尝试无法报告状态600秒,因此减少失败。 杀! 解?

作业的减少阶段失败: 失败的Reduce任务超出了允许的限制。 每个任务失败的原因是: 任务尝试_201301251556_1637_r_000005_0无法报告状态600秒。 杀! 问题详情: Map阶段接收每个记录的格式:time,rid,data。 数据格式为:data元素及其计数。 例如:a,1b,4c,7对应于记录的数据。 映射器为每个数据元素输出每个记录的数据。 例如: key:(time,a,),val:(rid,data)key:(time,b,),val:(rid,data)key:(time,c,),val:(rid,data) 每个reduce从所有记录中接收与相同密钥对应的所有数据。 例如:key:(time,a),val:(rid1,data)和key:(time,a),val:(rid2,data)到达同一个reduce实例。 它在这里进行一些处理并输出类似的rids。 对于像10MB这样的小型数据集,我的程序运行没有问题。 但是,当数据增加到1G时失败,出于上述原因。 我不知道为什么会这样。 请帮忙! 减少代码: 下面有两个类: VCLReduce0Split CoreSplit 一个。 VCLReduce0SPlit public class VCLReduce0Split extends MapReduceBase implements Reducer{ // @SuppressWarnings(“unchecked”) public void reduce (Text key, Iterator values, OutputCollector output, Reporter reporter) throws IOException { String key_str = key.toString(); StringTokenizer stk = […]

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 […]

如何在Hadoop中将String对象转换为IntWritable对象

我想在Hadoop IntWritable String对象转换为IntWritable对象。 任何流程都可用于转换。 谢谢

纱线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) […]

HDFS目录中的文件计数

在Java代码中,我想连接到HDFS中的目录,了解该目录中的文件数量,获取它们的名称并想要读取它们。 我已经可以读取文件,但我无法弄清楚如何计算目录中的文件并获取像普通目录这样的文件名。 为了阅读我使用DFSClient并将文件打开到InputStream中。

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是否适合运行我的模拟?

已经在Java中编写了一个随机模拟,它从磁盘上的几个CSV文件加载数据(总计大约100MB)并将结果写入另一个输出文件(不是很多数据,只是一个布尔值和几个数字)。 还有一个参数文件,对于不同的参数,预计模拟输出的分布会发生变化。 要确定正确/最佳输入参数,我需要在多个输入参数配置中运行多个模拟,并查看每个组中输出的分布。 每个模拟需要0.1-10分钟,具体取决于参数和随机性。 我一直在阅读有关Hadoop的内容,并想知道它是否可以帮助我运行大量的模拟; 在不久的将来,我可以访问大约8台联网桌面计算机。 如果我理解正确,map函数可以运行我的模拟并吐出结果,reducer可能是标识。 我担心的是HDFS,它似乎意味着巨大的文件,而不是一些小的CSV文件(没有一个足够大,甚至可以构成64MB的最小建议块大小)。 此外,每个模拟只需要每个CSV文件的相同副本。 Hadoop对我来说是错误的工具吗?

从Java写入HDFS,“只能复制到0个节点而不是minReplication”

我已经下载并启动了Cloudera的Hadoop Demo VM for CDH4(运行Hadoop 2.0.0)。 我正在尝试编写一个Java程序,它将从我的Windows 7机器运行(与运行VM的机器/操作系统相同)。 我有一个示例程序,如: public static void main(String[] args) { try{ Configuration conf = new Configuration(); conf.addResource(“config.xml”); FileSystem fs = FileSystem.get(conf); FSDataOutputStream fdos=fs.create(new Path(“/testing/file01.txt”), true); fdos.writeBytes(“Test text for the txt file”); fdos.flush(); fdos.close(); fs.close(); }catch(Exception e){ e.printStackTrace(); } } 我的config.xml文件只有on属性定义:fs.default.name = hdfs:// CDH4_IP:8020。 当我运行它时,我得到以下exception: org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /testing/file01.txt could only be […]

Hadoop – 直接从Mapper写入HBase

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

将文件从HDFS复制到本地计算机

我在尝试从HDFS文件系统“下载”文件到我的本地系统时遇到问题。 (即使相反的操作没有问题)。 *注意:文件存在于指定路径上的HDFS文件系统上 这是一段代码: Configuration conf = new Configuration(); conf.set(“fs.defaultFS”, “${NAMENODE_URI}”); FileSystem hdfsFileSystem = FileSystem.get(conf); String result = “”; Path local = new Path(“${SOME_LOCAL_PATH}”); Path hdfs = new Path(“${SOME_HDFS_PATH}”); String fileName = hdfs.getName(); if (hdfsFileSystem.exists(hdfs)) { hdfsFileSystem.copyToLocalFile(hdfs, local); result = “File ” + fileName + ” copied to local machine on location: ” + localPath; […]