Tag: mapreduce

Hadoop选项没有任何效果(mapreduce.input.lineinputformat.linespermap,mapred.max.map.failures.percent)

我正在尝试实现一个MapReduce作业,其中每个映射器将占用150行文本文件,并且所有映射器将同步运行; 此外,无论有多少地图任务失败,它都不会失败。 这是配置部分: JobConf conf = new JobConf(Main.class); conf.setJobName(“My mapreduce”); conf.set(“mapreduce.input.lineinputformat.linespermap”, “150”); conf.set(“mapred.max.map.failures.percent”,”100″); conf.setInputFormat(NLineInputFormat.class); FileInputFormat.addInputPath(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); 问题是hadoop为每一行文本创建了一个映射器,它们似乎按顺序运行,如果单个文件失败,则作业失败。 据我推断,我所应用的设置没有任何效果。 我做错了什么?

Spark on yarn jar上传问题

我正在尝试使用spark over yarn运行一个简单的Map / Reduce java程序(CentOS上的Cloudera Hadoop 5.2)。 我试过这2种不同的方式。 第一种方式如下: YARN_CONF_DIR=/usr/lib/hadoop-yarn/etc/hadoop/; /var/tmp/spark/spark-1.4.0-bin-hadoop2.4/bin/spark-submit –class MRContainer –master yarn-cluster –jars /var/tmp/spark/spark-1.4.0-bin-hadoop2.4/lib/spark-assembly-1.4.0-hadoop2.4.0.jar simplemr.jar 此方法给出以下错误: 诊断:应用程序application_1434177111261_0007失败2次,因为AM容器的appattempt_1434177111261_0007_000002退出,退出时使用exitCode:-1000,原因是:资源hdfs:// kc1ltcld29:9000 / user / myuser / .sparkStaging / application_1434177111261_0007 / spark-assembly-1.4.0-hadoop2。在src文件系统上更改了4.0.jar(预计1434549639128,是1434549642191 然后我试着没有–jars: YARN_CONF_DIR=/usr/lib/hadoop-yarn/etc/hadoop/; /var/tmp/spark/spark-1.4.0-bin-hadoop2.4/bin/spark-submit –class MRContainer –master yarn-cluster simplemr.jar 诊断:应用程序application_1434177111261_0008由于AM容器导致appattempt_1434177111261_0008_000002退出,失败了2次,因为:文件不存在:hdfs:// kc1ltcld29:9000 / user / myuser / .sparkStaging / application_1434177111261_0008 / spark-assembly-1.4。 0-hadoop2.4.0.jar。试图这个尝试..申请失败。 ApplicationMaster主机:N / […]

使用map-reduce构建分布式KD树

我正在尝试使用map-reduce构建分布式KD树。 分布式KD树的描述可以在这里找到Dkd-Tree 我有一个维度为20的图像的特征向量。我必须根据上面的链接构建分布式kd树,也看看这个图像Kdtree 我有数百万张图片。 那么我可以使用什么方法来构建树的顶部(图像的第二部分)? 我对各个节点之间的图像分布感到困惑。 如果树在第一次map-reduce操作中构建了HDFS,那么如何在下一次map-reduce操作中访问它?

Map-Reduce中的二级排序

我理解了在键进入reducer之前对特定键的值进行排序的方法。 我了解到可以通过编写三种方法来完成,即keycomparator,partitioner和valuegrouping。 现在,当值分组运行时,它基本上将与自然键关联的所有值组合在一起,对吗? 因此,当它对自然键的所有值进行分组时,与一组排序值一起发送到reducer的实际键是什么? 自然密钥将与多种类型的实体(复合密钥的第二部分)相关联。 发送到减速机的复合键是什么? 美联社

CDH5.2:MR,无法初始化任何输出收集器

Cloudera CDH5.2快速启动VM Cloudera Manager显示所有节点state = GREEN 我在Eclipse上做了一个MR工作,包括Build Path中的所有相关cloudera jar:avro-1.7.6-cdh5.2.0.jar,avro-mapred-1.7.6-cdh5.2.0-hadoop2.jar,hadoop-common -2.5.0-cdh5.2.0.jar,hadoop-mapreduce-client-core-2.5.0-cdh5.2.0.jar 我做了以下工作 hadoop jar jproject1.jar avro00.AvroUserPrefCount -libjars ${LIBJARS} avro/00/in avro/00/out 我得到以下错误,是Java堆问题,任何评论? 先感谢您 14/11/14 01:02:40 INFO client.RMProxy: Connecting to ResourceManager at quickstart.cloudera/127.0.0.1:8032 14/11/14 01:02:43 INFO input.FileInputFormat: Total input paths to process : 1 14/11/14 01:02:43 INFO mapreduce.JobSubmitter: number of splits:1 14/11/14 01:02:44 INFO mapreduce.JobSubmitter: Submitting tokens for […]

