草庐IT

mapper-locations

全部标签

java - 在 Mapper 中检索当前行的文件名

我使用的是Hadoop2.6.4版。我正在编写一个MapReduce作业,它将采用3个参数,即-Keyword,输入文件和输出文件的路径。我理想的输出应该是所有包含关键字的文件的名称。简单的逻辑是遍历文本中的每一行并将其与我们的关键字匹配。如果它返回true打印文件名。经过广泛的谷歌搜索后,我找到了3个获取文件名的选项Context.getConfiguration().get("map.input.file")Context.getConfiguration().get("mapreduce.map.input.file")这两种方法都返回了一个值为“null”的字符串,即它们在我的

hadoop - Mapper 和 Reducer 如何协同工作 "without"排序?

我知道mapreduce是如何工作的以及我有哪些步骤:绘图随机排序减少当然,我有分区、组合器,但现在这些并不重要。有趣的是,当我运行mapreduce作业时,看起来mappers和reducers并行工作:所以我不明白这怎么可能。问题1.如果我有多个节点在做映射操作,reducer如何开始工作?因为Reducer不能在没有排序的情况下开始工作吗?(输入必须为Reducer排序-如果mapper仍在工作,则输入无法排序)。问题2.如果我有多个reducer,最后的数据如何合并在一起?换句话说,最终结果应该排序对吧?这意味着我们要花费额外的O(n*Logn)时间来合并“多个reducer结

hadoop - Mapper 类如何将 SequenceFile 识别为 hadoop 中的输入文件?

在我的一个MapReduce任务中,我将BytesWritable重写为KeyBytesWritable,并将ByteWritable重写为ValueBytesWritable。然后我使用SequenceFileOutputFormat输出结果。我的问题是当我开始下一个MapReduce任务时,我想使用这个SequenceFile作为输入文件。那么如何设置作业类,Mapper类如何识别我之前覆盖的SequenceFile中的键和值?我知道我可以使用SequenceFile.Reader来读取键和值。Configurationconfig=newConfiguration();Pathp

java - Hadoop:如何为每个值提供一个全局唯一 ID 号作为 Mapper 中的键?

这是我想做的。现在我有一些这样的文本文件:xxx.example.comxxxabcdefyyy.example.comyyyabcdef...我想读取映射器中的文件拆分并将它们转换为键值对,其中每个值都是一个中的内容>标签。我的问题是关于key的。我可以使用url作为键,因为它们是全局唯一的。但是,由于我的工作背景,我想为每个键值对生成一个全局唯一编号作为键。我知道这在某种程度上违背了Hadoop的水平可扩展性。但是有什么解决办法吗? 最佳答案 如果您要通过MapReduce处理此类文件,我会采取以下策略:逐行使用通用文本输入格式

hadoop - 如何阅读 Pig "detailed locations"日志行?

执行Pig脚本时,会发出其中一些日志:2014-10-2916:07:03,658[MainThread]INFOorg.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher-detailedlocations:M:TRACKED[155,10],null[-1,-1],null[-1,-1],TRACKED_USERS[156,16],null[-1,-1],HAS_CONV[163,11],HAS_CONV[164,11],null[-1,-1],REACHED[159,10],REAC

java - Hadoop 中 Mapper.Context 的 API 文档在哪里?

我很高兴能加快Hadoop的速度,其中包括检查thttps://hadoop.apache.org/docs/current/api/类Mapper的文档广泛引用了类Mapper.Context(org.apache.hadoop.mapreduce.Mapper.Context)。但是,除了旧版本的API之外,我看不到该Mapper.Context类/接口(interface)/无论它是什么的API文档。在当前的API中,我可以在哪里找到特别针对Mapper.Context的文档?我看到它在不同的地方使用(context.write方法,最常见),但我找不到这些方法的当前文档,尽管我

map - 配置Hadoop集群时应该设置多少个mapper/reducer?

配置Hadoop集群时,为集群设置映射器/缩减器数量的科学方法是什么? 最佳答案 没有公式。这取决于你有多少核心和多少内存。mapper的个数+reducer的个数一般不要超过core的个数。请记住,该机器还运行着TaskTracker和DataNode守护进程。一般建议之一是映射器多于缩减器。如果我是你,我会使用合理数量的数据运行我的一项典型工作来尝试一下。 关于map-配置Hadoop集群时应该设置多少个mapper/reducer?,我们在StackOverflow上找到一个类似的

hadoop - 使用零 Reducers 时,我能否从 Hadoop 获得单独排序的 Mapper 输出?

我在Hadoop0.20中有一份工作需要一次处理一个大文件。(这是一个预处理步骤,可将面向文件的数据转换为更适合MapReduce的更清晰、基于行的格式。)我不介意我有多少个输出文件,但每个Map的输出最多只能在一个输出文件中,并且每个输出文件都必须排序。如果我使用numReducers=0运行,它运行得很快,并且每个Mapper写出自己的输出文件,这很好-但文件没有排序。如果我添加一个reducer(普通Reducer.class),这会向单个文件添加一个不必要的全局排序步骤,这会花费很多小时(比Map任务花费的时间长得多)。如果我添加多个reducer,各个map作业的结果会混合在

java - 如何使用MRUnit Test做Mapper测试?

我是Hadoop新手。我想使用MRUnitTest单独测试我的映射器部分。我已经尝试了很多。但我不知道如何解决以下错误-“MapDriver类型中的方法setMapper(Mapper)不适用于参数(Recommand.IdIndexMapper)”。我正在使用Hadoop-1.2.1、EclipseJuno、mrunit-1.0.0-hadoop1.jar、junit-4.11、mockito-all-1.9.5.jar。下面是我的代码,我的映射器类:类名:推荐,publicstaticclassIdIndexMapperextendsMapReduceBaseimplementsM

hadoop - pig : Force one mapper per input line/row

我有一个PigStreaming作业,其中映射器的数量应等于输入文件中的行数。我知道那个设定setmapred.min.split.size16setmapred.max.split.size16setpig.noSplitCombinationtrue将确保每个block为16个字节。但是我如何确保每个map作业都只有一行作为输入?这些行的长度是可变的,因此对mapred.min.split.size和mapred.max.split.size使用常量不是最佳解决方案。这是我打算使用的代码:input=load'hdfs://cluster/tmp/input';DEFINECMD`