草庐IT

java - 在 Mapper 类中执行 Reducer 操作

在我的mapper类中,我逐行读取文件并在每行上执行一些字符串操作(即从字符串中删除特殊字符),然后在reducer中将每行存储在一个新文件中。基本上我的reducer只创建文件并将每一行写入新文件,所以我的映射器有可能创建文件而不是将数据传递给reducer。这意味着我不想要reducer并在映射器中执行它的操作。我对Mapreduce了解不多,所以任何类型的帮助都是可观的 最佳答案 是的,你想要的是很有可能的,你需要的是一个只有map的工作。即只有mapper而没有reducer的作业。实现它的方法是在驱动程序类中将reduce

hadoop - Mapper Combiner patitioner shuffle/sort 顺序

我在DefiniteGuide:Hadoopinpg206中有以下文字。在写入磁盘之前,线程首先将数据划分为对应的分区到他们最终将被发送到的reducer。在每个分区内,后台线程按键执行内存中排序,如果有组合器功能,它在排序的输出上运行。运行combiner函数可以得到更多紧凑的map输出,因此写入本地磁盘和传输到的数据较少reducer。那么有了这个理解,我可以排序为Mapper,partitioner,shuffle/sort,Combiner的顺序吗? 最佳答案 我写了一篇关于此的好文章:http://0x0fff.com/h

hadoop - mapper类在hadoop mapreduce程序中是强制性的吗

据我所知,如果驱动程序类中未提及映射器类,它将使用恒等映射器以及同样的reducer。但是,如果不编写任何映射器类,谁将调用hdfs输入数据并对其进行处理并发送到reducer。 最佳答案 Mapper类是必需的。正如您所说,如果您没有在驱动程序中指定Mapper类,那么将使用IdentityMapper。Butifnotwritinganymapperclass,whowillcallthehdfsinputdataandprocessitandsendtoreducer.因此,如果您不编写任何映射器类,IdentityMappe

hadoop - hadoop把mapper、partitioner、combiner的输出文件存放在哪里?

我在伪分布式hadoop设置上运行mapreduce作业。我在哪里可以找到映射器、分区器和组合器的输出文件?有没有办法检查每个操作的输出? 最佳答案 MapReduce中的中间输出存储在运行任务的节点上的本地临时存储中(而不是在HDFS中)。您可以在Hadoopconf中查找本地临时目录所在的位置,然后逐个节点地手动检查它们。一般来说,可能有更好的方法通过日志消息或计数器来完成您认为您想做的事情。您可以做的另一件事是关闭reducer,以便您的Mappers直接写入HDFS,以便您可以检查它。

java - 输出文件包含 Mapper Output 而不是 Reducer 输出

您好,我正在尝试在独立模式下使用mapreduce技术求几个数字的平均值。我有两个输入文件。它包含值file1:2525252525和file2:1515151515。我的程序运行良好,但输出文件包含映射器的输出而不是缩减器的输出。这是我的代码:importjava.io.IOException;importjava.util.StringTokenizer;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.IntWritable;i

hadoop - 在 mapper 的单个输出上运行多个 reducer

我正在使用mapreduce实现左连接功能。左侧有大约6亿条记录,右侧有大约2300万条记录。在映射器中,我使用左连接条件中使用的列制作键,并将键值输出从映射器传递到缩减器。我遇到了性能问题,因为两个表中的值数量都很高(例如分别为456789和78960)的映射器键很少。即使其他reducer完成了它们的工作,这些reducer仍会继续运行更长时间。有没有什么方法可以让多个reducer并行处理mapper的相同键值输出以提高性能?这是我要优化的Hive查询。selectdistincta.sequence,a.fr_nbr,b.to_nbr,a.fr_radius,a.fr_zip,

java - 如何设置一个 reducer 来发送 <Text, IntWritable> 和一个 mapper 来接收 <Text, IntWritable>?

我正在使用ma​​preduce在hadoop上开发一些代码,它使用了两个映射器和两个缩减器。我被告知要使用SequenceFileInputFormat和SequenceFileOutputFormat使第一个reducer的输出和第二个mapper的输入一起工作。问题是我正在记录一个错误,在googleing很多之后我不知道为什么。错误:java.lang.Exception:java.io.IOException:Typemismatchinkeyfrommap:expectedorg.apache.hadoop.io.IntWritable,receivedorg.apache

hadoop - 如何在Hadoop中设置NameNodes、DataNodes、Mappers和Reducers的数量

我想知道如何设置数量NameNode数据节点映射器reducer在Hadoop的代码/配置中。 最佳答案 Namenode和DataNode数量由您的业务需求决定。您无需通过编程来设置它们。如果您需要可伸缩性,则必须了解HDFS联邦的概念。请参阅此文档page有关联邦的更多详细信息。Inordertoscalethenameservicehorizontally,federationusesmultipleindependentNamenodes/namespaces.TheNamenodesarefederated;theName

hadoop - RecordReader如何向Hadoop中的mapper发送数据

我是Hadoop新手,目前正在学习DonaldMiner和AdamShookMapReduce设计模式一书中的mapreduce设计模式。所以在这本书中有笛卡尔积模式。我的问题是:记录读取器何时向映射器发送数据?将数据发送到映射器的代码在哪里?我看到的是CartesianRecordReader类中的下一个函数读取两个拆分而不发送数据。这是源代码https://github.com/adamjshook/mapreducepatterns/blob/master/MRDP/src/main/java/mrdp/ch5/CartesianProduct.java就这些了,先谢谢了:)

java - Mockito 无法模拟 Hadoop Mapper 上下文

所以我正在尝试使用Mockito为我的Hadoop映射函数创建一个单元测试。我已经正确地创建了Mapper类:classXmlMapperextendsMapper[LongWritable,Text,Text,LongWritable]{overridedefmap(key:LongWritable,value:Text,context:Mapper[LongWritable,Text,Text,LongWritable]#Context):Unit={//doesstuff}}然后我有以下测试:importorg.apache.hadoop.io.{LongWritable,Tex