在Hadoop中传播自定义配置值

在Map / Reduce期间,有没有办法设置和(稍后)在Hadoop中获取自定义配置对象? 例如,假设一个应用程序预处理一个大文件并动态确定与该文件相关的一些特征。 此外,假设这些特征保存在自定义Java对象中(例如, Properties对象,但不是唯一的,因为一些可能不是字符串),并且随后对于每个映射和减少作业都是必需的。 应用程序如何“传播”此配置,以便每个映射器和reducerfunction可以在需要时访问它? 一种方法可能是使用JobConf类的set(String, String)方法,例如,通过第二个参数传递序列化为JSON字符串的配置对象,但这可能是太多的黑客然后适当无论如何,每个Mapper和Reducer都必须访问JobConf实例(例如,遵循前面问题中建议的方法)。

Hadoop MapReduce – 每个输入的一个输出文件

我是Hadoop的新手,我正在试图弄清楚它是如何工作的。 至于练习,我应该实现类似于WordCount-Example的东西。 任务是读入几个文件,执行WordCount并为每个输入文件写一个输出文件。 Hadoop使用组合器并将map-part的输出作为reducer的输入进行混洗,然后写入一个输出文件(我想每个正在运行的实例)。 我想知道是否可以为每个输入文件写一个输出文件(所以保留inputfile1的单词并将结果写入outputfile1,依此类推)。 是否有可能覆盖Combiner-Class或是否有另一种解决方案(我不确定这是否应该在Hadoop-Task中解决,但这是练习)。 谢谢…

将外部jar设置为hadoop classpath

我试图将外部jar子设置为hadoop classpath但到目前为止没有运气。 我有以下设置 $ hadoop版本 Hadoop 2.0.6-alpha Subversion https://git-wip-us.apache.org/repos/asf/bigtop.git -r ca4c88898f95aaab3fd85b5e9c194ffd647c2109由jenkins在2013-10-31T07编译:55Z来自校验和的源95e88b2a9589fa69d6d5c1dbd48d4e这个命令是使用/usr/lib/hadoop/hadoop-common-2.0.6-alpha.jar运行 类路径 $ echo $ HADOOP_CLASSPATH /home/tom/workspace/libs/opencsv-2.3.jar 我能看到上面的HADOOP_CLASSPATH已经被hadoop接收了 $ hadoop classpath / etc / hadoop / conf:/ usr / lib / hadoop / lib / :/ usr / lib / hadoop /.//:/home/tom/workspace/libs/opencsv-2.3.jar:/ usr / lib / hadoop- hdfs /./:/ usr / lib / hadoop-hdfs / […]

记录MapReduce作业的标准做法

我正在尝试找到登录MapReduce作业的最佳方法。 我在我的其他Java应用程序中使用slf4j和log4j appender,但由于MapReduce作业在集群中以分布式方式运行,我不知道应该在哪里设置日志文件位置,因为它是一个访问受限的共享集群特权。 是否有任何标准做法用于登录MapReduce作业,因此您可以在作业完成后轻松查看群集中的日志?

使用ArrayWritable的序列化似乎以一种有趣的方式工作

我正在使用ArrayWritable ,在某些时候我需要检查Hadoop如何序列化ArrayWritable ,这是我通过设置job.setNumReduceTasks(0) : 0 IntArrayWritable@10f11b8 3 IntArrayWritable@544ec1 6 IntArrayWritable@fe748f 8 IntArrayWritable@1968e23 11 IntArrayWritable@14da8f4 14 IntArrayWritable@18f6235 这是我使用的测试映射器: public static class MyMapper extends Mapper { public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { int red = Integer.parseInt(value.toString()); IntWritable[] a = new IntWritable[100]; for (int i =0;i<a.length;i++){ a[i] = new IntWritable(red+i); } IntArrayWritable […]