草庐IT

hadoop - reducer 和 mapper 可以在同一个数据节点上吗?

我已经开始阅读有关大数据和Hadoop的内容,所以这个问题对您来说可能听起来很愚蠢。这就是我所知道的。每个映射器处理少量数据并产生中间输出。在此之后,我们有洗牌和排序的步骤。现在,Shuffle=将中间输出移至各自的Reducer,每个Reducer都处理一个或多个特定的键。那么,一个数据节点是否可以在其中运行Mapper和Reducer代码,或者我们为每个节点设置不同的DN? 最佳答案 术语:数据节点用于HDFS(存储)。Mappers和Reducers(计算)在具有TaskTracker守护进程的节点上运行。每个tasktrac

multithreading - Hadoop的Mapper对象是跨线程共享的吗?

我想知道是否可以添加一个可以跨多个map()调用使用的成员对象。例如,一个StringBuilder:privateStringBuilderbuilder;publicvoidmap(...){...builder.setLength(0);builder.append(a);builder.append(b);builder.append(c);d=builder.toString();...}显然,如果mapper对象在多个线程之间共享,由于来自多个线程的并发访问,上述构建器对象的行为将不会像预期的那样。所以我的问题是:是否确保hadoop中的每个线程都会为自己使用一个专用的映射

hadoop - 在 Mapper 或 Reducer 中处理异常的 Hadoop 最佳实践是什么?

想要了解在Mapper/Reducer中处理异常的最佳实践。选项1:不进行任何try/catch,让任务失败,MR将重试最终终止作业的任务。属性ma​​preduce.map/reduce.maxattempts在这里发挥作用。选项2:使用计数器记录catchblock中的失败次数。并根据这些错误的某个阈值终止作业或仅使用计数器显示失败记录的数量。在map-reduce中处理异常的任何(其他)通用/标准做法? 最佳答案 列出的选项1和2是我们在项目中处理的一些方法。请看here.它列出了更多选项

hadoop - 是否可以在 Hadoop Mapreduce 中为单个作业打印 Mapper 和 reducer 输出

对于给定的MR作业,我需要生成两个输出文件。一个文件应该是Mapper的输出另一个文件应该是Reducer的输出(它只是上面Mapper的聚合)我能否将mapper和reducer输出都写在一个作业中?编辑:在作业1中(仅Mapper阶段)输出包含单行中的20个字段,必须将其写入hdfs(file1)。在Job2(Mappernreducer)中,Mapper从Job1的输出中获取输入,删除几个字段以使其成为标准格式(仅10个字段)并将其传递给写入file2的reducer。我需要hdfs中的file1和file2...现在我的疑问是,在Job1映射器中,我是否可以将数据作为file1

java - 为简单的 hadoop mapreduce 作业运行两个 mapper 和两个 reducer

我只是想更好地理解使用多个映射器和缩减器。我想使用一个简单的hadoopmapreduce字数统计作业来尝试这个。我想为这个字数统计作业运行两个映射器和两个缩减器。有吗我需要在配置文件上手动配置,还是仅对WordCount.java文件进行更改就足够了。我在单个节点上运行这个作业。我正在运行这个作业$hadoopjarjob.jarinputoutput我已经开始了$hadoopnamenode-format$hadoopnamenode$hadoopdatanodesbin$./yarn-daemon.sh启动资源管理器sbin$./yarn-daemon.sh启动资源管理器I'mr

java - Hadoop 中的 Mappers 和 Reducers 必须是静态类吗?

我试图在Hadoop中做一些简单的事情,发现在编写映射器和缩减器时,到处都被定义为静态的。我的任务将被分解成几个map零件和一个finalreduce.如果我想在其他工作中重用我的一个映射器怎么办?如果我将映射器类定义为内部static我可以在其他工作中使用它吗?此外,重要的问题可能需要更多和复杂的映射器,因此在维护时将它们全部放在一个巨大的文件中会变得很糟糕。有什么方法可以让映射器和缩减器作为常规类(甚至可能在单独的jar中)而不是作业本身? 最佳答案 您的问题是类必须是静态的,可以是静态的,还是可以是内部的,或者应该是内部的?H

Java Hadoop : How can I create mappers that take as input files and give an output which is the number of lines in each file?

我是Hadoop的新手,我已经设法运行了wordCount示例:http://hadoop.apache.org/common/docs/r0.18.2/mapred_tutorial.html假设我们有一个包含3个文件的文件夹。我希望每个文件都有一个映射器,这个映射器将只计算行数并将其返回给缩减器。然后,reducer会将每个映射器的行数作为输入,并将所有3个文件中存在的总行数作为输出。所以如果我们有以下3个文件input1.txtinput2.txtinput3.txt映射器返回:mapper1->[input1.txt,3]mapper2->[input2.txt,4]mappe

java - 如何访问 Reducer 中的 Mapper Counter 值?

我想访问reducer中的myCounter.my值:publicstaticclassMapextendsMapper{publicstaticenummyCounter{my};@Overridepublicvoidmap(LongWritablekey,Textvalue,Contextcontext){context.getCounter(myCounter.my).increment(1);context.write(newImmutableBytesWritable(),newImmutableBytesWritable());}}publicstaticclassRedu

hadoop - 如何直接将 mapper-reducer 的输出发送到另一个 mapper-reducer 而无需将输出保存到 hdfs

问题最终得到解决在底部查看我的解决方案最近我正在尝试运行MahoutinAction的第6章(list6.1~6.4)中的推荐系统示例。但是我遇到了一个问题,我已经用谷歌搜索了但找不到解决方案。问题来了:我有一对mapper-reducerpublicfinalclassWikipediaToItemPrefsMapperextendsMapper{privatestaticfinalPatternNUMBERS=Pattern.compile("(\\d+)");@Overrideprotectedvoidmap(LongWritablekey,Textvalue,Contextco

java - 为什么将 Mapper 和 Reducer 类声明为静态的?

这可能表明我缺乏对Java的理解,但我想知道为什么在大多数MapReduce程序中映射器和缩减器类被声明为静态的? 最佳答案 当将mapper和reducer类声明为另一个类的内部类时,必须将它们声明为静态的,以便它们不依赖于父类。Hadoop使用反射为每个运行的map或reduce任务创建类的实例。创建的新实例需要一个零参数构造函数(否则它怎么知道要传递什么)。通过在不使用static关键字的情况下声明内部映射器或reduce类,java编译实际上创建了一个构造函数,该构造函数期望在构造时传入父类的实例。您应该能够通过对生成的类文